Machine learning and data science are full of best practices and important workflows.
Can we extrapolate these to our broader lives?
Eugene Yann and I give it a shot on this slightly more philosophical episode of Talk Python to Me.
This is episode 309, recorded March 19th, 2021.
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.
And keep up with the show and listen to past episodes at talkpython.fm.
And follow the show on Twitter via at talkpython.
This episode is brought to you by Retool and Linode.
Please check out what they're offering during their segments.
It really helps support the show.
We'll be giving away five tickets to attend PyCon US 2021.
This conference is one of the primary sources of funding for the PSF.
And it's going to be held May 14th to 15th online.
And because it's online this year, it's open to anyone around the world.
So we decided to run a contest to help people, especially those who have never been part of PyCon before, attend it this year.
Just visit talkpython.fm/PyCon 2021 and enter your email address and you'll be in the running for an individual PyCon ticket.
Compliments of Talk Python.
These normally sell for about $100 each.
And if you're certain you want to go, I encourage you to visit the PyCon website, get a ticket, and that money will go to support the PSF and the Python community.
Congratulations to Ron Lee.
He won number three of the five tickets that were given away.
And there's still more chances to win.
If you want to be in this drawing, just visit talkpython.fm/PyCon 2021.
Enter your email address.
You'll be in the running to win a ticket.
Now let's get on to that interview.
Eugene, welcome to Talk Python to Me.
Thank you.
Yeah.
It's great to have you here.
I love getting down into the details of programming and writing code and working with APIs and building amazing things.
But it's also really interesting to sort of step back and take a big picture view of the world of the software.
And you wrote a really interesting article about applying some of the lessons you might learn from code back to your life.
And I really enjoyed the idea of it.
So I'm looking forward to talking to you about it on this show.
Thank you.
Happy to chat more about it as well.
Yeah.
It's going to be super fun.
Now, before we get into the details of all that, you know, let's start with your story.
How did you get into programming and Python?
My degree is in psychology.
So since then, I've been really interested in understanding, you know, how people behave, why they think the way they think, and how information changes their perceptions and behavior.
You know, I'll do this.
I used to run experiments and analyze the data in SPSS and Excel.
But eventually, the data just got bigger and bigger.
So I moved on to R.
And now I'm using Python.
So that's how it happened.
I mainly use Python because I have problems to solve that require me to process data with Python.
Yeah, really cool.
One of my very first programming jobs was at this incredibly cool place where it started out as a research lab and then it spun out of the university to a startup.
And the whole premise of what they did was to use eye tracking, not some phone thing, but like where you're looking to understand how people solve problems and how they think and so on.
And it was mostly a bunch of PhD cognitive science folks.
And they would work in MATLAB and Excel and all that stuff.
And I would help write software that would take that stuff and turn it into products and turn it into automation and whatnot.
And it's a really interesting world.
And there's a lot more opportunities for code and solving problems with code, especially on the data analysis side in psychology.
Fully agree.
Then you might first think, right?
You think, oh, psychology, that's talking to people on the couch.
Like sometimes, but not always.
Not a lot of the time.
You're right.
A lot of it is running experiments.
And like, I'm sure they collected data about eye tracking and you have to process the data.
And that happens in real life as well.
We run experiments, A-B testing, and we have to analyze the data.
Yeah, that was it.
We would run tons of experiments.
We would have maybe a week where 50 people came in.
We'd have like one-way mirrors and all sorts of recording equipment and like analyze that.
They'd even put ads, I think, in Craigslist.
All sorts of places.
Like, hey, we need somebody to come like surf on these websites for half an hour.
We'll pay you 50 bucks.
Can you come do that during lunch?
Be like, yeah, I'll do that.
That's really cool.
Yeah, it was really fun.
But it was really neat to do the programming and stuff there.
So tell me a little bit more about that transition, because it must have been a little bit challenging, right?
There's not a lot in your traditional education of psychology that teaches you programming.
Maybe a little bit, but not a ton, right?
No, actually, in my traditional education, for psychology, we use SPSS and R.
SPSS is this IBM product proprietary.
So nothing about it.
I did know a bit about the statistics and how to work with data, but that's about it.
So I think back then, when I first started getting my first job, I had to learn a lot of Python and SQL on my own.
And, you know, that was the time when, you know, Coursera is available.
And Coursera is a lifesaver.
If you ask me, I learned all my Python and data science stuff from Coursera.
So it was after work, spending one or two hours doing the courses and doing the lessons, the hands-on exercises were amazing.
And today and nowadays, you have so much available Python resources to help you quickly pick up, get something working, iterate on something, fix the bugs, and, you know, have something that you can play with.
And it just makes it so fun to learn Python now.
Yeah.
There's so much to know in programming these days.
But at the same time, there's so many resources out there to help you.
It's really a huge benefit.
I remember when MOOCs came on, as they called them, like these courses with many, many, many people in them.
And it was such a revolution at the time.
And now it's just one of the million options, you know?
Yeah, I agree.
I think MOOCs really the great equalizer.
I mean, education is the great equalizer.
And MOOCs, by making it freely available across the internet with great educators, can just teach anyone and not confine to a classroom.
I think that was amazing.
And that was what helped me transition from SPSS and R to Python and Spark and machine learning.
Yeah.
It opened that door for me.
Yeah, yeah.
Instead of studying neurons, you're studying neural networks now.
Yeah.
Nice.
So how about now?
What do you do day to day?
You just made a big life change.
I was reading that you recently moved from Singapore to Seattle.
That's a big change, even though not a whole lot in between those two things.
If you draw a line, just a lot of water.
But yeah, it's still a big change in terms of jobs and whatnot.
Tell us about that.
So I think towards the end of 2019, I think, or maybe in the middle of 2019, my wife and I were thinking of, you know, stepping off our comfort zone.
I don't know how many of your listeners have been to Singapore, but it's a beautiful place.
It's a very comfortable, tiny island, amazing weather.
But we thought, you know, we like to travel.
So we thought, hey, no, let's try to live somewhere for a bit.
So we looked at a couple of places, a couple of tech hubs, Seattle, San Francisco, Berlin, Shanghai.
And it so happens that I got an offer from Amazon.
Nice.
Yeah.
So that's where I am now.
I'm an applied scientist at Amazon.
And so what I do, I'm part of the Kindle team.
So what I do in my day-to-day job is I try to help people read more.
And we try to do this by helping them find books that they need to find.
So what I do is I work on recommendation engines, try to help people, you know, as you're finding a book or based on what you have read to the extent that you have read it.
We know this because we have Kindle data.
We know how much of a book we have completed.
We can recommend you new books that you might be interested in.
Or based on what you browse on the website, we can update our recommendations in real time and recommend you new books as well.
So that's what I do in my day-to-day job.
Yeah.
Well, that sounds really fun.
I actually really appreciate that from Amazon, specifically around the Kindle, to be honest.
Like a lot of stores are like, oh, you might also like that.
I'm like, no, I don't also like that.
I really don't care.
You know, there's just so many things where I'm shopping online or whatever, and it just doesn't make sense.
But specifically for Kindle, I'll be reading a book and say you should also check out these other ones.
Like a lot of times, like my next book is out of that list.
I really love it.
So can't go browse a bookstore these days.
I mean, we have a fantastic bookstore called Powell's.
It's like one of the largest bookstores around here in Portland, but you can't even go to it anymore.
So, yeah, it's pretty cool.
Thanks for that good list there.
Yeah, you and your folks.
I'm happy to hear that.
And this is a great place where what I'm doing is very aligned with what I do,
which is trying to help people, very aligned with my values, which is trying to help people learn more by reading more books.
So that's great.
Yeah, absolutely.
And you talk a lot about writing.
And well, I guess not just talk.
You also put your time and energy where your words are, right?
You do a lot of writing.
And the reason that I wanted to talk to you about having you on the show, like I said, is one of these articles that you wrote.
But there's a whole bunch of them that you have.
So there's a couple of people who are really successful in the tech field that I can think of who really make writing an important part of what they're doing.
Like I had Jesse Giroud Davis on the podcast at the time.
He's from MongoDB.
I think he still is.
Anyway, he talks about like all these design patterns of technical writing, right?
Like here's the how to, here's the first and like all these really interesting things.
And I kind of get that vibe from you as well, that like you've got these really strong ideas about writing and how it reinforces your programming side of the world.
What's your thoughts on that?
Well, I guess maybe just to share a bit of backstory on why I started writing so much.
I think a couple of years ago, I was interviewing a couple of mentors, informal mentors, right?
They didn't know I was getting them to be a mentor, but I would just reach out to people who are two to three steps ahead of me.
Heads of data science, CTOs, lead data scientists.
I would ask them the same question.
What makes an effective data scientist?
And I would say, you know, is it understanding the business domain deeply or is it PhD research level skills, ninja hacking skills, Python or C++ or Java?
And a lot of them said, actually, you know, all that is really important, but there's one thing that you're missing out.
And this one thing is transferable across all your entire career.
And that one thing that said is communication.
At that point in time, I didn't believe it.
I was immature.
I didn't think it was, I didn't think it makes sense, but I thought so many of these people tried it.
I owe it to them to, so many of these people mentioned, I owe it to them to try it and update it on my program.
So for one year, I said, I'm just going to volunteer for whatever writing opportunity, whatever speaking opportunity the company has.
So I started writing about my side projects.
I started writing an internal company newsletter to share about what our team, our data science team was doing.
And I started speaking at conferences and meetups.
And so that's why I've been started writing.
And since then, I found that writing actually helps me learn a lot because I would write about something and I realized, hey, you know, I don't know anything about this thing I'm writing about.
Yeah, exactly.
You think, you know, you've learned enough to sort of have some thoughts or, you know, in the programming space, you can maybe get something to work.
Right.
But if you've got to explain it, all of a sudden, it's not enough to know, well, there's two ways and I'll just use that way.
You've got to know, well, here's the two ways.
What are the trade-offs?
When should I use which?
Like you've got to dive into these sorts of details when you're either writing or speaking or presenting about it.
And it just forces you another level down in your understanding and depth, right?
Exactly.
Writing is really difficult.
And truth be told, I think a lot of people say, you know, you must really love writing.
No, actually, I don't really love writing, which is a bit weird.
I love learning and I love sharing about what I've learned online.
And writing is my vehicle to let me do that.
So that's why I started writing.
So why do I talk a lot about writing at work or writing in general?
There's this question I ask myself a lot.
I used to ask myself this question and now a lot of people ask me this question.
Hey, you know, as a data scientist, is your job to write code or is your job to write documents?
And I used to think my job was to write code, to build systems, to help customers.
But then as I'm doing this more, I find that, hey, you know, a lot of times before writing code,
I need to spend a lot of time thinking, researching and designing.
And the medium of that work is writing documents.
That's why I encourage a lot of people, you know, it's just like what you said.
Do I serve my recommendations via Redis cache or via Lambda or API Gateway or whatever?
And I'm thinking through all these designs and I need to make trade-offs.
And writing in a document the pros and cons and the rationale for the decision forces me to do that.
So that when we start implementing things, we don't do things the wrong way,
which is really expensive, right?
Implementation is expensive.
So that's why, and I find that it has really helped me a lot.
I don't feel that enough people talk about it.
And I want to encourage people to write a lot.
Well, yeah, I agree.
And it seems to me like one of the fundamental jobs of a data scientist, at least one branch of data science,
is to take the raw information, think about it, and then communicate what it means, right?
And that seems to go really hand in hand with what you're saying.
Exactly.
I think I was doing this one year of writing and speaking practice, right?
At work.
And then in the past, I had people come up to me and say that, you know, Eugene, every time I have a meeting with the data scientist on your team for half an hour,
and then I work with not knowing anything.
I don't know what they spoke about.
And that's because I think, by and large, most people, you know, we tend to use jargon like AUC, ROC, distributed, all that.
And we assume that business people will know it.
But I made this mistake as well.
And then one day, I had a great boss who brought me aside, you know, Eugene, the way you're communicating, no one understands you.
And I asked, what do you mean?
And he gave me very good feedback.
He was a great boss.
And I started changing how I communicated things.
And that made me a lot more effective at work.
So that's how I get started on that.
Oh, fantastic.
Well, I really like what you've done with the writing and stuff.
And so maybe let's spend some time diving into the one that I think is probably the centerpiece of what we'll talk about.
We'll touch on a few other ones because you do a really good job in your writing of not just putting down your thoughts, but bringing other people's ideas and influences in there.
So you have a lot of quotes.
You have a lot of references to other things and so on.
So I really like the way, the style.
So let's talk about your article, What Machine Learning Can Teach Us About Life?
Seven Lessons.
Why did you write this?
Because when I was writing some of my previous articles, okay, this is an odd thing.
I know that my audience are machine learning practitioners.
And, you know, sometimes I write about things that sometimes I want to write about things that I know will not interest them.
So this is one of those.
I like to write about life lessons, right?
And I know it will not interest them, but I think it's really important.
I want to write about that anyway.
So, you know, in order to sneak it in, in this case, machine learning is really just a Trojan horse.
Yeah.
Machine learning is a Trojan horse where I sneak in these life lessons that I found really helpful for me.
And I just, upon some reflection, I just want to write about it.
And that's it.
That's how this article came about.
I love these Trojan horse ideas.
Like, oh, I'm going to teach you.
I'll do something fun.
I'll actually have a lesson, right?
Yeah.
And now the secret's out.
Yeah.
I haven't actually shared that with anyone yet.
Now they're going to know.
That's right.
This portion of Talk Python to me is brought to you by Retool.
Do you really need a full dev team to build that simple internal app at your company?
I'm talking about those back office apps.
The tool your customer service team uses to access your database.
That S3 uploader you built last year for the marketing team.
The quick admin panel that lets you monitor key KPIs or maybe even the tool your data science team hacked together so they could provide custom ad spend insights.
Literally every type of business relies on these internal tools.
But not many engineers love building these tools, let alone get excited about maintaining or supporting them over time.
They eventually fall into the please don't touch it, it's working category of apps.
And here's where Retool comes in.
Companies like DoorDash, Brex, Plaid, and even Amazon use Retool to build internal tools super fast.
The idea is that almost all internal tools look the same.
Forms over data.
They're made up of tables, drop-downs, buttons, text input, and so on.
Retool gives you a point, click, and drag and drop interface that makes it super simple to build internal UIs like this in hours, not days.
Retool can connect to any database or API.
Want to pull data from Postgres?
Just write a SQL query and drag the table onto your canvas.
Search across those fields, add a search input bar and update your query.
Save it, share it, super easy.
Retool is built by engineers, explicitly for engineers.
It can be set up to run on-prem in about 15 minutes using Docker, Kubernetes, or Heroku.
Get started with Retool today.
Just visit talkpython.fm/retool or click the Retool link in your podcast player show notes.
So let's go through the seven lessons.
The first one here is data cleaning.
Assess what you consume.
And I'm a big fan of this idea as a life lesson as well.
So what's the story?
Wait, before you get into that, like every one of these lessons, you start by saying, okay, here's the machine learning meaning.
And then here's the sort of follow-on lesson, right?
So what's the machine learning lesson of data cleaning?
I think the machine learning lesson of data cleaning is most machine learning practitioners would know when you use noisy data, your machine learning model is going to be noisy and it's just not going to work.
I think that's this cliche, garbage in, garbage out.
In machine learning world, that is absolutely true.
Yeah.
And cleaning the data itself is actually most of the work in terms of training your model, cleaning the data, refining it, making the model be able to learn from it.
So that's really important in the machine learning world.
Yeah, absolutely.
You have a really interesting quote in here.
And you also have some really fun pictures, which we can talk about.
Where is it in here?
It was Randy Owl shares, data cleaning isn't the grunt work.
It is the work, right?
I think so many of these things in a lot of these machine learning and like scientific programming sides, you have these amazing libraries, right?
Like you can pip install in TensorFlow or whatever.
And then you just feed the data, you know, you got your data frame, you feed it over, boom.
And like magic happens, right?
You've got to get that data.
You've got to like format the data.
You've got to convert the data.
Like that's, you've got to understand that it's all correct, right?
There's cool libraries, like great expectations that are like sort of unit tests for your data to make sure you don't feed in bad data and all that.
But yeah, I mean, I agree with that statement a lot.
That's pretty neat.
Thank you.
And I linked to Randy Owl's post, which is a very good post.
I think he wrote that, of course, I might be putting words into his mouth, but I think he wrote that because a lot of people think that data preparation is not sexy.
Their cleaning is just grunt work.
But, and he's trying to get people to remind people, no, actually it is the work.
It is what actually makes a big difference in your analysis outcomes, in your machine learning outcomes.
And I fully agree.
Yeah, absolutely.
All right.
So life lesson from this one, what's the parallel life lesson you were trying to draw?
Well, the main life lesson that I was trying to draw is actually the one below that image.
Okay.
So you have a really fantastic image and you talk a little bit about food first before you get into what I think is more important.
Although food is not unimportant.
But we've all seen these horrible pictures of like the 50s and 60s of doctors recommending cigarettes.
Like my doctor recommends Camel, not Marlboro.
You're like, oh my God, what is this?
But there's like this really similar one for sugar of like all these like, here's like, how do you, you don't get overweight.
You eat your sugar.
So you don't eat fatty food.
Oh my gosh.
Anyway, so yeah, that's one is food, which is really interesting.
But then more importantly is news, right?
And information.
So if you could just scroll up to the image, just in this image, right?
We see that food is important and bad food actually makes you bad, makes you unhealthy.
But in this image, this image is both bad food and bad information.
There's so much bad information out there on Twitter, on Facebook or social media.
And you really have to be careful about what you consume, right?
Misinformation.
I mean, it is really easy to consume, you know, this small 200 character tweets or, you know, a small empty calorie.
I like to call them empty calories on social media.
You know, there's empty calorie info bites, you call them.
That's great.
Yeah.
There's some influencers who post really short things and, you know, they just go viral.
And if you consume a lot of that, it actually, you think about, hey, did that actually change my life?
No, it's actually kind of empty calories.
And a lot of good writers, David Perel writes about this.
It's like, you want your content to be very niche, very deep, very high in nutrition.
So I think that's the same thing.
When you consume light content, you don't actually gain a lot.
It can be actually downright toxic.
A lot of times it's light content.
It's just one statement, you know, trying to sway information, sway the public.
So I think for your own sake, curate what you consume.
I agree.
I mean, it's so important.
And there's so many knock on effects, right?
And it also has some interesting machine learning tie-ins.
I would say here is some recommendation engine tie-ins.
Yes, definitely.
I think maybe it's, I'm not 100% sure about the attribution, but I think Tony Robbins said,
you've got to be the guardian of your own mind, right?
You've got to consciously decide what you let in, what thoughts you let influence you and
what ones you just eject and say, this doesn't matter.
Because what you think can really affect you.
But I was thinking even more, like if I go onto YouTube and I start to consume something
that's a little kind of crummy, but whatever.
The very next thing is you're never intense enough for YouTube.
If you watch three videos on one topic, like it's like you need a hundred more of these
videos, right?
It's just, with a lot of social media, and I don't use Facebook enough, but I can imagine
it's similar.
Like as you start to trend even a little bit in one way or the other, it just throws you
a huge rope and tries to pull you hard for the sake of engagement down that path.
And so small curves these days seem to matter a lot more.
Like if you used to like grab, I don't know, some crummy newspaper, like a rumor newspaper
at the grocery store and read it.
Then you went back and you read the New York Times and you got home.
The New York Times wouldn't just stop showing you the important news.
It would show you all sorts of junk because you read the, but nowadays that's what happens.
It's crazy.
It is.
I think a lot of it is because of just how machine learning works.
If you click on something and you read something, it thinks that you like that thing and it recommends
you more of that thing, which sometimes it's just a, you misclick or something and sometimes
it's a mistake.
And that's why machine learning and social media can sort of polarize people, which is not what
we want to do.
So it really takes, you need to be conscious about how you're affected by it.
Right.
Obviously your article is not about this, but we're going to have to reckon with this as
a society.
Definitely.
Yes.
Period.
In a big way.
But let's go on to lesson number two, low versus high signal data and seeking to disconfirm
an update.
Tell us about this one.
So maybe I'll start with the machine learning aspect for it.
I think what this here is a support vector machine.
So, you know, you're trying to separate the blue dots from the red dots.
And, you know, on the leftmost image, I mean, it's very easy to separate, right?
So you can see the margin is very wide.
The margin is the dash line, the distance from the dash line to the solid line.
On the middle image, all of a sudden we introduce a new red dot and the margin becomes very narrow.
So, you know, your certainty is a lot less and you start to think, hey, you know, maybe
I'm less certain.
And then on the right, and then you start to collect more information, more data points
around that, around that.
And then all of a sudden your margin becomes a curved margin.
So what you thought was true and you were very certain about it on the left side of the
image now suddenly changes to the right.
Yeah.
You get a little bit more information and you're like, oh, this is not the dividing line or
the distinction at all.
It's totally more nuanced or whatever.
Yeah.
Exactly.
So I know I shouldn't be referring to the image because this is a podcast, but I think
the image is really powerful in terms of how in machine learning, you change your decision
boundaries.
And in real life, this is the same.
So I think Jeff Bezos has a very powerful quote that says, I think something like this
that says that, I actually didn't put it here, but I'm just reminded of it that says that,
hey, you know, when data disagrees with anecdotes, he tends to prefer the anecdotes because
a lot of times it sort of means that maybe you're measuring things wrongly.
So data is very easy to collect.
We have a lot of data, but whereas anecdotes is one or two of those feedback points that
disagrees and we sort of need to jump into an anecdote, collect more data around it.
So I think this is the same thing.
And when you're asking for feedback, often people give you good feedback, you know, you're
doing great, continuing what you're doing, you're doing fantastic.
And when people give you bad feedback, dig into it, right?
That is a gift for you to improve.
Dig into it.
Ask them, hey, you know, I love what you just said.
Can you give me more detail?
And so it's giving you more detail, more information on how you should be thinking, how you should
be designing, how your code should change in your code reviews.
And it helps you grow.
Yeah.
I think especially in the US, people are very uncomfortable with negative feedback, both
giving and receiving it.
If it's given in the right way, it can be very valuable.
I mean, maybe listening to like what people put on your YouTube video, that might not be
all that constructive.
There's a lot of weird, just people with issues at scale.
But I totally agree.
And, you know, some more close space, right?
Like a code review or something, right?
That's definitely an opportunity to learn something.
Even if the person is wrong, it's still an opportunity to learn their perspective.
Definitely.
And learn from it, right?
So one of the quotes you have in the section is by Karl Popper.
True ignorance is not the absence of knowledge, but the refusal to acquire it.
And I think that also goes hand in hand with the polarization and stuff you talked about
before.
I agree.
I think that I adopt the growth mindset.
I think that people can change, can grow.
And that's what's necessary, right?
In our industry, right?
Things change so fast.
Yeah.
So we have to try to keep up with the times in terms of the technology.
I think fundamentally, we should focus on the problems, but don't neglect how technology
is changing as well.
For sure.
All right.
Number three, explore, exploit.
Balance for the greater long-term reward.
It has to do with reinforcement learning, right?
Yeah.
So in reinforcement learning, well, you can imagine that at a start, you don't know anything
about the state of the world, right?
Let's say you have two, this is an example for me.
Let's say you have a restaurant that you love.
Let's say you first landed in Seattle.
When I first landed in Seattle, I didn't know where to eat.
I didn't know what was good.
And I would explore many different restaurants, many different takeouts.
And after exploring, after maybe I explored 10 of them, I found that, hey, you know, this
place is great.
It's cheap.
It's nearby.
The food is solid.
And I would just exploit it all the time.
Exactly.
Like in my neighborhood, there's maybe two or three Thai food restaurants that I always
go to.
And if somebody says, hey, let's get some Thai food, I'm not going to go, well, there's
another one we haven't tried yet.
Let's go to, it's just like, nope, that one's good.
We're going here.
You know what I mean?
I am exactly like that.
I'm such a lazy thinker.
Yeah.
And I just like, this is really good.
It's my appetite.
It fits my taste.
And it's cheap.
Why do we have to try something new?
But thankfully, my wife is an explorer.
So while I'm exploiting, she encourages me, you know, let's explore these new things.
And sometimes I find treasure gems that I would never have tried.
But because she's encouraging me to explore, I found it.
Yeah.
So that's a balance.
So at the start of your career or at the start when you're trying to solve a new problem,
explore.
Take some time to explore as much as you can.
But then once you find it, exploit.
But you know, as you're exploiting, don't forget to also be exploring a bit.
Yeah.
So you tie this back to careers a lot about basically, as you sort of touched on, continuous
learning and, you know, don't get too comfortable and it just go with, don't just fall all the
way into the exploiting side.
Like I went to college, I got my engineering degree.
Why do I need to learn Jupyter?
I'm just going to keep using MATLAB or Excel and we're just going to keep working on this
building or bridge or whatever.
Right.
Like I think it's easy to do that.
I spent the time and the money and worked hard and got good grades and a four year degree.
Why do I need, I'm done with tests and learning.
I can just stop.
Right.
Exactly.
I was just going to say this exact same, a very similar example.
I studied SPSS and R in college.
Why do I need to learn Python?
Right.
Well, you know, Python has a lot of benefits.
It's a lot faster.
And then, you know, now that I learned Python, I know SQL, why do I need to learn Spark?
But, you know, if you explore a bit, it can really help you make your work a lot more
effective.
Maybe I know decision trees and linear regressions.
Do I really need neural networks?
But, you know, it's always taking some time to explore about, explore what might be new.
Sometimes some of this exploration doesn't work out and that's fine.
If you think of it from a learning perspective, you're learning a lot, but take the time to
sample around every now and then.
Yeah, absolutely.
You have a couple of great quotes in here from two people.
I find both of them very interesting.
Naval, Silicon Valley guy that just goes by Naval, N-A-V-A-L.
And he has a really interesting wheat storm that turned into a podcast series and some interesting
thinking.
Are you familiar with this?
Oh, yes.
I love that.
Yeah, I do too, actually.
It may be reading your articles and stuff.
It reminded me of that.
But he says your goal in life is to find out the people who need you the most, to find
out the businesses that need you the most, to find the projects and the art that need
you the most.
There's something out there for you.
And then Matthew McConaughey talks about when he was going, he was in law school and decided
to go into film school, which is obviously a big career switch, somebody.
And he's like, no, no, I have to do this.
Right.
And he was afraid of what his dad would say.
And instead of saying you've thrown away your career or whatever, he just said, don't
half-ass it.
Like, if you're going to do this, you better go do it.
Right.
So that's sort of the, Naval's is the explore, McConaughey's, maybe it's the exploit.
Like once you're in it, go in it full.
Exactly.
That being said, I mean, a lot of us, maybe we are a couple of years in our careers, but
I think what Naval tries to remind us, you might not be very happy what you're doing right
now, or you might love what you're doing right now, but there's always something that
suits you specifically.
So some people might love research and they might not fit into a startup environment.
Or some people in a, for example, maybe a big innovation lab, they need some of their
data scientists to really focus on research and they might not fit in there.
If the data scientist is more about iterating fast and, you know, shipping fast to customers.
So there's always something better for you.
So keep exploring.
And once you found it, exploit it like Matthew McConaughey.
He didn't half-ass it.
He ran all in and he's doing fantastically well.
Yeah.
It worked out okay for him.
Yeah.
Nice.
All right.
Transfer learning.
Books and papers are cheat codes.
Yeah.
So in machine learning, I think a couple of years ago, there was this thing called transfer
learning, which it didn't make quite a stop, but I thought it was really breakthrough.
So what it means is that there's this competition called ImageNet, where you try to classify images
into thousands of categories, right?
I think 1,000 categories.
And those big companies like Google, Microsoft, they would train huge models to classify this.
And this would be deep neural networks.
And what people found is that you can take what they have trained, this huge model with
all the weights and parameters, and you can just chop off the last layer and put your own
model.
Maybe you're trying to classify cat versus dog.
You can use that model and then classify cat versus dog and put in your own data and just
update the model.
And it would work fantastically well.
And all those of magnitude better than if you had to train from scratch.
Wow.
Yeah.
I think that's a cheat code.
I use that when I first heard about it, I use that cheat code.
Okay.
Since I've heard about it, I've only used transfer learning for work as much as I can.
If there's a transfer learning model.
Yeah.
So the idea is you, instead of starting with a completely blank set of weights in your model
and just feeding data and going, no, that's right.
That's not right.
That's a dog.
That's not a cat.
No, that's yes.
That one is a cat.
Good job.
You can use kind of a vague one to automate some of that driving.
Is that kind of the idea?
Like you give it a little bit of knowledge, but not too much.
And then you keep still teaching it.
Is that this model is able to distinguish a thousand different cats and dogs and hamburgers
and cars.
Yeah.
And you're just taking all that knowledge that's in there and you're just fine tuning
it for your specific use case of cat versus dog.
And it really cuts out so much effort.
Yeah, absolutely.
Very, very cool.
So in this one, the life lesson here is we were touching this before that people feel
like a lot of times they've gotten, they've got their degree, they've studied, they've
worked hard.
Like they just want to have fun and live their life and not just keep going.
But like the way to think of education, formalized education, let's say, even I would say college
is this generalized pre-training, right?
You're not ready to really go do the thing.
You haven't really learned the thing, but you're much closer than somebody who hasn't, right?
Something like that.
Schools, generalized pre-training.
Yes, I fully agree.
I think a lot of people think that at least what I've seen, some people see that after
they graduated, I'm done learning.
But I don't know about you, but after I graduated, after I got into working world, I realized,
hey, I didn't learn any of this stuff.
Yeah.
In the working world, I had to learn a lot more.
Almost none.
I think the only thing that I learned at school that helped was Excel and R and SPSS, the technical
skills.
So school sort of trains, you know, teamwork, how to work in a project team, communication,
how to learn fast because, you know, every semester you'll be taking four subjects.
It teaches you the general stuff.
And then once you get to work, there's a lot of on-the-job training that you have to do yourself.
So the point that I was trying to make here is that school is really just the start of
it.
It's generalized pre-training.
You could stop there.
But if you fine-tune, if you take the effort to fine-tune your model from school onto your
very specific tasks, you would be orders of magnitude more effective.
That's the message I'm trying to give.
And I also want to tell people, and this is the next paragraph, is that we have transfer
learning models, right?
And in real life, that's the same thing for transfer learning models, which is books and
academic papers.
I want to try to get people to read more books.
I've gained a lot from books.
I've gained a lot from academic papers.
And you can imagine, I don't know, maybe you read a book by, I don't know, Sapiens by
Noor Harari or Deep Work by Cal Newport, who I'm a big fan of.
They have thought about this on the Vals, Navelle's thread, right?
They have thought about this for so long, five years, decades, and they have compressed it in
a book that you can read in eight to 10 hours.
Read it and you'll be that much smarter.
And you'll see life in a different way and you'll gain a lot.
Yeah, that's super interesting.
I do agree with it that you don't necessarily have to agree with everything they say.
It doesn't have to match your situation, but it does give you a whole lot more experience
without going through the hardship of getting that experience.
Exactly.
And I think it's magic.
Yeah.
That's what separates human beings from animals, right?
Where we can transfer knowledge.
We can perform telepathy.
I can transfer knowledge to you, to anyone on the internet by writing.
And people do that through books in the past.
Yeah, very interesting.
So that's magic.
So you say books are the weights and biases of the great thinkers who've come before us.
That's pretty awesome.
This portion of Talk Python To Me is sponsored by Linode.
Simplify your infrastructure and cut your cloud bills in half with Linode's Linux virtual machines.
Develop, deploy, and scale your modern applications faster and easier.
Whether you're developing a personal project or managing large workloads, you deserve simple, affordable, and accessible cloud computing solutions.
As listeners of Talk Python To Me, you'll get a $100 free credit.
You can find all the details at talkpython.fm/Linode.
Linode has data centers around the world with the same simple and consistent pricing regardless of location.
Just choose the data center that's nearest to your users.
You'll also receive 24-7365 human support with no tiers or handoffs regardless of your plan size.
You can choose shared and dedicated compute instances, or you can use your $100 in credit on S3 compatible object storage, managed Kubernetes clusters, and more.
If it runs on Linux, it runs on Linode.
Visit talkpython.fm/Linode or click the link in your show notes, then click that create free account button to get started.
On this, I wanted to ask you about what you thought about, quote, new media, right?
Like, I'm thinking in particular YouTube, but other places, right?
Like, these books are very, like, the tradition of meaningful books are very important and long, and everybody knows about them, right?
But, you talked about the MOOCs before.
I mean, YouTube, I was talking about the negative aspects of it before, but there, it's amazing what you can learn if you go over to places like YouTube with the desire to seek out this kind of information.
Like, there's so much good stuff there mixed in with, like, cat videos, right?
Yeah.
What do you think?
I think that I am ambivalent to it.
I think I have a preferred way of learning, which is to read books.
Nonetheless, I know that video is awesome in the sense that I can write some code, I can iterate, and you can see me doing it.
It's almost impossible to convey that in a book, maybe some code examples.
So, that's really amazing.
I think both new media has strengths, and it also has, the difference between new media and traditional media is that new media is just a lot more powerful.
A lot more powerful.
It can be powerful for good, and also powerful for not so good.
A lot more powerful in the sense that, you know, MOOCs are amazing, right?
A professor can teleport into your house and teach you.
That's powerful.
But powerful for not so good in the sense that we have things like that reduce your attention span, TikTok videos, or short snippets of articles that it's also very powerful.
It's just whether it's for good or not so good.
So, that's something to think about when you're using new media to learn.
It is.
It's definitely more risky in that you can get distracted and pulled away because all those places are about that for sure.
You know, like, I was recently watching a video of an opera singer and, like, vocal coach analyzing, like, this heavy metal singer and, like, dissecting the song from a perspective of, like, an opera singer.
And I'm like, I appreciate both of those art forms way more having seen, like, that experience.
And I would never have that experience.
Exactly.
And I would never go down to the bookstore and pick up a book on, like, singing theory and stuff.
I just wouldn't, right?
I would find something else to spend my time on.
But anyway, like, those are the kinds of things I'm thinking that you just, you wouldn't expect.
But you can find interesting things there, right?
Definitely.
Hey, I want to go back really to this one really super quick because I skipped over it right at the end.
But you talk about this exploring versus exploitation thing and saying, look, you don't always have to worry so much about this stuff because sometimes many things are what you call two-way doors.
And there's this interview over here of Jeff Bezos.
And he has this distinction of some decisions being two-way doors and some of them being one-way doors.
And you shouldn't put about the same concern, worry, energy, and whatnot into both types of decisions.
They're not equal, so don't treat them equal.
Can you speak to that real quick?
I thought that was super interesting.
Yeah.
I'm just going to use Jeff's example.
For example, maybe you're doing a side hustle and someone wants to acquire it or someone wants to completely purchase it from you.
That's a one-way door that, you know, after you sold it, there's no way to reverse it, right?
Yeah.
So, however, you know that maybe you start a side hustle and then maybe you're thinking, hey, should I be targeting Python programmers or R programmers or, I don't know, Scala programmers?
That's a two-way door.
You can easily pivot.
So, I think what Jeff is saying is that the one-way door, very difficult to reverse, but it's a lot less.
It happens a lot less.
And a lot of us, a lot of people treat two-way door decisions as one-way door decisions.
And I think he's saying that, hey, you know, it's good to distinguish between both and devote the amount of energy and due diligence and analysis into each of this.
And that makes you help you make more effective decisions more efficiently.
Yeah.
I totally agree.
I thought this was, like I said, I thought this was insightful.
And I feel like in programming and in code, a lot of people get stuck in the so-called analysis paralysis.
They're just stuck, like, trying to decide.
Like, every decision is, like, it's overwhelming and it's hard to decide what to do because you feel like you might make the wrong decision.
You don't have enough experience.
Like, so much of those things, you can just, oh, we'll just refactor this later.
Or we can just throw away this later.
Like, oh, I'm going to use a relational database.
Oh, we should have used a NoSQL database.
We'll just throw it away and switch it over.
It's, like, probably not that big of a deal versus we're going to let all the Python guys go and hire a bunch of Java guys and rewrite the whole thing.
Like, if you're a year into that decision, you're fairly committed, right?
Like, so there's really, I think, understanding, like, oh, that's a two-way door decision allows you to just, like, try it and experiment.
Fully agree.
And that's hopefully by understanding the difference between one-way door and two-way doors, it makes it easier to explore, right?
Yeah.
I agree.
I think that's worth calling out.
All right.
Iterations.
Find reps you can tolerate and iterate fast.
So I think machine learning, a lot of machine learning involves iteration.
Clearly, neural networks are iterations.
Every time you pass the data through multiple epochs and the data learns, with each iteration, with each epoch, the machine learning model error reduces.
Machine learning gets model, provides better predictions and gets more accurate with your metrics.
That is the same with life.
I think a lot of people expect, this is what I used to expect.
I expected that I would read something once and I would fully understand it.
All of the knowledge is in my brain.
And then, you know, I realized that that is never true.
So, and actually, that actually lowers my expectation of myself.
You know, sometimes I'll read a paper and then, you know, I'll try to discuss it and realize I don't actually know the details.
That lowers expectation of myself.
You know, I tell myself, Eugene, by reading it once, you're never going to get it.
Yeah.
Don't fully expect yourself to that.
It's too high a bar.
So maybe read it a few times.
Be kinder to yourself.
So that's the same thing.
When I read papers, I go through it multiple times.
When I do A-B tests, I fail two times for every one time I succeed.
So I feel like 50 to 75% of the time.
And you just got to learn to be kinder with yourself where you iterate, right?
I think I've posted some examples here.
The Angry Birds developers failed 51 times.
Sir James Dyson failed 5,000 times in 15 years before a vacuum cleaner work, right?
And, you know, imagine if he gave up, we would never have that.
Yeah, yeah.
But again, a lot of great examples here about people who just iterated and just stuck to it.
I think it also sort of ties into the previous one, right?
The two-way doors.
It's okay if it doesn't work on a lot of these types of things.
Just keep going.
Just try again, right?
Eventually, you'll find one that fits, yeah?
Exactly.
Yeah.
Speaking of fitting, overfitting, focus on intuition and keep learning.
So I think overfitting is, well, I guess it's overfitting is when your machine learning model
memorizes the training set too much and can't predict well on the prediction set.
Right.
It's almost perfect on the training set.
Like it knows that it's cold, but it's so specific that any slight variation, even though
it should be a dog, it doesn't know it's a dog.
Exactly.
An example of this is when your machine learning model learns on customer IDs.
And, you know, when new customer IDs come in, it's just crap.
So I think the clearest, the person who really pushes for this is Richard Feynman.
He says that there's no, and the way he teaches math and physics is the same.
He goes directly into intuition.
Forget about formulas or forget about memorizing stuff.
If you understand the intuition, you will understand it better and you can generalize across
many, many things.
I think in life, it also makes the same sense.
Don't try to memorize things or don't try to memorize knowledge, right?
I think if you have the intuition of the fundamentals, you'll find that it transfers across many,
many different domains.
For example, I think Elon Musk talks about knowledge as a tree.
So, you know, the fundamentals of the tree are the trunk.
That thick trunk is the fundamentals that supports all the branches.
You want to make sure that the intuition is like the trunk.
You want to make sure that your trunk is solid and then you can build on new branches or cut
off new branches and grow new branches as necessary.
So I think the way to grow this intuition, at least for me, I find that being a beginner
is the best way to do this.
Yeah, absolutely.
Okay.
Very interesting.
A last one has to do with ensembles and ensembling.
Diversity is strength.
What is ensembling?
Yeah, I guess ensembling is that I could train a model, maybe a linear regression and another
model, maybe a decision tree and then another model, maybe a key nearest neighbors.
And they would all have their different errors.
They would all have the different biases and strengths.
But the unusual thing in machine learning is that, you know, you can just take all their
predictions and average them and they would do better than all of them combined.
And actually that's a cheat code that everyone is doing on Kaggle competition.
You just train thousands of models and just combine all of them.
It reminds me of like a much simpler example.
There's sort of the wisdom of crowds.
Like you hear stories of people saying, look, here's a jar, a big glass jar full of jelly
beans.
You got to guess how many jelly beans there are.
Like many, any given person will over underestimate a whole lot.
But if you ask a hundred people, it's usually really close to the actual number.
Or there's some weird examples of this at like state fairs, there'll be like a cow and people
have to ask like, how much does the cow weigh?
You know, it's like a competition and people get it really wrong.
But it's usually really close if enough people answer and participate and it's average, right?
Exactly.
So having diversity, diversity of opinions, diversity of thoughts, I think is very powerful.
Yeah.
So that's what I'm trying to encourage here as well.
Yeah.
So what's the story about life here instead of like guessing the way to cows, which is not
all that practical.
Well, I think that one way, okay, maybe a quick one, which is one way to do when you are trying
to build teams is you might want to deliberately try to find people which are different from
you, right?
which complement your strengths.
Sometimes in tech interviews, we want to find people that are similar to us, have the
same skill sets that, you know, fit this mold, fit this job description.
That's useful.
It's effective.
But I personally have built teams whereby it's very diverse, maybe from different countries
or one third female.
And I found that the creativity that comes from this is really powerful.
And the other one, which is, I think, of course, Scott Adams is known for this.
He says that, you know, if you can't be the top of your field, combine multiple superpowers
like Scott Adams did.
He combined his ability to draw, his sense of humor and his business know-how and he created
Dilbert, which is no one else can replicate Dilbert.
It needs someone like Scott Adams to do that.
Yeah.
You know, that general idea, I actually hit on this a lot because there are a lot of people
who listen to this show who are not traditional computer science developers, traditional data
science folks.
And I think sometimes they feel like they don't have quite the same skill set to compete with
those people.
And how are they going to compete with somebody with a master's degree from Stanford in computer
science?
And what I, my thought on all this is, you look, if you're really good at economics and
you're pretty good at programming, there's not too many people who have both of those skills,
right?
Like all of a sudden you go from competing with a hundred thousand down to like 500 or something.
I don't know.
Not that maybe it's a little bit extreme, but you know, like the, if you need that intersection
of skills, all of a sudden it becomes super powerful.
And what you're suggesting here is maybe like building teams.
You can kind of build that in the team rather than in an individual.
Exactly.
And I want to go back to your previous example, someone who's maybe decent programmer, but,
you know, can't compete with someone who graduated with a degree in, degree in CS and a
master's in CS and PhD in CS.
It goes back to Navelle's tweet, right?
There's something that is just right for you that can tap on your skills in economics and
comm science.
You just need to find it and that'll be a great fit.
Yeah, absolutely.
All right.
Well, that was the seven items and I, you know, I enjoyed thinking about them and just seeing
how these machine learning examples maybe can be analogies for living life.
It's pretty cool.
Thank you.
Yeah.
Yeah, absolutely.
So a couple of other things real quick that you've spoken about is you've written a couple
of things on sort of productivity as a developer and in the tech field.
One article called how to accomplish more with less useful tools and routines.
And then also routines and tools to optimize your day, which is a guest post by Susan Hsu.
Yep.
So those are really interesting.
But in particular, during one of them, I don't remember which one you talk about this article
by Paul Graham and Paul Graham wrote this thing called maker's schedule versus manager's schedule.
And, you know, I think you talk a lot or we talk in the tech field a lot about getting into flow,
really programming and just having uninterrupted time.
And yet I think probably more than ever, people are being pulled in different directions because
everyone is just a Zoom call away.
It's not even if you're not in the office, you're now just as eligible to be sucked into a meeting
as anyone else.
Right.
Yep, definitely.
Yes.
Can you talk real quickly about this?
Because I think it's a short article, but I think having awareness of this idea of a maker's
schedule and a manager's schedule and how they're not super compatible and you got to be careful
to help them coexist.
I think that's important.
Yeah.
So I think that, of course, all credit goes to Paul Graham for this.
So makers to even start to design something or to start to code a framework, you sort of
need, I don't know about you, but it takes me like 30 minutes to warm up, to have to load
all the concepts into my memory so I can start juggling them in my head.
And then, you know, once I load all that into my head and then I can, okay, I can start
writing pseudocode, you know, tweaking things, testing things iteratively.
And that takes time.
And it takes me maybe about 45 minutes, 60 minutes to get into flow.
And once I'm in the flow, I'm moving really quickly, like speeding things through or once
I'm in the flow of, you know, fixing a bug.
And I don't know about you, but if I don't fix the bug, I can't stop.
I can't go for lunch.
And that motivation, that drive, if someone pulls me into a meeting, it sort of kills the
motivation sometimes for the day.
And, you know, if you had continued for just 30 minutes, you would have fixed it.
But if it's broken by something in the middle, you'll be gone.
So how I try to do this is that I actually deliberately block my time in the morning before
lunch.
I actually block it out with meetings, my own meetings, so that I can actually use that time
to get in the flow.
Depends on when your energy level is highest.
For me, it's actually in the morning.
And then I actually have, I say that when people want to ask for a meeting, I say, oh, sure,
let's do it after 3 p.m.
If you're okay with it.
Because after 3 p.m., I mostly can't do deep work anyway.
So I think that's useful to be aware of.
Yeah, it's really interesting.
And I agree with that.
Paul talks about if you're on a manager's schedule, what you do?
You go from meeting to meeting to meeting.
And if you've got an hour gap in your day, you know, oh, you could just meet with somebody
else.
Maybe that's like a time to just set up a meeting so you could get to know somebody and dig in
with that person or the team or the project.
And that's fine if you're on a manager's schedule.
But if you're on the maker's schedule, maybe you do need the whole morning uninterrupted so
that you can get into that.
You know, like, you know, you've had a good session when, you know, you've been programmed,
program, and then you stop for a second.
And you're like, wow, I'm hungry.
I really have to go get sick.
It's like three in the afternoon.
I forgot to eat lunch.
Like, that's totally possible that that happens, right?
And I would just want to say that these sessions feel so fulfilling, feel so satisfying.
You feel like you've gotten so much work done in such a compressed amount of time that, okay,
and now you can, sure, I can have office hours now.
So those sessions are really fulfilling.
Yeah.
I don't know how this is going to work out.
But after reading this and some of your other writing, I decided on my calendar, I'm just
blocking, like, Tuesday and Friday, like, all day.
And I'm just going to call those maker days.
We'll see how that works out.
Wow.
And if I can just, like, get a lot of stuff done.
So other days, I'll have more meetings.
We'll see.
I don't know.
I'm looking forward to hearing your experience.
Yeah, absolutely.
And Chris May.
Hey, Chris.
Out in the live stream says, personal productivity brings superpowers to the powers you got by learning
Python.
Totally agree.
Yep.
Yeah, awesome.
Very, very cool.
All right.
Well, I think that's probably about all the stuff that we have time to talk about.
Although, maybe really quickly, you could touch on the bottom of your homepage.
You've got a bunch of resources.
Maybe just highlight something you think that people would find valuable there.
So, yeah, I like to, again, a lot of these answering questions that people ask me.
So people ask me, you know, what your favorite papers are?
What paper should I read?
So that's the second one on the list, Applied ML, where, you know, I try to collect papers on
real-world machine learning by companies that have implemented it.
The lessons they learn.
And, you know, sometimes people ask me, you know, wow, I'm starting to get into this field.
There's so much to learn.
And that's the third link there, where I find machine learning surveys, where, you know,
people summarize what has happened in the past.
And, of course, you know, people ask me things like, you know, how do you set up your Python
repo so that you have code reviews and all that automatically or linting?
So I have things like, you know, the Python collab template or, you know, how to test machine
learning models.
And, of course, recently I wrote about how to write machine learning design docs, design documents
and, of course, I have that as well.
So, you know, I mean, some of these are Git repos.
Some of these are just articles.
And, of course, there's the email course, which is a lot of people ask me, you know, what makes
an effective data scientist?
This is the question I ask a lot of my mentors five years ago.
And I try to summarize the five lessons that I've learned in a short email course where I only
send you one lesson a day.
And, of course, there's a short exercise that I hope people will do.
And that's why I send you one lesson a day.
And that short exercise maybe takes an hour each.
And I hope that after this, it sort of opens your mind that, you know, being an effective
data scientist is beyond coding well, is beyond PhD level research, is beyond math.
Cool.
Yeah, that looks really useful.
And you also have a Papermill-MLFlow.
What do you think of Papermill?
I started using this because I wanted to run rapid experimentations in Jupyter notebooks.
And MLFlow is something that, you know, helps you track your machine learning models.
Papermill allows you to parameterize.
At least how I'm using it is I'm parameterizing my Jupyter notebooks.
By combining both of them, I have a master Jupyter notebook that has all the different params
and all the different countries and marketplaces.
I just run that huge Jupyter notebook and all the experiments are logged.
So I love it.
So I decided to make it a template that other people can use as well.
Well, yeah, people can check out all those things.
Put them in the show notes also on your website.
All right.
Well, I think that's probably it for all the time we have.
So let me ask you the final two questions before you get out of here.
You've written about two options.
So I don't know which one you're going to go with here.
But you're going to write some Python code outside of Jupyter, say, like what text editor
do you use?
I have an answer.
And I'm curious about your answer as well.
For me, I'm a diehard PyCharm fan.
I've tried using VS Code.
Just doesn't feel as snappy, as IntelliSense as you think.
I've been using VS Code for my JavaScript.
But what's your take, Michael?
Should I be using VS Code more?
Look, I'm a fan of people doing VS Code.
And I know a lot of people love it.
The style of PyCharm is exactly, it just fits my brain.
Like, I feel that it just so perfectly understands the project I'm working on, that it's the right
tool for me as well.
That's me.
And I do some Scala on the side.
And PyCharm has a Scala sister, which is IntelliJ.
And it's just me that I'm still a diehard PyCharm fan.
Yeah, right on.
And then notable PyPI project or package that something out there, maybe not the most popular,
but you're like, oh, I found this thing and it was super helpful.
Well, off the top of my head, I cannot think of anything, honestly.
But one thing that I love, that I hope people will love, is pytest.
Yeah.
All right.
Yeah, pytest is super good.
Yeah, let me throw out an example for you.
Along with this pytest idea, something that I came across recently is great expectations,
which is kind of like automated testing for the data cleaning and data validation,
both when you're pulling it in the first time as well as like production.
So there's a one to build on top of the pytest story.
Exactly.
So as of now, the things that are top of my mind, pytest, PyLint, mypy,
the things that make code manageable and maintainable, I think about that a lot.
Yeah, fantastic.
All right.
Well, that's it for all the stuff we've got to cover.
Eugene, thank you for being on the show.
Final call to action.
People are, maybe they want to get into your writing or they want to start writing and
thinking more, sort of almost become a developer philosopher type.
So what advice you got for them?
Just stop writing.
Final advice.
Why write?
Like, okay, by writing, you put your stuff online and people find you.
And this is why this podcast even happened, right?
Michael found me through my writing and we talk about and we find like-minded people.
That has happened to me.
I find so many like-minded people talking to me about machine learning and systems and writing.
And I've made so many new friends.
Do that.
And you'll make a lot of new friends online.
Highly recommend it.
Yeah, it's great advice.
I find like stepping just even a tiny bit outside of your comfort zone starts to lead
to other things.
And maybe you're not doing writing.
Maybe you're speaking at a meetup.
That's even more possible than it used to be because you don't have to travel anymore,
right?
You can reach out to meetups that are not next to you and so on.
All those things make huge differences.
Definitely.
Highly recommend.
And if you write because of this podcast, email me.
My email is on my website.
I would love to read what you wrote about.
Oh, fantastic.
All right, Eugene, thank you for being on the show.
It's been really great to chat with you about all this stuff.
Welcome.
It's my pleasure.
Take care.
Pat, take care.
This has been another episode of Talk Python to Me.
Our guest on this episode was Eugene Yan, and it's been brought to you by Retool and Linode.
Supercharge your developers and power users.
Let them build and maintain their internal tools quickly and easily with Retool.
Just visit talkpython.fm/retool and get started today.
Simplify your infrastructure and cut your cloud bills in half with Linode's Linux virtual machines.
Develop, deploy, and scale your modern applications faster and easier.
Visit talkpython.fm/Linode and click the Create Free Account button to get started.
Be sure to subscribe to the show.
Open your favorite podcast app 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.
We're live streaming most of our recordings these days.
If you want to be part of the show and have your comments featured on the air, be sure to
subscribe to our YouTube channel at talkpython.fm/youtube.
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'll see you next time.