On this episode, I meet up with Rong Lu and Catherine Kampf from Microsoft while I was at Build this year.
We cover a bunch of topics around data science and talk about two opposing styles of data science development and related tooling,
using notebooks in Jupyter or Python code files and editors like Visual Studio Code and PyCharm.
The conversation was a lot of fun and I'm looking forward to sharing it with you.
This is Talk Python to Me, episode 217, recorded May 8th, 2019.
Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.
This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy.
Keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via at Talk Python.
This episode is sponsored by Linode and Backlog.
Please check out what they're offering during their segments. It really helps support the show.
Rong, Catherine, welcome to Talk Python.
Yeah, thank you. Thanks so much for having us.
Yeah, it's great to be here with you and literally here with you at Microsoft Build at the conference doing some live recording.
So, quite cool. How's the conference going?
It's been great. I'm a little sad because it's so sunny out, but the stuff inside is great too.
Yeah, really exciting news happening here and you see a lot of people getting excited.
Yeah, is this an event that you've been planning for for a long time?
Yeah, every year.
We have the back-to-back PyCon to build.
It's been a lot of conferencing, a lot of fun announcements, a lot to keep up with, but also met a lot of great people.
You were also at PyCon, right?
Yes.
Yeah, that's pretty awesome. What did you think of PyCon?
It's great. It was my first PyCon.
So, pretty cool out there and then see the community and meet people.
So, it was my first sort of community-run conference.
I've only been to Microsoft ones in the past, so it was very cool to see that and have more interaction with Python users and Notebooks users.
Yeah, that's cool. I think both the conferences are pretty special and really nice and I enjoy going to both of them, but they're really different.
Yeah, definitely.
For people who haven't gone to Microsoft Build, the experience walking around here is like all this cool stuff and there's like robotics and other kinds of neat things going on, but it's mostly put on by the different Microsoft teams, right?
Like there's a section of like the Visual Studio for Mac people and you can go talk to the people that work on it and that's great.
And you go to PyCon and it just doesn't have like that centralized structure, right?
It's just like a thousand flowers blooming and just, you know, whatever's happening is happening out there.
So, it's a little more chaotic, but, you know, a little more independent as well.
I don't know. I think they're both fun and they're both a cool experience.
There's some nice surprises as well at PyCon.
Like as I walk through the booth area, like at Build, you kind of expected all these Microsoft Teams there, but at PyCon, you see different companies showing up there because they use Python for development.
Yeah.
And like really unexpected companies there, but it's fun.
It's interesting.
Yeah, it's super interesting.
Very different.
Yeah, you know, one of the parts I really like is the first two and a half days, like the opening night and then the first two days are the Expo Hall days.
You know, we've got a booth.
You all had a booth.
Were you at the booth?
Yeah, I was.
Many hours at the booth.
Yes.
The booth is a blessing and a curse.
I was at a booth as well.
I have been for the last couple of years and it's great.
You meet so many people, but also like you don't get to experience as much of the rest of the stuff going on.
But then the next day they take that down.
It's the poster section and then the job fair.
Right.
And the job fair, I think it's pretty revealing because you can walk along and see like all these companies are hiring Python developers, data scientists, web developers, whatever.
And it's super clear and obvious kind of like what they're up to.
So you can kind of really put your finger on the pulse of the community by just walking through the job fair.
Yeah, it was super crowded.
Yeah.
So the community is super engaging and super fun.
Yeah.
Yeah, absolutely.
I think that's for sure.
Both of these events were super cool.
And I was glad we were all at them.
That's great.
So let's start with your story.
And I guess, Ron, we'll start with you.
How did you get into programming in Python?
Actually, about 10 years ago when I was in college, I actually majored in data mining.
And then back then I learned C.
Okay.
But after I graduated, I joined Microsoft.
I mostly worked on C# related developer tools and then moved to C++.
And just recently, I just moved from C++ team into the Python team.
It's like, oh, these people are talking about Python.
I got to see what's going on there.
And then, of course, my own knowledge from 10 years ago about data mining no longer applies.
Like so many new things happening in the AI, data science world.
And this is super exciting.
Sure.
And that's why I got into the Python team.
It was like, hey, maybe I can use some of my own knowledge here.
But a lot of learning for me, actually, given how things have moved.
Yeah, I'm sure.
I mean, it's changing so fast.
What was your impression of coming into Python from like these more statically typed compiled type languages and all that?
Definitely feel like the level of experience required to get started is very different coming from a C++ world.
And how I see like all these users we have and even younger kids, they start to learn about programming.
Python is the first language they learn and up to like people are just using Python for various different projects for real life.
And that's super cool.
And that's a lot of applications in real life that could change people in their daily life using the power Python.
Like earrings, predicting different things.
Yeah.
Did the white space drive you crazy at first?
A little.
And now?
Now, getting better.
Good.
But yeah.
Cool.
Catherine, how about you?
I kind of had a similar experience.
I started programming, just randomly took a course in my high school and then ended up majoring in computer science.
And that was all in C++.
And I remember one of my years I ended up in an AI course.
And the course was mainly around Python.
And I remember I like hated Python at first.
I was like, this feels too easy.
What's going on here?
Someone's tricking me.
I don't know what's going on.
This is no.
I want my C++.
And then over the course of the semester, I just fell in love with Python.
And then when I started at Microsoft, I was exposed more to the big data landscape.
So using things like PySpark and getting exposure to notebooks there.
And then, yeah, I've just, Python has very much grown on me.
My friends from school always laugh because they're like, remember when you hated it and now you're on the Python team?
Life takes weird turns.
Yeah.
For sure.
It's like, no, I want to use a real language.
Right.
Compiling and linking and headers.
Come on.
Space doesn't matter.
So my cool.
That's right.
I'll write it all in one line.
Yeah.
That's pretty cool.
I love it.
So, Ron, you both work at Microsoft, but you don't work on the same projects or the same team, right?
We are on the same team.
Same team.
Different projects.
Okay.
So, Ron, let's start with you.
What do you do day to day?
Yeah.
So, I am a program manager on the Python team at Microsoft.
Primarily, I'm focusing on building developer experience around data science and machine learning inside Visual Studio Code.
Visual Studio Code is our lightweight cross-platform editor.
And it's been pretty good for Python general development already.
But now we're adding a lot of new things around how to make it easier for people who do data exploration, analysis, and machine learning.
How do we bring all those power of Jupyte Notebooks into an editor so you can use it for everything you do?
So, there are people who prefer an editor versus notebooks.
That has been an ongoing debate in the community.
And that's definitely there are personal preference.
But we also see a place where VS Code can be the place where you take your notebook file after you're done with your experimentation and you're ready to turn your code into a production code.
And this is where you can kind of bridge the two worlds together.
And VS Code can play a role in that.
So, that's the new area that we're investing in.
That's what I've been working on since I joined this team.
I think it's cool that you're working on that because I feel like there's a bit of a divide.
Not in a negative way, but there's certainly people that will open up a notebook in Jupyter, JupyterLab, something like that, to do exploratory data.
And there's people who write production code that's structured with tests and coverage and all of that stuff.
And going between those, I don't know what people do today, but it feels like, well, you take the notebook and you just copy bits over.
So, we're trying to hopefully minimize the manual copy and paste between the two.
So, when you have a notebook ready to turn into production, we can help you import a notebook into Python code, in VS Code directly, so you don't have to do all the work yourself.
And then, once you're in VS Code, of course, you get all the editing features that you expect.
There's IntelliSense refactoring, debugging, everything in there, so you can live in a developer tool to finish your developer work.
Yeah, that sounds awesome.
And Catherine, how about you?
You're on the other side of the design.
Yeah.
We fight.
She is on the notebook side.
Every day, 8 a.m., wrong, and I face off to see who's going to win that day.
So, I'm a program manager on the Azure Notebooks team, and Azure Notebooks is basically an Azure-hosted, free, no-setup-required Jupyter Notebooks environment.
So, in my day-to-day, I spend a lot of time talking to customers, learning about their experience, whether it be in an editor, like VS Code, or in notebooks, and learning, you know, how we can make that better, and what our next generation of Azure Notebooks should look like to enable every set of scenarios, from educators to enterprise data scientists, and learning about any features or things that they need to be happy on Azure Notebooks.
Yeah, awesome.
That sounds like a really fun project.
It's a blast.
Yeah, I love it.
Yeah, cool.
So, I want to talk a little bit about just kind of notebooks in general and find out where you think they're really useful or, you know, what's sort of coming next in it.
And I just want to give a quick shout-out to an article on The Atlantic, I think, which I've talked about a few times, but it's called The Scientific Paper is Obsolete, and Here's What's Next.
And it's got, like, a lot of a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper.
And I think that's a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper.
And I think that's a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper.
I think that's a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper.
And I think that's a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper, and it's got a lot of people in the paper.
So there's scenarios like that, all the way to, you know, we have a security team at Microsoft who's building their anomaly detector and threat detection, threat hunting, all within notebooks.
So I think it's just super cool to be a part of and see the vast array of use cases for notebooks.
Yeah, it sounds like maybe it's not even really shaken out, right?
Yeah, exactly.
We kind of know what the use case for code looks like, right?
Like regular executable files, you know, websites and whatnot.
But I feel like with notebooks, there's just all these different attempts to make use of them.
Right.
You know, could you treat them as like units that can be combined as like a function or something, or like are they a paper that's better?
Yeah.
Which is right.
Yeah, it's cool to see.
I mean, we get within our community, it's easy to see the applications and data science, but then it's always great to hear outside perspectives, people coming from different languages or different areas of technology and everything,
and thinking about how they can use this as a platform for experimentation or sharing work and collaborating.
So it's very, very inspiring.
Yeah, yeah.
That's pretty awesome.
Yeah.
Wrong?
Absolutely.
I think the interactivity is what Jupyter is most powerful at.
Like the fact that we can turn a static report or paper into something that everybody can go and execute.
That's super cool.
Not only we have seen a lot of people using notebooks for teaching, because that's like where organized documentation plus real code.
Yeah.
It's super easy for a teaching setting.
And also we use that like internally as well as we report numbers and build dashboards.
What if everything is interactive and other people can go and pivot the data independently without having to go into like a pile of code.
So that's really, really, really powerful.
And that's why it's so popular in the data science community.
Absolutely.
A great thing to have.
And I think that adoption is going to just keep going, given how easy it is to get started.
And I think one of the things you mentioned earlier, just reproducibility.
I think that's one of the things notebooks simultaneously does really well and also poorly in terms of like environment sharing.
And that's something we've been thinking a lot about just in our platform.
You know, if I'm sharing a notebook with wrong, how can I make sure that dependencies get so complex?
How can I make sure that everything wrong has everything she will need to run this notebook?
And even with data sets, you know, if you share a report that connected to a database that was once storing, you know, this data from May 2016.
And now it's June 2019.
You know, how do you handle those cases?
Right.
And the report says, you know, such and such and like mark down below, like in a cell below it.
But it's like the data is not the same anymore.
Right.
That's actually, that's an interesting idea.
Right.
The life cycle of it.
Right.
Yeah.
I think that's one thing that Azure notebooks could potentially help because the fact that it runs in the cloud and then we could potentially have pre-config the environment.
So you can make sure your notebooks will always produce the same results.
Yeah.
So right now you can use like environment setup scripts and import your requirements.txt or environment config.
But in the future, we definitely want to make that as seamless as possible.
So I can just share whether it be an Azure notebooks project or a GitHub repository with you that has my requirements.
So it'll just be in a container and everything's good to go.
That's pretty cool.
I mean, even with the requirements, the .txt file, right?
It might say we need these things to run this notebook, but they might not be pinned.
Right.
And so like you run it again a year later, one of those things has become incompatible with like the code that was written or something like that.
Right.
It's a challenge.
And as a data scientist, you probably don't think about like, oh, I better like pin the versions of my dependencies.
You're like, oh, look, it's a graph.
It's working.
Yes.
Don't change it.
Don't touch it.
That's my version.
But of course, later on, if the package has newer versions, then you have to upgrade your notebook to make sure it still runs and stuff like that.
It is kind of a pain to manage.
It's pretty tricky.
So I want to dig in more to Azure Notebooks, but like let's, you said there's like this battle you all do at age.
So I think it's Ron's turn to like say a little bit about like, if not notebooks, if it's going to be more like code editor style of work, but still in the data exploratory way, you talked about this other thing that you're doing.
What's that look like?
Yeah, essentially to summarize what we have done is we brought the power of Jupyter Notebooks into VS Code.
So imagine, so today in Jupyter Notebooks, you can run a piece of code and get your results right away, whether it's a data frame or it's a plot or just text, markdown.
And imagine you can do all that inside VS Code.
In a slightly different view, but you get the same results.
Is it actually the same format, the IPYNB file?
Or is it something different?
So actually, so at the moment, the scenario we support is you work with Python scripts.
So once you have your Jupyter Notebooks ready, you're ready to import, we grab all the code in there and put everything into a Python file.
So you're literally working with a Python file.
Right, just a .py file.
We have converted it into PY.
Yes.
So the idea is, hey, this is really an editing centric experience.
And the fact that you can visualize all those things like plots and data frames and all that, that's like an add-on bonus.
But you are really working with...
Yeah, and do you have like a demarcator for the different cells?
Yes.
Like a double hash or something?
Right.
It's single hash.
Single hash, okay.
No hash percent percent is the magic command.
Okay.
Not command, comment style, special comment you can put in Python file.
And then we can recognize, oh, this is a cell.
And then we do magic things.
Okay.
So we'll visualize, like, kind of visually we'll highlight those cells in the code editor.
So you kind of get a feel of, like, Jupyter notebooks.
But then you can also run single cell using shift enter.
Like, that's the key that people use, shift enter.
Yeah, you can do the same in VS Code.
Okay.
And you get the same results.
We show all the results in a separate window in VS Code that's separate from your code.
That's just how the design.
We decided to go with that design.
But there's no reason we can't show results in line because we have got some requests around that.
Right, right.
So we're trying to bring the two together.
I think there are very different users who want different things depending on their background.
People coming from Jupyter notebooks are more familiar with inline results.
But those who come from software engineering background that I used to work with editors and cofiles,
they're more like, oh, I just wanted something on the side.
So I can see all the history, like all the results.
I can always go back.
So nothing is getting replaced in line.
But they want more of an editor experience.
Right.
That's more of an editor experience.
So I think that we just provide different options for people who come from different backgrounds.
So you can pick if you want a notebook, if you want a notebook style in VS Code, you can do all that.
This portion of Talk Python to me is brought to you by Linode.
Are you looking for hosting that's fast, simple, and incredibly affordable?
Well, look past that bookstore and check out Linode at talkpython.fm/Linode.
That's L-I-N-O-D-E.
Plans start at just $5 a month for a dedicated server with a gig of RAM.
They have 10 data centers across the globe.
So no matter where you are or where your users are, there's a data center for you.
Whether you want to run a Python web app, host a private Git server, or just a file server,
you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network, 24-7 friendly support,
even on holidays, and a seven-day money-back guarantee.
Need a little help with your infrastructure?
They even offer professional services to help you with architecture, migrations, and more.
Do you want a dedicated server for free for the next four months?
Just visit talkpython.fm/Linode.
Well, you'll have to help me out with this one because I haven't done a lot of teamwork on notebooks,
but I hear that merging notebooks can be challenging, especially if someone's rerun a cell and it has a new output.
Oh, yeah.
Right.
Because it's called an API and it's like caught in the weather, but they ran it and the weather's now different.
Yeah.
And so it's like a merge conflict and stuff like that.
This is a problem?
This is a problem, yeah.
The way notebooks are stored in IPYMB is just kind of a JSON file.
So it stores, you know, the output and specific metadata about your file as well.
So you can go and change one line and you'll suddenly, you know, try to merge it and you'll see eight lines or like 80 lines and everything's moved around.
So this is, yeah, one of our big focus in the near future for Azure notebooks is
how do you make sure that source control is as easy as possible for notebooks?
And, you know, we were just talking to a user last week who was like, we tried to use GitHub with notebooks, but then it got too complex.
So we all just had, you know, they were a team of four.
They all created their individual notebooks.
And then in the end, one person was tasked with copying the bits and pieces that were good.
It's your job to make the final notebook.
Yeah, you know, they got the short of the stick.
Yeah.
Uh-huh.
So, you know, we were talking to a bunch of users, as I said, like that to understand not just having GitHub integrated right here,
because that doesn't solve the issue with the formatting of notebooks and that still doesn't make it perfect.
But making sure that we have a complete, super easy end-end experience for that problem in the notebooks world.
It sounds tricky.
And it sounds like the code thing that you guys are doing maybe sidesteps that.
Right.
Yeah.
We tried to solve that by avoiding using notebook files.
That's why we convert everything into a PIE file.
Now you can use source control and everything around it.
It's just plain code.
Right, and the output goes somewhere else.
Yes.
And it's not part of the diff or whatever.
Right, right.
But you can actually export the results as a notebook file if you want to go back.
Like if you want to share the results with someone, send someone a notebook file.
So we joke that wrong and I fight, but we work really closely together because so many scenarios are,
I explore in notebooks.
Now I want to build a .py file and VS Code.
And maybe I make some changes that I actually want to now share that as an updated notebook.
We work very hardly to make that end-to-end complete scenario that's super easy.
Yeah, that's cool.
I guess while we're on the subject, maybe we could talk about like collaboration.
If I'm working on an Azure notebook, I go over there.
Can I share that kind of Google Docs style?
With collaboration?
Not yet.
We're thinking about how we could maybe leverage something like VS Code Live Share,
where you could do live sharing with individual people and watch them edit all within the same document.
But this is something that has come up in a few notebooks products before and then sometimes been rolled back
because it's not super easy with the formatting.
But yeah, so right now in Azure Notebooks, you can share a notebook publicly and you can clone it.
And we can collaborate that way, but not yet with the live co-editing.
Yeah, cool.
That's something you can do in VS Code with the Visual Studio Live Share feature.
Yeah, maybe people don't know about that.
I did talk to Dan Taylor in the previous episode, but maybe people didn't hear so.
Live Share enables real-time co-editing and co-debugging across different machines or across different OS.
So the idea is any number, I guess up to 30 at the moment, any number of developers can collaborate real-time.
And it's not just screen sharing.
It's real session share, being shared.
So anyone can make changes to the same code base and everybody else can see it and you can run the code and debug and everyone else can see that too.
So essentially you can encourage a lot of scenarios around like pill programming or just remote troubleshooting.
And we also see like that being used in classroom settings too.
Like a teacher is hosting a session with 30 students looking at the same thing.
And that's pretty interesting.
That actually generated a lot of interesting scenarios.
Yeah, I bet it did like office hours, but I'll help you by just being on your system basically, right?
Yeah, absolutely.
So we actually extended that functionality beyond the basic support.
So now we have added the Jupyter support on top of Live Share as well.
So now you can imagine you're working on your notebook, you want some help and somebody else can connect to your session, you can run a cell.
And both of your machines are going to see the plots, the data frames and everything the same on the screen.
So that's pretty cool.
Yeah, that seems super cool.
Like one of the problems, of course, especially I think in data science would be the actual data, right?
Like if you have a gigabyte of data and then you're talking to that from your notebook or from these like notebook-like PyFiles, it's one thing to say, well, yeah, you can just grab the notebook or grab the Python file out of GitHub.
But then there's a gig of data, you got to get to them somehow, right?
So being able to like connect in and just sort of run in place would be cool.
Yeah, actually, everything happens on the host machine.
Meaning if the guest machine doesn't have the same setup, same environment setup, that's okay because nothing is required on the guest machine.
You literally just need VS Code installed.
And then all the like building and IntelliSense debugging and all the packages, environment settings, everything is streamed from the host machine.
So you can literally see everything exactly the same.
Yeah, that's really nice.
You know, I have some friends who did a lot of paired programming.
It was always, well, let's set up a virtual machine and like do a shared remote desktop so we can both type or other like weird things.
Yeah, it's a lot of work to get us set up.
I'm really excited about this.
This is cool.
And how about on Azure Notebooks?
Can you like, if I have a gig of data, can I like upload that in there?
Like what's the story with the data backing them?
Yeah, so you can either store things locally in Azure Notebooks within your project.
And so if you cloned it, you'd clone that data with and none of that's going to your local machine.
So you don't have to worry about those things.
It's all Azure hosted.
It happens really quickly.
The cloud is fast.
So yeah, you can also, you know, connect to an Azure Blob store.
So for instance, in the demo Ron and I are doing today, we put a bunch of pet images that we're classifying in a Blob store and we pull them down in Azure Notebooks and then send it out and test it on our web service from there.
Yeah, that's cool.
I guess that would be the most cloud natural cloud native sort of solution is we'll put it in like cloud storage and then talk to it or read it or write it.
Right, right.
Yeah, okay.
Yeah, that's pretty awesome.
So I know that Visual Studio Code is free, right?
Free open source and so on.
Yes, everything we do here.
The Python extension and Jupyter support is part of the Python extension, which is also all free at open source.
So I don't need to install anything else.
It's just like when the Python extension updates itself, then magically.
It's all in there.
It's in there.
Okay, super cool.
What about Notebooks?
Notebooks is free.
Okay.
You can, you know, we let you run for free on our hosted compute.
You can connect to an Azure VM if you want a more beefy machine, GPUs, etc.
You can connect to an Azure VM, in which case those would be paid.
Right, so I would pay for like a fancy VM that has GPUs and then I would talk to it?
Yes, exactly.
How does that work, right?
Like instead of, I wouldn't just go to my VM I set up and just like pip install Jupyter and do stuff there, right?
Like it sounds like it would be different.
Yeah, so we actually use something called a data science virtual machine in Azure.
And with that, Jupyter's already installed there.
So from Azure Notebooks, you just, we have an easy compute picker that'll automatically populate with the list of your data science virtual machines that you have access to.
You just click on it, hit run, and everything just works.
And you're running your notebook on that VM.
Yeah, that's cool.
Are there like scientists and companies and stuff using that a lot to do cool stuff?
Yeah.
We have a bunch of companies as well as education, research.
We see a lot of researchers using it, especially because for the free classroom settings, people use that a lot.
Yeah, that seems pretty cool.
One of the things I saw on the Azure Notebooks that I thought was kind of cool is a lot of different languages supported.
Yes.
Yeah, so what languages are, can I run there?
I mean, there's Python, obviously.
So Python 2 and 3, and then Fsharp and R.
Okay.
So Fsharp is kind of surprising, right?
Fsharp is like a functional .NET programming language, which I haven't really done very much with.
But what I didn't see there was Csharp.
And I figured if you're going to have Fsharp, maybe you would also just throw in Csharp for the fun of it.
Like, that's kind of interesting.
Why not?
It's something we're thinking about.
We haven't, you know, we see so much of our usage is Python.
So from that, we really focus on making that our optimal experience.
And that's where most of our energy goes.
But we definitely do hear requests every now and again for Csharp.
And it's one of those, similar to what I was talking about earlier, where you see so much Python usage with notebooks, but there's so many other scenarios.
And Csharp is a perfect example.
You know, how can you experiment with Csharp on notebooks?
So something we love to do, just haven't done yet.
Yeah, yeah, sure.
No, I mean, I think definitely focusing on Python and Python 3, that's like the sweet spot, right?
Of course.
But just, yeah, the Fsharp being there kind of stood out to me.
So if I'm building these notebooks or even with VS Code, like, what are some of the other things in Azure that people are using and connecting to?
Like, I know there's a bunch of other data science, machine learning stuff going on there.
Oh, yeah.
What are some of the cool scenarios?
So the very basic thing we can start with is definitely just beefy machines, right?
Yeah.
Give me some GPUs.
Right, GPUs, faster machines.
And then, so on top of that, Azure provides what we call data science VMs.
These are, think of those as VMs pre-installed with, like, data packages pre-installed.
So when you go there, everything is already there.
Like, Jupyter Notebooks is installed.
All those packages are already there.
So you can definitely connect to that.
We have Windows.
We have Linux.
Different OSs, depending on what you want.
So that's kind of the fairly common use case of Azure resources.
Of course, you can use storage if you want to store data there.
So you can do all that already.
On top of that, Azure also provides a service that's machine learning specific called Azure Machine Learning Service.
It is a comprehensive set of services that covers the entire workflow in machine learning.
So starting with data.
So Azure Machine Learning Service can help you manage data.
Like, we provide what we call a data store, which is part of the service.
So you don't have to manage your storage separately.
Machine Learning Service knows where to find your data for training, for example.
I see.
It's probably, you don't have to, like, use the blob storage API.
Yeah, and then you figure out how to connect to that thing, right?
Yeah, exactly.
So Azure Machine Learning Service is part of the whole world.
The machine learning service manages the whole world for you.
And then moving on, of course, for training, you need more compute.
Like VMs we talked about.
So Azure Machine Learning Service can help you manage compute as well at scale.
So you can say, I want 50 machines, up to 50 machines, but scale them back down if I'm not using them.
Which is the best part because I'm terrible at controlling my costs.
Right.
Scale down to zero.
Yeah, scale down to zero.
But you can scale up to as many as you want pretty fast.
Yeah, that's cool.
And that's good that if you forget.
Right.
Yeah.
Which I always do.
Yeah, you won't spend all your money.
Right, right.
Especially when they're like, you know, you have like a 16-node GPU cluster.
Right.
Keep them running for days.
That'll be...
Yeah, it's a big bill.
Yeah.
So it also helps you manage your training jobs.
So you have different training runs and you have different results you want to keep around.
So Azure Machine Learning Service can help you manage all that.
So for example, you have one experiment that has like 100 repeated runs.
Each run has different results.
And at the end of a run, you generate a different model file.
So that's all being stored as part of a service.
So you can always go back, look at a model and go back and say, oh, this is the run I did that got to this model.
So you can always trace back.
So that's all managed.
And then of course, once you have the model at the end of training, you can download it to local and do whatever you want with it.
Right.
But also you could have the Machine Learning Service manage it for you.
Imagine if you have multiple models and you have multiple versions that becomes a nightmare to manage.
So you can have Machine Learning Service to manage all that in a central location.
Not only that, but also once you have that registered with the service, it's super simple to turn the model into a runnable service.
Like literally, we can do that in five minutes.
That's cool.
Turn that into a service that's running in a single container that Azure can spin up for you fairly quickly.
Really, five minutes, everything's done.
Then you can start using this model already.
So you talked about this pet image.
Yes.
So what are you trying to find from these pet images?
Yeah.
So the end result is basically you can send our web service an image of a pet, cat or dog, not like an obscure pet.
Not a lizard.
Yeah.
And our model will send back probabilities of different breeds.
So if you send a golden retriever, I had my roommate wanted to test it with her golden retriever from home.
So send that.
And it got 99.7% confident that it was a golden retriever.
That's awesome.
Yeah.
So you could do that like with this thing she's talking about, right?
Yeah.
You turn it up and you say turn it into a service.
Yeah.
And then it's like a HTTP post an image to it or something.
And then it says, here's a JSON result.
Yeah.
Exactly.
So we're going to talk about all that in our build talk.
Yes.
Oh, yeah.
Which is now available online at the time of this podcast.
Yeah.
We can put a link to it in the show notes actually thanks to the power of time travel and recording
and all that.
This portion of Talk Python to Me is sponsored by Backlog from NewLab.
Developers know the importance of organization and efficiency when it comes to collaborating on a team.
And Backlog is the perfect collaborative task management software for your team.
With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations right next to your code.
You track progress with features like Gantt and Burndown charts.
You document your processes right alongside your wikis.
You can integrate with the tools you use every day like Slack, Jira, and Google Sheets.
You can automatically register issues from email or web form submissions.
Take your work on the go using their top rated mobile apps available on Android and iOS.
Try Backlog for your team for free for 30 days using our special URL at talkpython.fm/backlog.
That's talkpython.fm/backlog.
You know, one thing that I saw when I was going through your website that I thought was super cool was this LIGO project.
So, you know, Python has been at the center of a bunch of super cool science stuff, right?
Like, Kyle Cranmer and his team did a bunch of stuff with Python around the Higgs boson discovery.
There was Dr. Katie Bowen and the black hole picture.
And then the LIGO experiment, which is detecting, like, you know, I still just don't have my mind around, like, general relativity.
But, like, the space-time, you know, with, like, the curvature of gravity and all that.
And so, the idea is if, like, there's enough of a disturbance in it, it should have a wave, right?
And, you know, Einstein predicted that.
But just recently, the LIGO project detected black holes colliding and actually captured that.
And, you know, that was Azure Notebooks, apparently.
Yeah, they do use Azure Notebooks.
I'm not sure if it was used for the specific black hole collision.
Yeah, yeah, yeah.
They do use it, yeah.
I think it's just so cool that Python and Notebooks, in particular, seem to be showing up around all this, like, super cool science.
I guess, let me ask both of you, you know, when you talk to people who are coming into the Python world and into the notebook type of space, what are they coming from?
Is that, like, MATLAB or other tools?
You know, like, where are they coming from?
I see a lot of users coming from R and RStudio.
That's kind of the world.
But they see, like, some of they still, I've seen users who use a mix of those two languages.
They still feel like R has done something really well and they already have things set up there.
But they also see, like, all these Python packages that make things easy.
So they wanted to use that as well.
So I definitely see a lot of that.
Yeah, I think what's cool about Python is you do kind of land on it from a lot of different paths.
So I had a user I was talking to last week who was saying, you know, I feel like they're business analysts and they've been using Excel for so many years.
And they were like, I feel like Python has become the next thing once you've learned Excel.
And now, you know, you want to do more advanced things or go from Excel into Python.
But then you'll talk, I was talking to a researcher a couple of weeks ago who also teaches a course.
And he was saying their course was in MATLAB two years ago.
Then they moved to R for a year.
And now they're standardizing across their department on Python.
Because it is so, they're like, people would start in MATLAB.
Then they need R for a different course.
And it was just too much.
But they felt like Python would cover all their courses, use cases and make their students happy.
Yeah, that's pretty interesting.
I'm sure they have a little bit of whiplash going on.
Yeah, I know.
But Python's interesting because it's not just useful for this like focused data analysis.
Right.
Like if I go and learn MATLAB and I say I'm getting a degree in math or biology or whatever,
and then I leave and I'm not still doing research in biology, my MATLAB skills are probably not helpful.
For the most part, right?
It's not like, well, I'm going to go and like get recruited to work as a MATLAB person.
Maybe, but not nearly to the extent that Python skills will like open up the door to parallel careers.
And so I think whenever I think of students or academic programs, I think, you know,
it's really good that they're doing something like Python, even if it weren't Python,
something that is like a general skill independent of like the research or the PhD or whatever, right?
And I know they've standardized like high school, the AP curriculum in the US has standardized on Python
for being the introductory language, which I thought was really cool because when I took it, it was Java.
And I kind of never used Java.
Right.
Yeah.
Python is definitely what used in so many different areas.
Like for one, being able to build web apps, that's huge.
And in the data science area and beyond those two, we also see a lot of just general purpose scripting using Python.
Yeah.
And on top of whatever else they're using, right?
Yeah.
And the IoT stuff as well, right?
Like it's, you got CircuitPython and MicroPython.
Oh, yeah.
That's super cool.
So I think that's pretty cool.
Now, one thing I did want to ask you about, because I think this is super positive, but I don't really know why it's so different in data science.
I feel like in data science, the core projects, NumPy, Jupyter, and whatnot, are well-funded, at least compared to, say, Flask for web development or, you know, SQLAlchemy.
Like you go and you look at NumPy, and it's got like, I don't remember exactly, like Sloan Foundation funding and DARPA funding maybe.
But there's like these large groups funding these data science projects.
Why do you think data science, open source, gets so much support like this, whereas a lot of the rest of Python kind of doesn't?
I mean, it's not like Instagram isn't worth, you know, billions of dollars and based on Python as well.
Or, you know, there's a hundred examples like that.
Do you have thought?
Since I'm relatively new to the area, to the space, I'm not super familiar with those particular projects and how they got funded.
But I feel like, just make a feel, like the popularity in the space, like interest in the space, just AI and data science in general got a lot of attention, for sure, from all sorts of people.
And it's not just like, hey, we build this for fun, right?
But also, we want to take AI, we want to build that into our businesses.
And that's something serious, that it better make good predictions, right?
If this is going to impact my business or people's real life, like making predictions for patients and that serious stuff.
So we need to get it right.
It better work great.
All those packages we rely on, right?
They're fundamental to the prediction and data analysis.
And that might be why it's easier to get attention and funded because the value to the business, like we see in real life.
I have a guess for myself as well, but I want to hear your thoughts.
Yeah.
I was thinking something similar just in terms of the enterprise use cases.
And of course, there's all the power of buzzword and data science.
Is it based on AI?
We're going to pay for that.
Yeah, I love that.
Yes.
AI infuse everything.
So I think that likely definitely helps.
And then like you were referencing a few of those projects where, you know, science and research, which might be more ingrained in grant worlds versus something like Instagram.
Exactly.
Like there's already like a grant infrastructure, right?
Right.
Like it's super normal to go, I'm going to apply for a $3 million grant for this project.
Right.
And it's, I guess, because it lives in that world so much, maybe that's a little bit why.
Yeah.
I don't know.
It's interesting.
Yeah.
The other reason I was thinking is the data scientists usually report to like executives.
That helps too.
Leverage those one-on-ones.
Yeah.
Exactly.
You know, yeah, we need a little bit of support here.
Yeah.
So let's see.
I got a few other things I want to ask you about before we run out of time here.
So, you know, not too long ago, GitHub was acquired by Microsoft.
Like what changes have you seen internally or like in the Azure data science side of things as a result?
Actually, long before the acquisition, Microsoft internal teams have already started to adopt Git for source control, like in our internal teams.
That has happened even before this.
So I would say after the acquisition, there's definitely more use of Git, GitHub.
And also we see more integrations that we are building with GitHub being a front door to developers.
And so more integration into like Visual Studio Code, better experience there.
And we also build new features on GitHub as a result of GitHub being part of Microsoft.
Yeah, that's cool.
And you guys did do the virtual file system stuff contribution back to GitHub so that you could actually put Windows in there.
Because apparently it was broken.
Catherine, how about you?
Yeah, it's been super exciting.
I mean, like Ron was saying, I mean, Git is so ubiquitous that we were using it a lot beforehand.
But now the acquisition has just opened the door to so many opportunities in terms of product integrations.
And it kind of has reshifted a lot of our thinking across our different products, particularly in developer division where Ron and I work.
What should we build into our product first?
What would be a good integration where we could leverage GitHub for this?
It's opened up a bunch of new scenarios and hopefully customers will continue to see the value from it.
Yeah, that's cool.
Everybody at Microsoft uses Git now.
Yeah.
Even as PMs, we write documentation.
And then we're checking there, have to use Git.
Microsoft Docs are all on Git now, which is fun.
Yeah, all our documentations run on Git.
So that's one single system that we use.
Yeah, that's super cool.
So with Azure Notebooks, what's the version control story?
I know what it is for the Python.
PY files.
Just check them into GitHub or wherever.
Yeah, so for Azure Notebooks right now,
you can launch a terminal within Azure Notebooks that'll connect you to the container you're running your project in.
And then from there, you can use the Git command line as you're used to.
And we also have two views in Azure Notebooks.
There's the vanilla classic Jupyter UI.
And then you can also use the JupyterLab UI and install any Git extensions you want to in either of those ecosystems.
That's cool.
Yeah, I hadn't really thought about that.
I guess it is baked into JupyterLab probably, right?
Yeah.
Cool.
So one thing that I did think was pretty neat is on the Azure Notebook page, you have a bunch of featured projects that are kind of cool.
So maybe I could talk a little bit about something.
So there's one that talks about getting started with Azure machine learning.
That's pretty cool.
But then the second one was the Python Data Science Handbook by Jake Vanderplass.
Yes.
That's cool.
Yeah.
Maybe you want to talk about those a little bit?
Like just how people can find them as well?
Yeah.
We feature a few projects that are six or so that we kind of rotate in or out depending on new releases or anything like that.
Jake's book is usually always there because people love that.
And we love it.
It's kind of our, it's such a big book of notebooks.
Yeah.
Listeners aren't familiar with it.
It's like a whole O'Reilly book written all in Jupyter Notebook.
So it's a massive GitHub repository.
So we'll use it for like stress testing our systems and stuff because it's so big.
It's kind of become our de facto standard.
But we also have things like I think University of Cambridge Introduction to Python course is featured there, which is super cool.
And it's really great for all of our education scenarios that use Azure notebooks to see that.
And then it also feeds a lot of online course inspiration as well.
So we'll see a lot of people coming from different EDU, Coursera courses.
So we try to feature that content as well.
That's cool.
You see people creating like online courses and books and stuff like that.
Yeah.
And something like any cloud hosted notebooks makes such a great case for online courses.
So you don't have to spend 10 minutes telling people how to install things.
And then you're not there in person to help them with any installation.
So being able to use something like Azure notebooks where everything's just ready and you can clone this repo and you're good to go.
It's definitely has been super helpful.
Yeah, that's cool.
Definitely when I've done training and stuff, it's like a lot of it is let's make sure everyone can run Python.
Like just type Python 3 dash capital V.
Tell me what you get.
Are you okay?
Is it a number?
Is it 3, 4?
That's a very important first step.
Right.
Yeah.
So we try to limit the time spent there and maximize time spent on code.
Yeah.
That's cool.
Yeah.
Did you hear about the announcement of Python shipping with the next version of Windows?
The next major release in Windows?
This was Steve Dower talked about this at PyCon.
And basically, you know, Steve got Python 3.7 in the Windows store.
Yes.
And that was cool.
So if you need to go install it, that would set it up.
Yeah.
So apparently now Python is going to come as a little shim in Windows.
So if you type Python.
Right.
Yeah.
It'll pop up that store thing and say click here to install it and then type it again.
Yes.
I know Steve worked on that hard.
Finally made it happen.
Yeah.
That's awesome.
I really think that's going to be a huge, huge deal.
I mean.
Yeah.
So many people get lost in that first initial hurdle.
So hopefully it'll help.
Yeah.
I mean, it still doesn't solve all the, you know, pip install this.
Right.
First step.
Yeah.
We're getting closer.
It's at least there's one less bit of friction there.
Yeah.
Definitely.
Yeah.
So let's see.
I guess, you know, maybe you could each chime in about what was your favorite thing that
you saw or coolest thing here at the conference?
I'm super excited about the new terminal that ships in Windows.
Yeah.
That sounds pretty cool.
Yeah.
I haven't used it myself, but it looks pretty cool.
And then I already heard of like comments about, hey, I want to switch to Windows now for development
because now I can do everything on one machine.
Like it's pretty cool.
I'm looking forward to start using it.
Yeah.
That thing has not changed in a really long time.
Yeah.
I know.
And I'm glad they focused on that.
Yeah.
Because command line is the center of developer workflow.
And we definitely think that's important too.
Yeah.
I feel that's actually an interesting point.
I wonder how much of like people sort of doing a lot of open source other like Microsoft
outreach to other platforms outside of Windows, bringing people that kind of live in that space,
which is often more command line terminal driven back end, like sort of going like,
all right, why is it such a bad experience here on Windows?
Yeah.
On the command prompt and like sort of get, I wonder like there's probably some cycle there.
Oh yeah, absolutely.
They have definitely went through like multiple iterations.
Yeah.
But because it used to work very differently than the other platforms.
Yeah.
But now it is important that we get that right and make that better.
So make Windows a great development environment again.
Very cool.
Yeah.
That's a good one.
How about you?
Yeah.
So I thought the terminal and the WSL, Windows subsystem for Linux announcements were all really
great.
I also really like, we talked a bit about Azure machine learning and originally that had their
own APIs, which they'll still maintain, but they're also introducing compatibility with MLflow,
which is a Databricks project from the Spark community around managing ML life cycles.
And I thought that was another cool combination where we're enabling the open source community
on Azure platforms.
So I was excited about that as well.
All right.
Big things that are like work with that API.
Yeah.
So you can use the MLflow APIs and it'll work perfectly with your Azure machine learning workspace
and track the model life cycle.
Very nice.
Yeah.
That's really, really cool.
All right.
Well, one more question and then I'll ask you the two sort of closing questions, of course.
So the final question is, I feel like over the last five, six years, Python has been super, super
popular.
Have you seen the Stack Overflow article?
Yeah.
The incredible growth of Python?
Yeah.
It's in one of our slide deck versions.
So there it has this huge, huge growth and it's really positive.
It's so fun to be part of that community.
Oh, yeah.
Absolutely.
Super exciting.
It's super cool.
I feel like a lot of those, the new folks to that graph, they're not everyone, but a lot
of them are coming from the data science side of things.
What do you think about this?
Yeah, absolutely.
I've seen an article actually on Stack Overflow last year, analyzing why Python is growing
so fast.
I think one of the conclusions that author made was because of AI and machine learning becoming
more and more popular in just like any businesses.
Because it used to be a very tech-driven thing that's only high-tech companies are doing that.
But now we want to infuse AI everywhere in all different businesses.
And then we see that start to come up.
A lot of developers want to do something with AI.
And then Python being a natural choice for doing that job.
That's why we've seen a lot of Python growth coming definitely from that space.
And actually, one of the data points he pointed to was the fact how fast Pandas as a data package
has grown in the past few years.
as one indication that how much data science work, the workload has been growing in the
Python world.
So it's super exciting.
So like Python is now the number four on the most popular language list.
Went from like, was it six or seven last year?
Yeah, it's definitely growing.
And now it's number four.
Yeah, we're definitely kind of working on the most very hot area where there's Python and
AI and the intersection in between.
Oh yeah, you put those two together.
Thanks for keeping us employed.
Yes.
But yeah, I was like wrong with saying, I also think it's cool because I think you can see
the power of Python really quickly in a data science scenario, especially with the community
around it and all of the different packages you can use.
I think that really shines in data science and ML cases.
I mean, even just with like visualization libraries, there's so many and there's so many that do
such like cool, powerful things that I feel like when people are first getting exposed to
Python through data science, it really shines and shows the power of it.
Yeah, it's true because you can really quickly generate a graph or a model or something like
that.
Yeah, like a 3D plot.
It's awesome.
Yeah.
As opposed to like, let's build a little game, right?
Like it still takes a while to build tic-tac-toe.
Right, right, right.
And then it just looks like a terminal thing.
You're like, well, it's not so impressive.
Exactly, yeah.
Yeah, that's a pretty good point.
All right, cool.
Well, it's been a super interesting compare and contrast, the .py versus the Notebooks way
of working.
But thanks for both of you for sharing the stories.
Let me ask you a quick question before we get out of here.
Although I'm especially wrong, I'm sure I'm going to be able to guess your answer here.
So are you going to write some Python code?
What editor do you use?
We just do the code.
You guess right.
Right on.
I said, if I'm writing some Python code, usually Notebooks, but I used to be a Vimmer,
and now I use a Vim extension for VS Code when I'm in an editor environment.
That's cool.
You kind of brought them together.
Yeah, I brought them together.
It's just been great.
Yeah, it's nice.
I need my key mapping.
Yeah, it's all in there.
So when I can get that with the power of VS Code, I'm happy.
Then you're happy.
Awesome.
And then, you know, there's so many packages out there that people might know about.
So have you come across one that's like, oh, wow, this is really cool.
People should check it out.
Notable PyPI package?
I haven't like deeply doing this myself, but I looked at like Plotly, which does 3D plots.
It's one of the first things I tried when I first joined the team.
And we actually can render that inside VS Code too.
And you can interact with that plot.
And I thought that was super cool.
Oh, yeah.
That's pretty cool.
Yeah.
Plotly is great for graphics.
Yeah, I'm a sucker for a good visualization library too.
So yeah, I like Boca.
I like Plotly.
Yeah, I think those are probably my favorites.
I'm trying to think if there's any.
Yeah, those are really cool.
I'll throw one out that's notebook related that's not graphical is Paper Mill.
Have you tried Paper Mill?
Oh, yeah.
Yes, Paper Mill is very cool.
Yeah, kind of turn your notebook into almost like a function you can call or something like that.
Yeah.
It's pretty wild.
All right.
Well, thank you both for being on the show.
It's been a lot of fun to talk about it.
I'm happy to see the work you all are doing in VS Code around sort of editorifying notebooks.
And also, yeah, good work on the cloud stuff.
Yeah.
Thank you.
Awesome.
Super fun.
Thanks for having us.
Yeah.
Thanks for being here.
Bye.
This has been another episode of Talk Python to Me.
Our guests on this episode have been Rong Lu and Catherine Kampf.
And it's been brought to you by Linode and Backlog.
Linode is your go-to hosting for whatever you're building with Python.
Get four months free at talkpython.fm/Linode.
That's L-I-N-O-D-E.
With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations
right next to your code.
Try Backlog for your team for free for 30 days using the special URL talkpython.fm/backlog.
Want to level up your Python?
If you're just getting started, try my Python Jumpstart by Building 10 Apps course.
Or if you're looking for something more advanced, check out our new async course that digs into
all the different types of async programming you can do in Python.
And of course, if you're interested in more than one of these, be sure to check out our
Everything Bundle.
It's like a subscription that never expires.
Be sure to subscribe to the show.
Open your favorite podcatcher and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes, the Google Play feed at /play,
and the direct RSS feed at /rss on talkpython.fm.
This is your host, Michael Kennedy.
Thanks so much for listening.
I really appreciate it.
Now get out there and write some Python code.
I really appreciate it.
Thank you.