NASA's Jet Propulsion Laboratory, JPL's primary function, is the construction and operation of planetary robotic spacecraft,
though it also conducts Earth orbits and astronomy missions, and it's responsible for operating NASA's Deep Space Network.
On this episode, you'll meet Chris Matman.
He's the Division Manager for Artificial Intelligence, Analytics, and Innovation at NASA's JPL,
and he's JPL's first principal scientist in the area of data science.
We cover a wide range of topics and dive into how Python and open source are growing in the space exploration field,
and he answers the question of whether he thinks we'll have Python running on robots and rovers in space.
This is Talk Python to Me, episode 286, recorded August 14th, 2020.
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 brought to you by Linode and monday.com.
Please check out what they're offering during their segments.
It really helps support the show.
Chris, welcome to Talk Python to Me.
Hey, Michael.
Thanks for having me.
It's great to be here, and hi to your listeners.
Well, I almost don't know where to start.
There's so many things that you have done in Python in the open source space that I think is going to be really fun to talk about.
But I think let's focus mostly on space and JPL and that, and then we'll get to what I think will be a surprisingly large and impressive list of interesting things that you've done.
And so we'll start our conversation there.
But before we get actually into that, let's just start with how you got into programming in Python.
Yeah.
Well, it's a long story.
So I came from the Java world, rewind the clock maybe, I don't know, 15 or 20 years ago.
And I grew up in a trailer in Santa Clarita.
It's about an hour north of LA.
And let's see, my childhood wasn't super interesting.
But anyways, I became a teenager.
I like to tell people, I think I had my first longer than five-minute conversation with my father when I was a teenager.
When my brother, who was out hanging out with the ladies and being an extrovert, I was an introvert,
he asked me to read the paper with him, the local paper.
And so that was nice.
I think I had longer than a five-minute conversation with him at that point.
And so yeah, so I went from there.
I played sports in high school.
I went to Saugus High.
I was 5'9 up until my sophomore year.
And staying that height throughout, everyone else got taller.
So they got to play football.
I didn't.
So I had to do something else.
I had a 4.6 GPA.
The only reason I didn't have a 5.0 on a four scale was they didn't have honors football.
So I decided to go into computers at the time.
And so I went to USC.
I couldn't afford it.
I'm still paying it off right now.
And when I was there at USC, I was sitting in the computer lab one night.
And it was my sophomore year.
And I needed money and a job.
It was like midnight.
And an email came through from a place called JPL.
Not JBL.
The headphone place.
JPL.
Jet Propulsion Laboratory.
And a real nice gentleman, Dr. Rob Raskin, was looking for us computer people to help Earth scientists understand earthquake data and other things.
And so I went for an interview.
I'd never been for one before.
I'd interned at a company called iWin.com.
That was my only other experience basically building video games and Java.
Java applets for the 35 to 55-year-old demographic of people.
It was like online poker games during that era.
So, I mean, that was nice.
That was on the West Side.
You know, of LA.
I got to be near the Miracle Mile.
I learned where UCLA was.
As a USC person, you really need to learn that.
So you can really feel the rivalry.
But it was a beautiful area over there by Mid-Wilshire.
But anyways, JPL was a nice change.
It was closer to USC and where I lived at the time.
JPL is about maybe a 15-20 minute drive into northeast LA from downtown in USC.
And so, yeah, I got a gig at JPL.
And I was like a computer programmer.
I was doing Pearl, PHP, you know, other stuff.
Building websites and databases and MySQL for Earth scientists.
And so I did that for maybe, I want to say, as an academic part-time and eventually as an employee for three or four years.
And then I got sucked into the real hardcore Java community.
I was working with folks on technology projects for databases.
I even worked for a project.
JPL was doing work with the National Cancer Institute.
We were basically putting together data for cancer detection because a lot of the stuff we did for remote sensing could be applied to that.
And so, yeah, I mean, Java was big at the time.
And my trick was trying to figure out how instead of using C and C++ to build science missions, then I eventually started working on those.
I worked on a nurse science mission called Orbiting Carbon Observatory.
And I had to figure out how to use Java.
I wanted to use Java.
I refused to use C++.
Not that I didn't know it.
Right.
But I was like, God, you know, go ahead.
I was going to say, I've gone through these same stages.
Not with Java, but with .NET.
Just like, you know what?
I know I could do this as a C++, but I'm really over just all the pain and the hoops and the page faults and all the stuff that I just don't care about anymore, you know?
Oh, my God.
Same thing.
I had done nachos for operating systems.
That was the Berkeley, sorry, Stanford little tutorial project on how to do it.
I learned multiprogramming and memory management.
But who the hell wants to do that regularly?
And so I was like, Java does this for me.
It's being shoved down my throat.
Let me accept and assimilate.
So, yeah.
So my gig was my big thing I cut my teeth on and became kind of known at JPL was that I forced us to basically use Java to implement a ground data system for OCO, the Orbiting Carbon Observatory in 2005.
And so my trick there was, okay, all the prior Earth Science missions, say, took in 10 years, 10 gigabytes of data.
And they ran on order in terms of their processing, their daily processing for jobs to produce data, maybe tens of jobs per day to produce that 10 gigabyte record over 10 years.
And so OCO was basically, okay, we're going to take you into the realm of 10,000 jobs per day, daily workload.
And then it was going to generate 150 terabytes of data in the first three months.
And so I actually looked at the C++ system that we built before to do this.
And I was like, you know, it was tied to a database.
It was tied to, like, I don't want to say Oracle, but I think it was like, it was tied to Postgres.
It couldn't run without a database running.
All the configuration was in a database.
It was like single processor, everything else.
And I was like, this needs to be completely rewritten.
And at the time, I had hung around at USC to get a master's degree.
And I had a really inspirational professor there during my master's, Dr. Nino Medvedevich, who ended up becoming my PhD advisor, who got me into research.
And I hung around for the PhD as well.
And so in my PhD that I was doing at USC, I took a search engines class.
And I got really into this thing called NUTCH.
N-U-T-C-H, right?
N-U-T-C-H.
And it was a creation of a guy named Doug Cutting, who was the guy who created Lucene and eventually things like Hadoop and all that whole ecosystem.
And my professor at the time wanted us to do our final projects in NUTCH.
And so mine was a really simple syndication or RSS parser.
And by the way, for your listeners, I'm going to get to the Python part.
I just have to tell you this so you can make fun of me because I started out in big, big, hardcore Java.
So I got into NUTCH.
I built the RSS parser for feeds, for Nudes feeds.
That was my final project in my search engines class.
During my PhD.
And I contributed to NUTCH.
And I got involved in Apache, the Apache Software Foundation, where NUTCH had just moved to.
And I started talking to Doug and all the other developers.
And I became friends with them.
And I became a NUTCH committer.
The funny part was my academic cousin at UC Irvine, because it's all in the academia.
There's like, who's your advisor?
He's like your dad.
Who's your advisor?
Your grandpa.
You know, you got cousins and uncles on the academic side.
One of my cousins was Justin Ehrenkranz, who was the president of Apache.
And my academic uncle was Roy Fielding, who was the founder of Apache.
And so I had this sort of Apache connection without even...
As well as REST.
The whole REST idea, yeah.
The REST architecture.
Yep.
Roy's famous for that.
So UC Irvine during the mid-90s, which was like the decade before I was doing it, was
like the place to do software, you know, big software GUI and multi-architecture development
and architecture and stuff like that.
Dick Taylor ran the group.
And yeah, anyways, he had a bunch of all-stars.
He had the guy who invented Argo UML, the guy who invented WebDAV, the guy who invented REST,
the guy who did the component connector architecture status.
So those are my ancestors academically.
So yeah, so I'm doing search engines and whatever.
I've got this connection anyways to Justin and Roy who are telling me, get involved in
open source.
And I'm like, cool, okay, I could do that.
And so I started contributing to Nudge.
And Nudge eventually became Hadoop.
And so then Hadoop became Spark.
And so I'm in the ecosystem.
I'm playing, you know, I'm contributing.
I got into search engines.
That really became a passion because I was building these big data systems at JPL for mission science.
I was like, we need to use all this Java stuff and all this ecosystem and we need to scale
and do all that.
So the funny part was, here's the Python long-winded answer.
You asked me, how did I get into Python?
In about 2009, after I had led teams, done this myself, built three mission ground systems on Java.
And we proved all the naysayers wrong that said, you can't do it.
You know, it's got to be C++.
We did a ground system on Java.
I got tired of Java.
And Python was getting shoved down my throat then.
And that was like, everybody has, at some level in their career, one or two or three eras of their career.
And my second era beyond early programming was really Java.
And so then my third era was Python.
I mean, I started to get involved.
I went away from missions.
I got involved in technology development.
And I started going to government technology development.
And in the early 2010s, 2012, during the Obama administration, there was the Big Data Initiative.
And they funded a bunch of programs, $100 million investments and things in big data.
And I was toe-to-toe in some of these programs, standing alongside of them with people like Peter Wang, Travis Oliphant.
And I started to learn.
In fact, I even funded them during a program called DARPA Memex to grow what became what was Continuum Analytics at the time, a smaller company out of EnThought, to what became now Anaconda.
And so I started talking.
And then Peter's sitting there telling me, oh, Chris, screw Java.
You know, I was the Java guy, you know, sitting amongst all the Python fields.
I can just hear Peter saying that as well.
Yeah.
What are you doing?
You're messing around here, man.
Yeah.
You know, Peter's telling me about Bokeh.
And he's like, oh, you know, Numba and all this.
And I was like, you guys got all.
And you got your own foundation, NumFocus.
Andy Terrell and I became friends.
I got Andy to come talk at ApacheCon, which was great.
They never invited me to PyData or anything.
I don't know, you know, whatever to them.
But yeah, so I got involved in that.
And so I said, I can do this one more time.
I can go deep and learn.
And so really, probably circa 2013, the big thing for me was I created Tika.
We'll talk about that later.
But that was my big thing in Java besides Hadoop and all this.
And so in 2013, 2014, we ported that to Python.
And I did that with a guy named Brian Wilson at JPL.
And that was my, I can go deep and do Python and deliver something of big value to the Python
community.
And so, yeah, around then, that's how I got involved in Python.
That's how I'm there.
Now, today, I'm doing machine learning and other stuff.
And anyways, I don't want to dominate.
But yes, that's kind of the answer.
Well, two things.
First, to get a call from JPL out of the blue in your undergrad or master's degree program
and say, hey, why don't you just drop in and just do some work on like cutting edge space
just down the street?
Like that is incredible, right?
To get such an opportunity.
And I think that's really, that's really neat.
It's a big time opportunity, Michael.
And for me, the thing I like to tell people, I've learned a lot of JPL in my 20 years there.
And a lot of people look at me and go, God, you've been here for 20 years.
I said, yeah, I'm just sort of entering mid-career.
20 years at JPL is mid-career.
Well, I mean, it's like you want to run a mission.
You got to like, that's a 20-year commitment, a 15-year commitment sometimes.
Oh, dude, you're exactly right.
And so you can see at JPL, I tell people this, you can see the people that are going to be
there for five years.
And you can see some of the people that are going to be there.
And by the way, we like those five-year people too.
We'll get whatever we can.
We can talk about that later out of whoever.
Our mission is space.
And it hit me in 2003, 2004.
The big thing was the Spirit and Opportunity twin rovers.
You know what I mean?
The first three or four years of JPL, it's awesome.
And you're just like, but you're young and you don't know and appreciate space and everything
else.
And so I was like, oh, yeah, maybe I'll go work at a startup after this.
And it hit me in the MER rovers, Mars Exploration rovers, Spirit and Opportunity.
And they send them and they land.
And I saw the landing.
I stayed up at night.
I watched NASA TV.
It was just my wife and I at the time in our new house.
We bought our first house.
And I had bought my first 55-inch TV that if you compare to the TVs, the thin ones now, it
was like as big as my living room.
And I'm like, yeah.
It has its own cooling unit.
It's own cooling unit.
Oh, yeah.
And so we're sitting there.
We're watching it.
And then Arnold Schwarzenegger comes out.
He's the governor of California.
And he's shaking hands with my friends, some of my friends who I worked with on some of
this.
And I'm like, I know.
This is amazing.
And everybody.
And then it's like the JPL.
Yeah.
You know, when we landed.
Stuff like that.
And so, yeah, that's when I was like, oh, God, I worked there.
That's awesome.
Yeah.
And I knew I was going to stay there, you know.
Yeah.
Really cool.
This portion of Talk Python to Me is brought to you by Linode.
Whether you're working on a personal project or managing your enterprise's infrastructure,
Linode has the pricing, support, and scale that you need to take your project to the next
level.
With 11 data centers worldwide, including their newest data center in Sydney, Australia, enterprise
grade hardware, S3 compatible storage, and the next generation network, Linode delivers the
performance that you expect at a price that you don't.
Get started on Linode today with a $20 credit and you get access to native SSD storage, a 40
gigabit network, industry leading processors, their revamped cloud manager at cloud.linode.com,
root access to your server, along with their newest API and a Python CLI.
Just visit talkpython.fm/Linode when creating a new Linode account and you'll automatically
get $20 credit for your next project.
Oh, and one last thing.
They're hiring.
Go to linode.com slash careers to find out more.
Let them know that we sent you.
And then number two, you talked about going deep in Python after being in Java.
And I think it's really interesting to learn a language that has all these nuances and patterns
and it takes a while to master.
I think Java does.
And then you come to Python and it's a language that, you know, one of the jokes is, hey, I
learned Python.
It was a great weekend or something like that.
And yet I've been doing Python for a long time, eight, 10 hours a day.
I'm still learning Python.
Right.
So I think there's this really interesting distinction between I learned something and I learned it.
You know what I mean?
Like I really built something meaningful in it rather than, yeah, I know how to do loops
really well now.
Oh my God.
And that's how it starts.
I mean, the loops are okay.
We're going to start with those.
We're going to start with the basic constructs in our mind.
But yes, absolutely.
Like, like I tell people this, you know, only recently do I tell people, you know, you got
the three levels, beginner, medium and expert.
And I tell people, I say, I only recently became an expert in Python.
It took me a while because to me to become an expert, you need to go deep.
And so for me, and people still tell me today, Chris, your Python code looks like Java.
Damn it.
It's not PEP, you know, certified or PEPs or whatever the hell the PEP is.
And we're sitting on black on a pre-commit hook for you.
Well, you know, I use a lot of camel case still, you know, in naming stuff.
You know, I don't use the underscore, you know, whatever.
I say, shut up.
It works.
And, you know, and to be honest, so here's my trick though.
And maybe you'll agree with me on this, Michael.
This is true in any software development language.
Even though I don't do this anymore, my PhD is in software engineering and software architecture.
I studied software development.
And so for me, I tell people, you've succeeded when you cannot just publish something to open source and say, oh, I did it.
And it, but I built it.
I'm still the only guy maintaining it or gal.
And you've succeeded when not only you've put it out into open source, but you've convinced somebody else that it's worth their time to build on your library.
Yeah.
And to do something with it.
And to me, you've only achieved that level of mastery when you've become master of the programming language as well.
But also when some of that mastery is also knowing where to bend and break, how to configure, what sensible defaults are, and how to componentize something in a way that not everyone will love.
But, you know, you can get at least a few people to love.
And that's how you succeed.
Yeah, I totally agree.
And so much of, I built this thing the right way.
Right way often is somebody's perception of, like, their context and their use case.
Like, we built it the right way because we're Google and we have a million requests a second versus we built it the right way because we're a startup and we have 100 users, but we're growing.
Those two things should not look the same, probably.
You know what I mean?
Absolutely.
Best captured in the multidimensionality problem when you talk today about big data and they talk about the five Vs.
And so for a long time, people thought big data just meant volume or velocity.
Yeah.
But the reality is, like what you just said, it's a perfect context.
Like, hey, variety matters.
Veracity matters.
Value.
Your value stream matters.
And so that's the only thing.
And at Apache, we used to have these huge debates.
I became on the board of Apache.
I was hung around for a while.
They suckered me into doing it.
And I did it for five years.
And, you know, it was a great experience.
But I used to sit there in these, like, discussions with, like, the big data companies who...
Apache is a great place for them independently to kind of have a DMZ, build software together without wearing their company hat,
and to achieve some general framework consensus that doesn't disrupt the value stream for people downstream who want to do stuff commercially.
And I'm very supportive of Apache's mission and what they do.
And a lot of open source foundations.
I became friends with a lot of the founders of that during that time.
And so the thing I used to sit, though, is, like, you'd get the LinkedIn people who made Kafka initially and donated it to Apache.
And they'd have their way, like you said, it's like the Google way.
It's like, well, this could only be good if you test it on a million computers.
Or we're not going to accept this dude or gal's patch from, you know, this other country.
Because, you know, they tested it on their laptop.
And it doesn't pass our massive scalable test.
But I'm like, yeah, but it adds a feature.
Just do it in a branch.
Isn't that what source card control is for?
Get the person the value for contributing.
Don't let it sit in a ticket system forever.
Because then people go away.
And your real goal is to capture everybody's interest and contribution in the moment that they're interested in.
Either they've got the time and their free time, their company's paying them to do it.
And time is the thing that you learn is really the last precious resource.
And that's it.
Time, we're never going to get that back.
You can get a lot of other things back, but you're not going to get time back.
And that's the key to open source.
Yeah.
Jason Fried from the Basecamp 37 Signals crew has a great saying that inspiration is perishable.
Right?
Like, if you're currently super excited to add this feature to that thing, but then maybe you work on it, then the PR just sits there and gets ignored.
Like, you're done with that product.
Like, you're now done.
Right?
But you could have really done a lot of interesting stuff if they captured that two-week period or whatever where you were on fire about it.
Yeah.
I've got a good story real quick that I'll share with you and your listeners.
It's the Nutch Project.
So Nutch was dead post-Hadoop.
A lot of projects were dead post-Hadoop.
And the reason for that was that basically, when Hadoop came, everyone...
It was a new hotness and everyone wanted to go work on distributed systems.
They were like, oh, this is what Google did, MapReduce, and now it's open source.
Oh, boom.
And they all went to that.
And they all left us in Nutch.
And I was one of the people holding the bag after that.
And we had in our Jira and our whatever system...
I can't even remember.
I think we were still using ReviewBoard at the time.
But we were using ReviewBoard and Jira.
And we probably had 100 patches.
And we had from people that were just sitting there.
Some had been sitting for two or three years.
And basically, because the interest and the community of committers left that could actually
merge the patches, they just sat there.
And so we had one gentleman, I won't say his name, but he had been contributing probably
50 patches and still trying to get something in.
And he was running a web crawler company in the UK.
And finally, I was just like, you know what?
Because we had these standards in Nutch that had been imposed on us by the Dougs and the
whatever.
Doug's an amazing guy.
And I get it.
I get why we're doing it.
But what I did is...
The guy reached out to me, the guy in the UK, and he's like, are you ever going to merge
my patches?
Because this is BS.
And you're really making me hate open source.
And so what I did is I said, you know what, guys?
I know we have all these rules and blah, blah, blah.
But none of you around, none of you are doing anything anymore.
Here's what I'm going to do.
And I just merge all of his patches and figure out how to do it and get it in there.
Nutch is still alive today because of that.
Because we got that guy interested.
He pulled a couple of other people that he was working with in and is like, oh, God, the
floodgates are open.
We can develop again.
And then I just let them take their...
I haven't done anything in Nutch in years.
But the project's alive today because of that.
And so you've got to capture absolutely as a scarce resource, like you said, motivate.
What was that RSA animate video about purpose, motivation?
And that's such a great way to capture it, too.
It's the same thing.
Absolutely.
So these days, you're over at JPL, and you have some really interesting things going on
there.
You're the first principal scientist in the area of data science.
What's the story there?
So JPL has this thing called the principal designation, which basically is somebody that's normally
been there like 50 years.
And so, you know, I'm just joking.
No one kill me for that, please.
But it's been there for a long time.
And usually our principles are in...
We've got the founder of hyperspectral there.
Guy Rob Green.
You could argue he's the founder of the field of hyperspectral science.
We've got people who explore.
You know, we had the guy who used to be the project scientist for the Square Kilometer Array.
Huge billion dollar international project of ground-based sensing, looking at the cosmos and
answering the tough question.
That one has so much interesting stuff in terms of how much data it has.
I had some of the folks on from Australia on there to talk about that.
It's kind of my...
Like, you can't put it in hard drives.
It's so much data type of problem.
So, yeah.
Oh my God.
700 terabits per second.
I used to...
In the 2010 to 2015 timeframe, or 2016 even, that's all anyone ever wanted to hear from me
is that I had some peripheral involvement in that.
And they're like, talk about that, you know?
Yeah, yeah.
But we've got the guy that was the project scientist founder of that at JPL.
So, I mean, those are our principles usually.
And so, yeah.
So, in 2014, they gave me that title because they realized that in data science, a lot of
the stuff, data science was becoming something that basically we were developing a maturity,
a skill set, and a capability.
And JPL actually needed to go triple down and quadruple down on that.
And so, what it means, yeah, is that all the experiences they have, I talked to people
like your great podcast, Michael, and others.
I'd sit there and talk.
I needed to talk and evangelize to that at JPL.
And so, that was the recognition.
I was an individual contributor still then.
And I basically just would tell people, here's all the stuff with data science.
It's science.
It's math.
It's...
Around that time, I wrote a paper in Nature called A Vision for Data Science, too.
And people like me don't normally get papers in Nature.
Yeah.
That was a big deal.
And basically, I was thinking a lot about data science and how...
You'll like this.
I had this sort of dichotomy in education at the time.
I'm a PhD computer science software engineering person who, after about a decade at JPL, learned
hyperspectral remote sensing, why Western US water matters, cared about the cosmos and the
SKA.
And I even thought at times about getting master's degrees, but kids, mortgages and other things,
other interests got in the way, which is important.
But I was sitting there thinking, how many of me at JPL make it to me, time, being there
for 10 years?
And any software engineer that we hire five years at JPL before they learn the lingo, and
it's really hard unless they only live in IT.
Or what we were seeing at the time was an emergence of PhD atmospheric scientists or PhD
computational biologists or whatever who learned Python, believe it or not, could write code,
understood what logistic regression was, and whatever.
And we had this emerging class of them as data scientists.
They wanted to share their code.
They wanted to work with the software engineers.
As opposed to really, and this is going to sound ageist in a way, but it really isn't.
But as opposed to sort of the generation before who didn't want to share their data, they wanted
nine-month publication moratoriums.
To them, they wanted to file a patent instead of making open source code and things like that.
And there's still the evolution of those folks into the new generation today.
But I was looking at that sort of, I'll call supply chain in the education community for
data science.
And I was asking myself, what's better?
Is it the Python person, highly skilled in deep discipline domain, that their software
engineering code isn't that great?
But if we pair them with a master's or PhD level software engineer, they could clean that
up.
And then over time, they'll learn it.
Because like you said, everyone starts out with Python, but it doesn't mean anyone's going
to contribute to their code.
You know?
And so I was actually seeing more on the PhD atmospheric science side of people in Python
being more useful in data science.
And so that's really one of the questions I was asking in that nature paper.
And one of the things that I still don't have an answer to today, but we've seen different,
I'd say, momentums.
And it's not just at JPL, in how we source the talent.
And the same is true today with AI, AI engineers and things like that.
Yeah.
Well, I think one of the really interesting questions is, do we need more software developers
or do we need more experts with software development capabilities, right?
You hear the politicians and policymakers go on and on, like, we need to teach coding because
we have all these coding skill gaps and whatnot.
And I think often at that level, it kind of gets portrayed as, so what we need is more computer
science graduates, right?
But my theory is what we need is amazing biologists, physicists, doctors, lawyers who can take whatever
they do and really amplify it with a little bit of code.
And I think that's why Python is so powerful is Python is one of these special languages where
you can be effective with a very partial understanding of even what it is or what it does.
You don't even have to know how to create a function and you could be useful in Python.
A hundred percent.
A hundred percent agree.
That was the conclusion of my nature paper at the time.
And I'm trying to be diplomatic, but let me say something controversial maybe to generate
clicks.
Yeah.
I completely agree with you.
And it's heresy in my community where I originally come from, but I don't read transactions on
software engineering anymore.
I'm sorry.
I don't only stay in the software engineering community and computer science.
And so for me, I've noticed the same.
My direct experience in both building big software projects for big, big national and international
things and sourcing over hundreds of people at JPL and in consulting roles and other things,
I've come to the same conclusion.
I completely agree with you.
Yeah.
And that's not to discount computer science degrees.
I think it's, there's a real important role for good software developers with all the
practices in place there.
But I don't think we need 10 times of those.
I think the value would be better if we brought everyone sort of into that camp rather than growing
that in that isolated camp.
So, yeah.
Totally.
And you can relate it back to the Twitter hashtag campaign, the learn to code and why it generated
so many, I think, hate on both sides of the political aisle with that.
One of the challenges with that, let's talk about this.
We're going to have a big, there's going to be a big AI skill gap.
And people ask me about this all the time related to AI ethics and other things.
So anyways, for your listeners, after all the software development and Java and big data and
whatever stuff.
Now, I'm just a guy that keeps reinventing myself.
I got into AI and ML.
Last five years, I've been doing that pretty much a lot.
And so, yeah.
So I'm going to make a bold statement that's been said before.
So I've got air cover.
In the next year or two, a million truckers are going to be displaced because really smart
cars are here and smart trucks are here and they will drive.
And especially the pandemic is accelerating some of these things.
And so as that happens, the learn to code like, oh, we're going to take all the truckers
and make them software engineers.
I think I've developed a happy medium between that and what you and I just said.
We're not going to make them software engineers.
Let's glean SME knowledge from them.
They understand the business.
They understand the value stream.
Pair them with, say, domain discipline, non-computer scientists, but say people that want to model
the weather aspects of that, the computer vision aspects of that, the supply chain aspects of
that, that have that plus some Python code.
And I think those truckers still have jobs.
Yeah.
If you tell the truckers that the Chasm is becoming a Java or hardcore Python developer,
the Chasm is too big.
But if you tell them your job is to sit here, click on this tool, we'll capture your domain
knowledge and labels, and you're going to interact with really high power.
We could do that.
You know?
For sure.
Well, I think also the difference is, do you tell them your past 15 years of experience has
no value, go back to zero and learn programming and then go work for a marketing company versus
we're going to take what you're already really good at, what you actually have a ton of experience
and are uniquely qualified for.
And we're going to teach you a little code to change.
You're going to build the robots instead of, you know, be replaced by a robot.
That's exactly right.
So that's the win on all sides.
And that's the way it's going to move forward.
And I see some progress on that besides the initial, you know, everyone thinks Twitter is
real life or, you know, everything you read on the news is real life, you know, until you
live real life and you talk with people.
And so anyways, I've seen the people that are making progress in that area doing what you
just said.
I think that's really great.
And just for people who maybe are not aware, like you pulled out this trucker thing, like
that's a, maybe an odd example.
Truck driver is the biggest single job category for men in the United States, probably many
places in the world, but I only know the data for the United States, right?
That's, that's significant.
Absolutely.
And it's a big industry.
Actually truck drivers, you know, some people look at this, they learn about, say, you know,
law enforcement or, you know, and this, I mean, especially in the latest news and all
this, you know, this is a big deal and everything is like, Oh God, I didn't know.
You know, law enforcement made X, Y, Z money, or, you know, they think of it as sort of unskilled
labor or things like that.
A lot of folks, but they actually are well compensated for what they do.
And actually truck drivers, besides being that statistic, like, like you said, I learned something
new every day.
One thing I do know related to that is that they are also well remunerated for their services
and things like that.
And so the challenge, the other economical challenge is to say, Hey, truck driver, like you said, your
15 years of skills are gone.
And Oh, by the way, the maturity that you developed in those skills to achieve that salary,
you know, and things like that is also gone.
That's a bad lose on all sides.
Yeah, it absolutely is.
But I do think there's more positive fast forward.
So hopefully we can go that path.
This portion of Talk Python to Me is sponsored by Monday.com.
Monday.com is an online platform that powers over 100,000 teams daily work.
It's an easy to use, flexible and visual teamwork platform beautifully designed to manage any team,
organization or online process.
Now, for most of us, we missed our chance to build the first apps ever in the mobile app
stores.
It was a once in a lifetime opportunity.
It was a once in a lifetime opportunity, but it's one that's coming around again.
Monday.com is launching their marketplace and running a contest for the best new apps featured
right from the get go.
Want to be one of the first in the Monday.com apps marketplace?
Start building today.
They're even giving away $184,000 in prizes, including three Teslas, 10 MacBooks and more.
Build your idea for an app and get in front of hundreds of thousands of users on day one.
Start building today by visiting Monday.com slash Python, or just click the link in your podcast
player's show notes.
So let's talk about Python at JPL.
I think there's some interesting angles, especially around some of the remote stuff.
A lot of things you guys do work with like rovers.
You talked about spirit.
Just to have a conversation with those things is like it.
We complain about latency, you know, like that website was slow or I was playing this game
and it was hard because there was 200 milliseconds of latency.
There's different kinds of latency out in space, right?
When the speed of light is not enough.
So taking some of the smarts and putting it on like rovers and other stuff, some of this
AI work that you're doing, it sounds like it might have some legs.
Hey, I hope so.
And we think it does too.
So Michael, basically the work that we're doing for your listeners, we have a project
that we've been investigating now.
So let's fast forward the clock.
So rovers nowadays, the last one that landed on the planet, I won't say that we shipped
because we just shipped one, which we'll talk about called...
Right.
Just a couple of weeks ago or something, right?
We did.
Pandemic shipping and launching of rockets and rovers.
It's the new fad.
But yes, for pre that, pre-pandemic in 2012, we shipped the Mars Science Laboratory or the
Curiosity rover.
And that one is about...
So Spirit and Opportunity, just the size them for your listeners.
It's about the size, like if you have kids of one of those cars that you push, maybe, or
something like that, or maybe like a power wheel, big wheel type of thing.
That's the size of Spirit and Opportunity.
The MSL rover is about the size of a small car, like a Volkswagen bug.
And if you came to JPL and it was open and love to have you someday and things like that,
you could walk into our building 180 and see a full scale model of it to really get the feel
of it.
But that's the size rover that we're talking about now.
That's sort of the modern class of them.
And so 2020 is the Perseverance, the one we just launched.
It's the same size.
So we've got MSL still operating.
Spirit and Opportunity aren't anymore because they were solar powered.
MSL is powered basically by nuclear fission, uses an RTG power source and things like that.
So it doesn't have to worry about solar panels.
So it can go for quite a while and has been.
So it's a great test.
Basically, as long as it mechanically is still functioning, right?
Absolutely.
And so challenges with mechanical functioning are like, hey, we learned a lot about the
wheels from like a car size thing as we drove over walks and it tore the wheels up, you know,
and things.
And so we did.
We learned a lot about them.
If you look at one quick update in 2020 is that the wheels have little Homer Simpson speed
holes or not speed holes, but holes to prevent having just track and tread that dies by catching
on everything.
And that's just one thing we learned amongst other things.
We got smart engineers at JPL.
But MSL is a great platform to test stuff out on.
However, let's talk about AI and ML.
I'm going to dispel some myths and rumors.
So MSL and space assets and others, they all need, right?
We got to do computing.
We need a processor and a board and things like that.
They are running off of an old.
What is it?
The latest GPU?
Probably like a NVIDIA, like 2080.
Something like that.
Yeah.
Everybody thinks that.
And I know you're being facetious.
And that's why I like the snark.
It's awesome.
But yes, no.
And that's the challenge.
Everybody thinks that.
And it's not.
It's running off of a RAD 750, which is a BAA chip that's about as powerful as a PowerPC
chip and iPhone 1 processor.
And so, and why?
Real quick, why?
Right.
When we crash something in the government, we've got a congressional inquiry that we
have to respond to.
And when this commercial companies do it, and we love the commercial companies, we're partnering
with them now, they don't, right?
They can, I mean, not to say that it doesn't ruin their value stream or their reputation or
things like that, but they've got a little bit more flexibility to do testing and stuff
like that than we do.
And so we are risk averse by profile and definition.
And so because of that, we will only use things that are what we call radiation hardened.
Yeah.
Which means that when it gets up there into space, a space does in cosmic radiation, do
weird things to your hardware.
They flip the bits amongst, that's like the easy stuff they do.
They do a lot of other nasty stuff.
And so you got to make sure that the hardware works in space.
And so because of that, the technology, the Gartner lifecycle for what we could use, you
know, for that is real behind.
And so this big smart, I mean, this big potentially smart, you know, and it is smart.
They did great things on MSL and they're going to do even greater in 2020 is running off
of an old processor.
So all of the AI and ML is human in the loop, even more so.
Coupled with the fact that you alluded to.
Hey, you know, bandwidth, latency, you think that's an issue?
The light time from Earth to Mars is eight minutes round trip.
So anything you send to Mars, you got to wait eight minutes to figure out what the heck happened
or even what happened for your report back.
And you know, that's not, it doesn't all have to be synchronous.
There are asynchronous ways.
There are ways to kind of achieve some advantages and cue things up, but it's still, it's eight
minutes basically.
And so because of that, there's a great video on YouTube, by the way, for your listeners,
if you haven't seen it, it's called the seven minutes of terror.
It's really kind of closer to eight.
Yeah.
That's a great one.
Yeah.
That's for the entry, descent and landing.
When they landed MSL Curiosity, they had to use a big sky crane instead of the typical
big balloon, wrap the rover in a balloon and let it bounce, which was the way they did it
before.
It was so big.
They had to have this elaborate sky crane thing.
And in that seven minutes, when you go into entry, descent and landing, there are seven minutes
before you knew, Hey, what the heck happened?
And all this stuff had to happen, you know, autonomously and things like that, which is great.
But yeah, normally eight minutes.
And so if I told you today that the Mars surface operations people use about 200 images a day
that are taken from the rover from its nav cams, which are cams by the wheels and its mass
cam, which is the big head that takes selfies, you know, and other things that you see with
its arm.
If I told you that today they only use 200 images to plan what to do for rover operations the
next day, you'd understand why we're bandwidth limited.
We're limited on what we can process on the rover versus sucking them down to the ground and
making decisions.
What if I told you tomorrow, we'll get close to that Nvidia chip?
Maybe not exactly.
But there's efforts called high performance spaceflight computing to build a multi core
GPU like chip that is radiation hardened.
It's a big government project that has an emulator already and that they're making.
And that we also today have Mars helicopter on perseverance, which is a little drone that
went along with it that if successful, is running a Qualcomm Snapdragon, which is a GPU like
chip.
And why are we it's not fully radiation hardened and all this it does.
We've tested in whatever, but it's not like has the years and years of testing.
Why are we doing that?
Because it's a technology demonstration and we have a bigger like the mission is still successful,
even if Mars heli, you know, is not successful with that, which we call ingenuity.
Right.
And I suspect that the risk to a little drone helicopter thing, the highest risk is not
the hardware getting messed up from radiation.
It's like it got caught in the wind and it just crashed.
And well, that was nice, but it's upside down.
So there it goes.
Or there's just so many risks.
It's probably just considered mostly expendable.
Let's try this.
It's small and it'll be cool.
Exactly, dude.
And all the dads in the world just knew what we were talking about from their drones.
They were given a couple of Christmases ago.
But yes, like your drone is going to flip upside down.
It's going to do, you know, all the nasty stuff that you don't think about because driving
a drone is hard.
But apparently, you know, JPL is pretty good at all this stuff.
So we have a really good feeling this will be successful.
But yes, so those will have GPUs ish and we can do some stuff.
So a couple of things that your listeners and you might care about that we're doing.
So we have a task to do killer apps given the new GPU environment for future rovers.
One of them we call Drive-by Science.
We take Google's show and tell TensorFlow image captioning model, which I don't mean to just
jump into tech speak, but basically uses a labeler for object labeling, which is a head
that we call, you know, it could be ResNet 50.
It could be VGG 16, which is given an image, what objects are in it.
And then it uses...
That's a rock, that's sand, that's a ledge, that kind of stuff, right?
Bingo.
Don't go over the ledge, by the way.
That's the second part, which is the language model, which we use an RNN or an LSTM, a recurrent
neural network or a long short-term memory network to basically learn the language surrounding
those labels.
Ah, this rock is close.
Bedrock is far away.
This planar surface is, you know, there are three objects in this planar surface and things
like that.
And those are all language properties that an LSTM and an RNN, when you hook it to basically
an object detection network or a CNN, a convolutional neural network.
Basically, given an image, I can emit a human language sentence about it.
Now, what...
Or a caption about it.
Now, what's the value of that?
The value of that is that text is cheap.
It's a lot smaller than images.
And so instead of 200 images today on that very, very, very thin pipe, I can send you
a million captions if I can run the image captioning model on the rover.
If I can run it on a GPU or if I can run it on a heli and things like that drone asset.
So that's drive-by science.
That's make the rover not miss science when it's driving and we got to wait, you know,
those eight minutes.
Yeah.
And so that's very helpful tomorrow for people.
The other is also another image recognition problem.
It's called energy-aware optimal auto navigation.
You know, say that five times fast.
But the idea is that when the rover's motor, hey, even though it's RTG and things like that,
we still want to be...
It's got to sleep for a while and recharge, you know, and stuff.
And so we want to be efficient with its time.
And so when we do that, we want to know if in the distance, we're going to drive over sand
or we're going to drive over rocks.
Because if it's sand, just like your car, it's going to have to expend more energy from
the motor than it is if it's going to be rocks and the wheels are going to catch better.
And so we do image recognition with that using a similar network.
And then we develop a motor power profile from that based on what we're seeing.
Yeah.
So that...
Yeah.
Because if you say, I want to go inspect that canyon, go there.
It would be great if you could get there twice as fast.
That's exactly right.
And so today we've got car-sized rovers because that's what we got 50 million instruments.
I don't have 50, but we have 20 instruments or so.
It's a big laboratory that we want to do experiments on, you know, and stuff.
In the future, with Mars sample return and other profiles and missions, which I'll talk about,
MSR, that has something called the Fetch Rover.
What 2020, the current Perseverance Rover, is going to do as it's drilling cores and analyzing
stuff, it's going to drop tubes on Mars that a future mission, MSR, Mars sample return that
has the Fetch Rover, which is a much smaller rover that's going to have to drive way, way
farther if successful.
And now this is a collaboration.
So it'll go around and pick up these tubes and then return them to us.
Bingo.
And it's going to take the tubes.
It's going to take them to a spot, drop the tubes off, launch the tubes up into space to
an asset, and then take that asset back, you know, on the journey back to Earth and get
us samples from Mars.
It's an amazing mission.
Yeah.
We have a lot of the technology we didn't have 10 years ago when they envisioned this.
It will be successful.
And I'm going to go out there on a limb.
And so, but yes, those rovers, those rovers like the Fetch Rover, they need energy aware
optimal auto navigation.
They're going to need it.
It's going to be a much smaller rover, possibly RC car, not maybe that small, but maybe like
a bigger RC car type of thing.
It's going to be, or maybe two of them, it's that size rover.
It can drive much farther.
And so energy where optimal auto navigation is real big.
And so is drive by science, even though it's not going to have all the instruments on it,
visual, optical, things like that.
All the deep learning models that are built terrestrially today, we can leverage those.
So that's really cool.
The nuclear power versus solar power seems like something that's almost required.
If you're going to burn that much energy running high end GPUs ish, as you put them, right?
You don't want to burn up all your solar energy for the day, trying to figure out where you
should drive.
Yep, absolutely.
And so they estimate that.
So the trade on that is going to be how they pack that energy profile in there.
But there's a lot of smart, again, with all the advancements that are happening in
the smart car and other industry and things like this for how to do power in an efficient
way and different cell technologies and stuff like that.
We're not.
That tech is here today, which is good because we're in phase B of that, which is there's
an A, B, C, D, E, E's, you're operating the mission, A's pre-phase A and planning.
We're already in B.
We're partnering with the Europeans.
They're now building the rover on MSR.
We're working together.
And so, yeah, we're going to need all that.
Yeah.
Well, that sounds like a really cool project.
Do you see Python running on Mars potentially?
Or would this be like something lower level?
I think Python could run on Mars.
They told me 10 years ago, Java could never run on Earth to power a ground data system.
And we figured it out.
It did.
Yeah, it did.
Python will run on Mars.
So I guarantee you, so Python today, if we take the emulator stuff that we're doing and
also the stuff we're doing on the Qualcomm Snapdragon, Python is running in those environments
because we're using TensorFlow Lite.
The hardest part is the magic too is like, oh, we got all this deep learning, you know,
bring it into this embedded processor and then everything breaks, right?
Your model, you got to quantize the weights, you know, like you don't have the same floating
point units.
Wow.
What a pain.
And you know, Google knows this and they're making a lot of investments to make this easier
with the ecosystem.
So is Facebook and PyTorch.
All the places are NVIDIA.
They're figuring out they need to make that ecosystem process a lot easier for deployment
because everyone's just assumed capacious everything and infinite everything.
And that's fine.
That's where the value stream for these products came from.
Especially when they come from the cloud where it's just scales up and you know, we'll just
throw machines at it.
That's right.
And so yeah, that's the biggest challenge right now is, but yes, today Python is running
on HPSC emulator with TensorFlow Lite.
We've got it working.
We're running these models.
Basically, instead of using ResNet head and stuff like that, we're using like mini versions,
like mini models of that, like tiny ResNet and other things that have quantized, you know,
weights.
You trade accuracy.
But the real thing that this is driving, and this is a big research area I'm in right
now is what's the least amount of labeled data, how quantized weights and things like that
to still achieve?
And what are the limits of learning?
What accuracy do you need that you can trade that you can give some up on for that and still
achieve the results you're looking at?
You'd be surprised at some of the results.
Like you don't need these insane accuracies like you're better than human results.
You just need really good results and things like that.
Yeah, especially with what you're trying to accomplish.
It doesn't have to be completely accurate.
If it can just do better, it's a win.
That's right.
Talk Python to me is partially supported by our training courses.
How does your team keep their Python skills sharp?
How do you make sure new hires get started fast and learn the Pythonic way?
If the answer is a series of boring videos that don't inspire or a subscription service you
pay way too much for and use way too little, listen up.
At Talk Python Training, we have enterprise tiers for all of our courses.
Get just the one course you need for your team with full reporting and monitoring.
Or ditch that unused subscription for our course bundles, which include all the courses and
you pay about the same price as a subscription once.
For details, visit training. talkpython.fm/business or just email sales at talkpython.fm.
Let me ask you just really quickly about what else you see Python doing in JPL that you think
is interesting you want to share.
And then I'd like to talk just like a couple of the other things that you were involved
in that I think were interesting.
So I think Python has real deep depth in data science at JPL.
Jupyter is now, you know, Jupyter notebooks is the lingua franca of the way that we share
data science with people.
I've got in my division.
So I lead the department now.
So I'm even, they took away all my keys to tech and I'm not supposed to do anything.
That's why I do these interviews with you and still do open source so I can do some tech,
you know, and be involved.
But my people that are doing the tech now, again, like when they show me something, they
show our stakeholders, something, business people, things, they jump into Jupyter.
And that used to be...
It's not like a PowerPoint picture of what they drew and then they could talk about the
code, but like here is the live thing, right?
They did.
Here's the live thing and they show it.
You know, we have demonstrations to partners and various industries and things.
We've got the space demonstrations and they're jumping straight into that.
They're showing these amazing visualizations, tabular statistics, and they've got the data
story.
And so one thing I tell all the people is you got to become visual storytellers nowadays.
You got to be able to communicate.
And Jupyter is perfect for that.
Pandas, the whole ecosystem, MapPlotlib even, but also Plotly and how you can embed like Bokeh
and some of these things.
Anyways, all that ecosystem for communicating data science is big.
And then there's such connection between Python to the cloud community and whatever too.
The funny joke back in the Peter Wang and Travis and I days and Andy Terrell was,
you still need us Java people because all your Python does are their thing clients to
our Java server.
Yeah.
That's not totally true today.
It hasn't been sort of fully supplanted.
I would say there are still some cases where that's still true, but Python has come a long
way in its ability to support big processing natively in Python.
And especially if you're doing deep learning, but even for more practical workloads and non-GPU
workloads and stuff, Python's come a long way.
And so there's still very, very deep, I would say, infection of Python into JPL, not just in
the specialized domains and disciplines, engineering and science, but we see it in IT.
That's where I live now in IT.
I used to be the deputy CTO, but now I'm division manager for AI and I report to the CIO and manage
these people.
But it's now infected Python into business.
It's infected into even some of our programmatic directorates.
Like you said, you got the managers, the solar system exploration managers that will jump into
a Jupyter notebook to show you something.
Right.
And so that's really told me that it's become really material.
You know, and again, we're not having the Python as good battles anymore.
And that's why I also believe Python will make it onto the rovers and into space, because at
that level, if it's sort of infected into that domain, all areas of your business, it really
is there.
And so I'm sorry, Java community.
I love you.
I still do stuff with Tika every now and then, but it's been a while, but I do Python now.
You know, I had this really weird experience long ago when I learned Python and I'd come
from C#, which is C++ and then C# and then Python with JavaScript sprinkled in.
And I think C# is a pretty good equivalent to Java in terms of like how the language looks
and works.
Thought starting a battle between those two things, right?
But I think like just compared to Python, like those are sort of coming from the same space.
When I went to Python, it was really weird to me that white space mattered, that there wasn't
like a curly brace type thing.
Like I didn't miss the semicolon.
That was fine.
Like an if statement didn't have parentheses around the condition.
Like, gosh, that is weird.
That is like almost every language I've worked with from scheme to C++ to C to they all, they
just, to me, that's what language meant, you know?
And like, it was my paradigm was this must be part of the programming languages, all these
sort of structural symbols, because everyone I worked with that was a real language was like
that.
And so I came to Python and it took a week or so to get comfortable.
And then I was like, I'm kind of okay with this now.
It's fine.
Like the editors are super smart.
So they kind of like build the structure for me anyway.
I hit colon and enter.
It'll auto indent.
This is great.
And then I went back and I thought it would be fine to work on some project that I'm still
working on.
And I'm like, why are these symbols here?
I used to think they had to be here.
Now I'm typing all this junk.
And literally, it's not necessary.
Like, it's literally not necessary.
Why am I doing this?
Right?
Like you could have the if statements without the parentheses just as well.
There's just so many things.
And I really like you talk about like, I don't do that much Java anymore.
And there's just like this comfortableness to work in this space.
It was unexpected to me, I guess.
100% same thing.
And the real evangelist for me, I want to give credit to him, was a guy named Sean Kelly,
who was a member of the Plone Foundation board.
And Sean actually has been a contractor engineer for us at JPL for a long time.
For your listeners, JPL had Larry Wall, the inventor of Pearl.
Actually, he was in my old section.
And when I was there at the time, but I was young and I didn't know him.
So for those of you.
But we had Sean Kelly, who was one of the founders of Plone, which largely, I'd say,
Plone is still developed, but other CMSs have come.
But Plone was like the thing.
It became a foundation for a while.
And Sean was heavily involved in Python and PSF and stuff like that.
And so his thing for me was, Chris, you got to get on this.
He had been telling me for years, you got to get on the Python drug and the same thing.
So I get on it.
And he's like, you won't miss all the stuff you just said, Michael.
You don't miss somebody calling you out.
So then I'm still co-developing a lot in Java and Python at the beginning.
And I'm going back and forth.
And I'm just like, oh my god, it is so bloated.
I can't stand this anymore.
Like, oh, you know, this is a waste for stupid curly braces.
And this is just a waste.
And then also, one thing that Python does is it almost makes you think more executive-like
in a way I think about that.
It's bullets.
The reason that tabs are there is it's like bullets.
It's indent this.
It organizes your thoughts in just a more natural way.
Whereas the structure in Java and other more verbose languages is imposed through you having
to sort of renumerate it.
But this is life.
I mean, over the years, what we have in an IDE now didn't exist before.
And actually, the way I learned to program, and maybe you, and I still think this is a
valuable skill, is I still go into VI, instrument the code.
I don't even use debuggers because they really sucked back in the day when I learned.
I mean, GDB was there and other things, but the debuggers weren't that great.
And so I still, guess what, people?
Instrumentation in any language and printing stuff out and values of your variables works
independent of any debugger.
And so people look at me nowadays, too, and they're just like, oh, God, you still do that?
I'm like, yeah.
And it works.
And I still managed to be hyper-efficient.
So some of these basic constructs, but again, the tooling, the IDEs, and all of that, they
eventually supplanted.
I think Python is a natural evolution of language.
Everyone tells me Julia is the next thing.
Actually, my PL people at JPL, my programming language wonks, who are just amazing.
Some of the best people in the world are like, oh, Julia, Julia, Julia.
And I'm like, it's great.
It came out of the DARPA X data program.
I was a part of that.
I know all the people at MIT that made it.
It's fantastic.
It's growing.
It is not Python.
Python has now become, it's not just scientific cool, it's enterprise.
And Python is that, I really think it's supplanted Java in many ways.
And Julia may be the next thing, but by then, I don't plan to be programming.
Sorry.
You know, I-
Maybe sitting on a beach somewhere, huh?
Sitting on a beach.
That's the goal.
Perfect.
All right.
Two other things I want to talk about.
We're getting short on time here, but just really quickly tell us about a couple of years
ago, I read this book called The Panama Papers, and it was rocking the world.
There are so many people who had been doing shady things through offshore companies and
whatnot.
And there was, I guess, someone on the inside that dumped gigs and gigs of data that exposed
a bunch of folks.
I don't remember the details well enough to go into them, but it was a big deal.
And some of your projects were involved in sort of the discovery of that, right?
Tell us about that.
Yes.
So the key was Tika.
And that was a really interesting time.
We were right in the middle of the DARPA Memex program, which was to build the next generation
of search.
And by then, I was mostly exclusively in technology development.
It was pre-IT.
I hadn't moved into IT yet.
And I was finishing out my career, really, in engineering and science and leading a team
of real rock stars, the best in the world.
Some of them who are building and have built Siri out at Apple in their future things right
now.
Some of them who have been bought by Apple for huge company values, talent buys, people
really that just went in and changed the world in search.
Every time I worked with these DARPA programs, which is why I love DARPA so much, and NASA
and DARPA work well together.
I look around the room and I'm like, oh God, I just fanboy geek out on all the people that
are there.
Yeah, I've worked on some DARPA project as well and have the same feeling.
Yeah, that's so awesome.
And so we should talk about that offline.
But so yeah, so I'm sitting there on Memex and Memex, my big goal was to build out Tika,
to evolve Tika for the next generation.
Not like full AI today, although we're in the process of really AI-ing Tika and its constructs.
But it was like the first step into AI beyond just statistical information retrieval, which
Tika does.
So what is Tika?
It's the digital babble fish.
The way I describe it is Tika is just like the babble fish from the Hitchhiker's Guide
to the Galaxy.
You put it to your ear and you can understand any language.
Tika, you give it any type of file format, any type of file that exists on the internet
that we know, 1400 plus file types and more.
Tika will extract out the text, extract out metadata from the file, and it'll tell you
information about the language of the file, which is basically everything you need to do
something with the data in the file.
And it incorporates all of the major third-party parsing libraries that are free and open source
to get that information out.
And it uses all the standard metadata models and this and that.
And so what we were doing during Memex is we were evolving Tika to support the non-standard
types of content, the easy text and the other things.
But when you get an image, instead of just getting metadata out, get out who's in there.
Do object recognition and tell me the people, places, things, dates, times, and other things
that are in those images, videos, and multimedia formats.
That was the goal of Memex.
And so we were significantly building out Tika at the time.
There was so much action going on on Tika in the open source community.
Well, we had this guy, Matthew Karuna-Gaziglia, show up.
And I'm like, oh, you know, who's this guy?
And he had built NodeTika.
We had a bunch of people building Tika interfaces into other programming languages.
And so he did that.
He contributed it.
And we start talking to him.
And he starts asking us these questions and telling us he's part of the ICI4J, or International
Consortium of Journalists.
And we're like, cool.
We start looking it up.
And then, boom, Panama Papers drops.
And we're like, holy SH.
They used Tika?
That's why that guy was asking us all these questions, you know?
And all this.
And so what they did is, yeah, they got this data dump leaked from a company called Monseca,
which basically said, yeah, like the heads of state in various countries and famous actors,
your favorite ones, like mine, Hermione and Emma Watson, they all had money, you know,
in shady ways in these offshore accounts, and they hid their wealth there, you know?
And of course, that has all sorts of ethical and other implications.
So that was in these data files, which were leaked off of a content management site, 11
terabytes of data.
And the way that you did that is you do a big ETL, extract, transfer, and load process,
and do data forensics using tools like Tika.
And literally...
Right, right.
Tell me the important stuff about these gigs of files, and then we'll go through that.
Bingo.
What are the people, places, things, connections, and other things?
And if you look at the Wikipedia page, which was like one of the fastest Wikipedia pages
I've ever seen made, when that story came out, it's like it had all...
It was like the hugest Wikipedia page.
About midway down through, and I got a link to my page on Wikipedia from this, they say one
of the...
Probably the key technology, you know, in doing this was Tika.
And so, by the way, those journalists and others won the Pulitzer Prize in 2017.
And so I tell people, hey, I contributed to the Pulitzer Prize.
And so, yeah, that was a big, big deal.
And that...
Yeah, that's awesome.
Some people only know me for that.
And I had a very small hand in it.
But then again, I helped invent Hadoop.
And we found out many years later that that's what the NSA used to build Accumulo.
You know what I mean?
So I don't really care about all this stuff.
People ask me, are you ethically concerned?
My goal is to change the world and build the software that everyone uses.
You can't control for that.
What you can control for is that the world got better somehow in some way.
You can't control all the maybe actors and how they use it.
But I think the sum total of everything at the end, I'm proud of.
Yeah.
Well, this is definitely a check, you know, plus one for the good guys on the Panama Papers.
That's really cool.
And then last, maybe tell people about your book, your TensorFlow book.
Yeah.
So right now in this sort of era where I'm deep into AI about a year and a half ago,
I tell myself every year and a half to two, not that I get bored, but my wife lets me, you know,
do some fun project.
And she helps, does amazing with our three children, 11, five, and three, boy, boy, girl,
right in the thick of things.
And energetic ages there.
Yes.
Energetic and suffering from this pandemic like everyone else, but we're getting through it.
But yeah, it's about a year and a half ago.
So I was reading and I'm a Manning author.
So I wrote Tika in action 10 years ago.
And I saw I get access to the books and they tell me about the books.
And so there was a book on machine learning.
And I was like, you know, it was TensorFlow.
And it was machine learning with TensorFlow.
And I said, you know what?
I want to learn what my people are talking about.
There was heavy debates between TensorFlow or PyTorch or whatever.
And there hadn't been a Manning PyTorch book.
There was a TensorFlow one.
So I said, cool, let me read it.
So I'm reading it.
And when I'm reading it, I'm like, hey, I got to go deep.
Each one of these chapters that's in there, there's like a suggestion at the end on the CNN chapter.
There's like a bullet.
It's like, oh, and you could build a facial recognition system, but we're not going to do it.
You know, they author the first edition, amazing guy named Nishant Shukla, UCLA PhD, computer vision.
He's at a startup now.
He's doing great things.
I've communicated and corresponded with him during the reading of the book and also the development of this book.
You know, he kind of throws out there, oh, yeah, you can build a facial recognition system.
And so you go explore that, like, go look at VGG Face.
So I go explore it and I'm like, the data doesn't exist anymore.
You can't find this model anywhere.
And I have to rebuild all this stuff for scratch and get all the celebrity images.
So VGG Face is basically a celebrity image recognition model.
Actually, Google just came out with the product that's basically the commercial version of it.
But it's this sort of seminal model from 2015 that's like facial recognition using CNNs.
And so I start to go build it.
And like seven weeks later, staying up at night, you know, multiple hours at night, I'm like, God, this is like a graduate level program, you know, assignment.
It's a lot of work.
It's hard.
It's a lot of work.
So my wife sees me doing this over like a nine month time span.
And I'm like, oh, my God, AI is real.
I know what Elon's talking about, you know, or this and that.
And I'm like, and so I had at the end of nine months, basically a ton of Jupyter notebooks, a ton of data sets.
I had built a ton of end to end examples everywhere that he threw a bullet suggestion at the end of a chapter where he introduced something.
I implemented basically a new chapter and a half for that.
And so that's 10 machine learning with TensorFlow 2 or second edition.
That's my book.
It uses TensorFlow, but I will say it's TensorFlow and friends.
Yeah.
So, you know, some people have told me it's not fully updated to the latest TensorFlow 2X or whatever.
So what I did is I did my typical Chris thing with that.
I got the head of AI at Google, Scott Penberthy, a buddy of mine, basically write the foreword.
And in the foreword, he talks about, look, in the time it took Chris to wrote this book, we released 20 versions of TensorFlow 1X.
And we also started two.
You can't chase the versions.
All of the material knowledge of doing data cleaning preparation, building these models, evaluating them.
None of that changes.
If the train step changes or if you use declarative programming versus imperative, or if you don't use placeholders anymore,
those are implementation details that could be swapped out in a few lines of code.
But what I really do, it's now 450, almost 500 pages.
It's going to be released in a month.
I just finished all of the chapters, Michael, and I just finished.
I just went to three-thirds review.
It's about to go to production.
Awesome.
And just, by the way, people listening, due to time travel of podcasting, this will be just about the time.
It should be just about out or just released a week or two ago.
It's going to be great.
Please check it out.
It really adds and supplants the first edition of the book.
Thank Nishant for doing it and so forth.
But it really is a book on machine learning and deep learning and things like that and how to do it.
It could be a textbook.
But it's written in my dad type of style and jokey, funny.
It's got a lot of my personality in there.
I hope you guys like it.
But that's the book.
Yep.
Awesome.
Yeah, well, people should definitely check it out, especially if they're interested in TensorFlow.
It sounds like a great one.
All right.
Well, I think we're just out of time, even though I know we've only scratched the surface.
So let me ask you the final two questions before I let you out of here.
You're going to write some Python code?
What editor do you use?
I'm old school, so I will jump into Emacs or I'll jump into Jupyter.
And I write a lot of Jupyter to start because I'm doing a lot of exploration.
And then if I go like a script, I'm jumping into Emacs.
Okay, cool, cool.
And then a notable PyPI package.
You're not necessarily the most popular thing that people...
But something you found, like, oh, this is really cool.
People should know about X.
Oh, that's a good one.
Near and dear to my heart right now are, let me complain about something first, and then I'll
do negative and then positive.
So, God, why does the Yahoo stock quote thing have to change every few years?
I was using Y stock quote after the old one broke.
Now it's like...
And then just all of a sudden that broke.
And now I got to use, you know, Y Finance and like it changes just ever so slow.
So that bugs me.
But thanks to the guy who wrote Y Finance and updated that to whatever, because I think Yahoo's
upstream stuff breaks.
But I do a lot of...
I mess around in finance and quant and stuff like that just for fun.
And so, you know, anyways, that's one that kind of bugs.
One that I really like is TQDM.
That's...
Yeah, I just love TQDM.
And so it's basically progress bars and it's instrumentation over iterators.
Nice progress bars.
Yeah.
Amazing progress bars.
Beautiful Jupyter progress bars.
Beautiful command line progress bars.
All the stuff that you make lame progress bars.
If you just try and do it with print statements yourself.
Use TQDM.
So...
Yeah.
All right.
Very, very cool.
All right.
Good recommendation.
And final call to action.
People...
I guess I'll give you two angles here.
One, people want to get started and do more with TensorFlow.
What do they do?
Or maybe they're interested in space and JPL and they want to get closer to you guys in some
way.
How about that as well?
You want to get started with TensorFlow?
TensorFlow?
So...
Spend 90% of your time not using TensorFlow or any ML toolkit and create a clean data set.
In Pandas, make sure you have clean labels.
Make sure it's a tabular structure.
That's the biggest mistake.
Or not even a mistake, but challenge that I see people doing.
They're using imbalanced classes.
It's ugly data that hasn't been cleaned.
Machine learning today still requires clean data.
And so you do that, you can bring it into TensorFlow, PyTorch, anything.
Just clean your freaking data and spend the time doing it and get a good data set.
Second, how do you get started at JPL and NASA?
Look at our open source and other code.
We have a big open source library on GitHub.
Look at some of our projects, read our press releases, and then connect with me.
Connect with...
A lot of our people are on LinkedIn.
Connect with us.
The best way to do it is to come not just saying you have XYZ skills, but you've actually
read about a project like you've done or the research, Michael, and you know about some
of this stuff and you have specific areas you want to contribute.
JPL has an amazing internship program, 800 people a year.
We took 450 even during the pandemic virtually, and it's still going.
It's a great way to come in school and join like I did.
And then also we hire for full time and jpl.jobs is the best place to take a look at for that.
Oh, that's awesome.
Well, thank you so much for being on the show, Chris.
It's been great to chat with you.
Thanks for having me, Michael.
I really appreciate it.
Yeah, you bet.
Bye-bye.
This has been another episode of Talk Python to Me.
Our guest on this episode was Chris Mattman and is brought to you by Linode and Monday.com.
Start your next Python project on Linode's state-of-the-art cloud service.
Just visit talkpython.fm/Linode, L-I-N-O-D-E.
You'll automatically get a $20 credit when you create a new account.
Build your idea for an app and get it in front of hundreds of thousands of users on day one.
Start building today at the Monday.com marketplace by visiting monday.com slash Python.
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'll see you next time.