What if you built a product that dramatically improved how hundreds of free open-source Python
libraries work together and gave it away to the world for free, and then built a thriving business
on top of that? It's the open-source dream, really, isn't it? This week, we talk with Travis
Oliphant from Continuum, who did exactly that. This is Talk Python to Me, show number 34,
recorded October 26, 2015.
Welcome to Talk Python to Me, a weekly podcast on Python, the language, the library,
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 Hired and
DigitalOcean. Thank them for supporting the show via Twitter, where they're at Hired underscore HQ
and at DigitalOcean. That's right, DigitalOcean has joined Talk Python to Me as a sponsor.
Thank you guys for supporting the show. You rock.
Hi, everyone. Thanks for listening today. Let me introduce Travis so we can get right to the
interview. Travis Oliphant has a PhD from the Mayo Clinic and a BS and master's degree in mathematics
and electrical engineering from Brigham Young University. Since 1997, he's worked extensively
with Python for numeric and scientific programming, most notably as the primary developer of the NumPy
package and as a founding contributor to the SciPy package. He is also the author of the definitive
guide to NumPy. As the CEO of Continuum Analytics, Travis engages customers in all industries,
develops business strategy, and helps guide technical direction for the company. He actively
contributes to software development and engages with the wider open source community in the Python
ecosystem. He has served as a director for the Python Software Foundation and as a director for
NumFocus. Travis, welcome to the show.
Hey, thanks. Appreciate it, Michael.
Yeah, I'm really glad to have you here on the show. I know you guys are doing some amazing stuff with
Python and really leading the way with the whole scientific computing angle of it. So I'm really
excited to talk to you about that today. But before we get into it, yeah, absolutely. Before we get into
the details, though, what's your story? How do you get started in programming?
Well, programming, I was a young child. I was in fourth grade, I believe. I remember my first
Atari basic class. It was an after-school program. I just got pretty excited about it. My dad was a
programmer as well. And so, you know, part of it was, oh, I can kind of do what he's doing.
But the computers back then were very accessible to a hobbyist mind. And the expectations were low,
too. We didn't have, you know, interactive video games to try to reach. It was an interactive text
game was actually interesting. And so I just got started there and had a Timex Sinclair, a TI-49A,
just hobbyist computers. And I was kind of doing it from the very beginning and kind of did,
I enjoyed that as well as I enjoyed a lot of math. So my first, I wrote Pascal in high school.
I was part of an AP computer science class and then went to college and where I was studying
engineering and physics and I learned C. And that's kind of how I, and then I started to
use, you know, go to MATLAB and a bunch of stuff up there.
Okay. Interesting. So you kind of built up into the more serious languages like C and so on.
And then I'm guessing you're doing MATLAB because you were trying to do some kind of scientific
visualization stuff, right?
Yeah. Yeah. It's a high level array programming for electrical and computer engineering controls and
signal processing, image processing. It was much easier to think at a high level than have to worry
about all the details of programming. I could program in C at that point, but it was much nicer to think at
a high level and not have to worry about those details while I was thinking about the math problem I was solving.
Yeah. That's for sure. No matter how good you are at C, you're going to be that efficient in it,
right? Just there's, you're really, really way down there, right? And so MATLAB is really great for
building these simulations and answering these questions. But one of the areas where those types
of systems fall down is like building actual apps that run, right? That you can run in production.
And so is that kind of what led you towards the Python story?
Yeah. A little before that, because I was still a grad student when I found Python, it was more, it was two things.
One is I, in the back of my mind, I was bothered that I was sort of writing in MATLAB and anybody who wanted to use my
code had to also have this, you know, buy this expensive package before they could benefit from what I'd done.
And so that, that always sort of bothered me. And then I didn't, then what was the proximal reason I had to switch to Python was I ran out of memory.
I was doing very large three-dimensional simulations of five-dimensional, actually five-dimensional data, but the three dimensions of space and time and a third axis of polarization.
And I needed to, it just wasn't fitting in memory. So if I switched to float 32, it would fit for the kinds of problems I was solving.
And I didn't, they didn't have those data types in MATLAB. So I was looking around for another way to do this.
And that's when I found Python and the numeric package and kind of got hooked.
I had done some Perl scripting in the past to kind of steer scientific compute, like 4chan libraries.
And so I understood that use case, but I also having the numeric package available, let me do high-level simulations quickly.
And then just this wealth of other things got me kind of started.
And I just loved the language and the syntax and it was close enough.
I didn't have to, it didn't, I didn't have to think about computer science.
I could think about my problem at a higher level.
So that's what hooked me.
And then it was readable later.
That's what I really appreciated about it.
So that was in grad school about 15, 16 years ago, 17 years ago now, that I got started with Python.
Okay, that's cool.
Yeah, you and I were in grad school, not too far apart, actually.
In time, maybe, maybe in distance, but in time.
So the scientific Python looked really different 15 years ago than it does today.
I would say scientific Python was really different two years ago than it does today.
But, you know, that far back is really interesting.
So maybe you could tell us what it was like then and how you've seen it evolve over time.
Yeah, so back then, a lot of scientific Python was steering other codes.
There's a lot about you'd write a script to kind of call other either machine codes,
other codes written in C or 4chan.
And you'd be just steering, and you're doing a lot of data, kind of data munging,
maybe file reading, reading input data and writing it out, kind of using the string processing facilities.
And then because Python could be extended, then it was not too difficult, you know,
that the SWIG package was available at the time.
It was really instrumental early on in kind of making it easy to wrap large code bases
and make them accessible to Python.
And so people were able to then kind of have objects in Python that mirrored their low-level objects.
And so they could start steering their program from a high level.
And that kind of, as numeric, as an array processing library emerged,
and then NumPy came a little bit later after NumArray,
that whole process led to more people actually at a high level just building their array-oriented constructs
just in Python itself in the very beginning,
instead of having it kind of be an object layer on top of low-level machine codes.
Okay.
So in the beginning, it was just about sort of an easier API to what people were already doing in other places.
But then...
And helping to test those, too, it kind of became like it was really easy to test your C libraries,
your 4chan libraries.
Right.
Absolutely.
But then it sort of...
The more it caught on, it was more like, well, we'll just stay here, right?
Yes.
Right.
I can just use this.
Like, the spelling here is nicer and easier, and I don't ever have to drop to the C level.
And there were some real important things that happened that conveyed that.
Not a process is still happening.
I mean, there are still people that write 4chan, still people that write C.
And the fact that Python is this great glue continues and continues to make it a strong use case.
You were one of the people that was involved with NumPy and SciPy and all that,
actually getting that off the ground, right?
Yeah.
I was a grad student who was really...
Like I said, I fell in love with Python as a grad student.
And it was a weird reaction to have for a language.
But what I loved is just the ability to do things quickly.
You know, I could sort of iterate quickly.
I could think at a high level.
The concept of Python fits your brain and gets out of your way is a common meme.
And I felt...
I just totally felt that.
I could think about my problem.
And then...
So I got excited about it.
And then I looked around and said, well, but I'm missing some libraries here.
I need integration.
I need optimization.
I need statistics.
I need these linear algebra libraries.
And a few of them were numeric.
And there were a few scattered around.
But I kind of got BMI bonnet around 1998, 99.
And started just...
I learned how to write an extension module.
You know, Guido and something called Table.io from Mike Miller showed me how to write an extension
module.
And then I just got hooked.
And I started writing a bunch of them.
That's great.
So around a whole bunch of old 4chan codes kind of made them more accessible.
And that's kind of the beginnings of the SciPype project.
Yeah, very cool.
Take that C knowledge you had and put it to use there, right?
That's right.
And this was back when, you know, you had to hand wrap and track reference counting.
And it was...
The fact that I knew C was really critical to making sure that would happen.
It's certainly a lot easier now.
You can do it with Cython.
Numba.
It's really easy now, actually.
Yeah.
Comparatively.
These kids, they don't know how good they have it.
Right.
So somewhere along the way, you started a company called Continuum, yeah?
Yeah.
That's fairly recent, actually, in the whole history of things since I've been doing this
for 16 years.
And, you know, I was a professor for a while.
And that's where I wrote NumPy, kind of growing from the work of the Space Science Institute,
the NumRae work, and then, you know, the previous work of Numeric Community.
NumPy brought it together in 2007.
2006, 2007.
And that's been very successful.
It's really thrilling to see how many projects have been building around that.
And then also, it's been thrilling to see the community rally around and keep supporting NumPy.
There's a lot of great people contributing to that project today.
And same is true with SciPy.
But I left my academic career behind around 2007.
And I had six kids.
I need to support them.
So I need to figure out a way to make my way in the world.
And I started doing consulting around Python for NTHOT in 2007.
And then in 2011, Peter and I were kind of talking about some gaps and really trying to, you know, realizing that Python needed to make a bigger story in the big data world and have a stronger play in the web visualization and big data world.
And so we started a company in 2012 to really make that happen.
Yeah.
And your company is called Continuum.
And you guys have a really ambitious goal.
A really lofty goal.
And I love raising your website because, you know, it's kind of like there's all these great scientific projects and thinkers and stuff out there.
But when they go to solve their problem, they end up, you know, stuck at a command line saying cannot compile some random C thing because they're trying to install, you know, a Python module that's got C extensions.
And they just, you know, like they're stuck.
Right.
And so if you could build an environment where everything was sort of import anti-gravity, right, it's like all super easy.
But even for the science-y stuff that's hard, right, that's kind of your goal?
That's definitely a part of our goal.
I would say that at Continuum we've had no shortage of lofty goals.
Peter and I are both ambitious thinkers and kind of full of ideas and thoughts.
And I've had things been building up over years.
So when we started Continuum, we had really, really ambitious goals, not only around package management.
Really, that kind of came as a sub, as a corollary of our other goals.
Our goals were to make it really easy for data analysis and scientists, you know, people that change the world is the way we talk about them today.
People that change the world need a way to do it easily and not to be loaded down by DevOps and issues.
They need to be able to create visualizations that show up on the web and they need to be able to take advantage of modern hardware easily.
So they need to run in parallel.
They need to be able to take advantage of GPUs.
And they need to be able to translate their great ideas into code that does that with a nice web front end.
Right.
So, and then if we're going to really pull that off, we've actually got to, the first problem is how do I ship this, this great stack of tools to people that I built?
And so Anaconda came out, kind of came as a, this really immediate corollary from our overall goals.
We need to really work on the packaging problem.
Right.
So you're thinking data science, visualization, scientific computing.
Okay.
Python.
Right.
Now.
Data science at scale in a, in a web browser visualization.
How do I get that installed to everybody?
And we got to, we got to work on the distribution problem.
Right.
The starting point.
Yeah.
So vanilla Python is a fine base for that.
But, you know, if, if you tried to install, you know, matplotlib on windows.
Yeah, exactly.
It is no treat, right?
You're like, what?
No treat.
Right.
What is up with this VCVars.bat?
I didn't want this.
Well, what's, what's, what's cool about Python is how easy it is to integrate with so much other stuff.
Right.
It's a glue that really, you know, it's why it was adopted in the scientific domains and why it continues to be powerful.
But the other end of the stick of that glue is means you've got a lot of other systems you're interacting with.
And so installing something, you know, sci-fi, for example, has notoriously been difficult to install because it's a, it relies on 4chan code.
So you're compiling 4chan code and then you're integrating it.
And, you know, I was, I use 4chan.
Any, any decent science can use 4chan.
Well, today people are like, I don't want to have a 4chan compiler managed on my system.
Yeah, absolutely.
It becomes a challenge.
So, and then, you know, the visualization compounds that with additional C libraries and additional configuration issues that are slightly different on different platforms.
And just how do you bring all that together?
It's a real, it's a hard problem.
And so we've taken strides.
And part of that, part of those strides is creating the Conda package manager.
You know, really having a cross-platform package management solution that goes beyond just Python and lets you install Node and R and anything else.
Java, Ruby, Scala.
You can install all of it with Conda.
And then on top of that, being a definitive source for freely available binaries on mobile platforms for these primary fundamental packages that make up the PyData stack.
Okay, so that's interesting, both of them.
But the fact that you say, all right, well, you know, how different is everybody's Mac?
We could probably compile that once and then nobody has a problem of getting this obscure compiler to work on their environment, right?
Right, right.
That is a, and that's an important question, actually, because what is it, what is a platform?
We've asked this, we have to look at this question really hard.
I mean, a platform fundamentally is actually the tree below you.
It's all the software dependencies that you're not caring about, that you depend on.
That's actually a platform, right?
That's right.
Now, when we talk about OS platform, people kind of cut that tree at a particular plane and usually go, well, okay, here's, we're going to use the OS for the Lib C and this set of libraries.
Everything else above that is managed from the package manager.
And that's, and for us, the way we manage that is, like a Windows, they do a lot of work to manage that.
You know, and basically if you compile for a particular Windows box, it's going to be pretty well assured to work on every release of the software above that.
So usually it's about picking the baseline.
It's about picking the baseline.
So with Windows, we used to, you know, we used to do Windows XP.
I think we just moved to Windows 7.
That's kind of our, you know, that's where we compile all the software so that it works on Windows across that.
Which compiler do we pick?
Well, you know, in Python 3.5, we just moved to Visual Studio 2015.
In Python 2.7, it was Visual Studio 2008.
And so, you know, we manage that.
And then on macOS X, okay, it's version 10.7 of the OS.
That's where we, in this version of Xcode, that's our base.
On Linux, it becomes a little bit harder, but there we just, it's the compiler and the libc.
And then everything, it doesn't matter which distribution it is, it works on your, the only we rely on is the libc.
Okay, yeah.
That's how we manage it.
These are hard questions.
Yeah, and it's hard to generalize that.
But that's, I think that's a really hugely valuable service.
It's because, you know, just, I think it was this morning, I was trying to install micro WSGI on Ubuntu 1510.
And for some reason, it would not compile correctly, trying to install the main environment, but it would go into a virtual environment, right?
And just these little headaches you keep bumping into.
And when you're experienced, you're like, okay, fine, we'll just do it this way or that way.
But when you're new or programming is not your full-time thing, you're a scientist.
Right.
And you just need to do it.
It's a showstopper.
It's a showstopper, right?
That's exactly right.
And that's actually something, you know, a lot of people have, because Conda has emerged at the same time that the Python packaging hasn't been improving.
You know, pip and VirtualM have gotten a lot better over the past several years than they were when we started.
And our story in Conda has some overlap with that, but it really has a different focus.
If you use pip and VirtualM, you're saying, yes, I'm an integrator.
I'm going to make this all work for my system.
And that's great.
And that's something people want to do, but not everybody wants to do that or really should be trying to do that.
Conda is about, and Anaconda is about, here's an easy-to-use platform for open-source analytics that you can just get started with out of the gate.
You don't have to be worrying about configurations right before you get started.
Just get started, right?
And then you can decide later how you want to potentially, you know, build your perfect system.
And whether you continue to use Anaconda or binaries or you decide you're going to use your own, you're going to use Conda or use your own binaries, that's a decision you can make down the road.
Or maybe you just want to recompile, you know, get the stack you want and recompile everything the way you want it.
All that's still available to you.
We're just trying to get you started quickly and get you using this great stack of tools.
Yeah, that makes a lot of sense because once you've got a working system, well, then you're willing to put in that four hours to get that thing set up.
Right.
But if you're trying to decide if it's even suitable for experimenting with, you don't want to spend that four hours, right?
Exactly.
And that was our goal from the very beginning.
I'm really excited.
I think I personally think we've helped with the recent explosion of Python in the PyData world.
Just how many more people.
I mean, it was said that actually Python is the fastest growing data analytics language.
Its rate of adoption has overtaken R.
You know, Python and R for a long time, Python was overshadowed by R.
Like nobody really talked about Python as an open source language.
There's always R, R, R this, R that.
And R is great.
Don't get me wrong.
It's got some great things about it.
But Python is used in a lot of the same context.
And it's only been fairly recently people have looked around on a commercial side.
Companies have looked around and said, wait a minute, database vendors, for example, and said, we've got to have Python support too, not just R support.
Yeah.
That's been really great to see.
That is really great to see.
And I think you're right about you guys helping with the explosion there.
I mean, to me, it's NumPy, SciPy, and then it's IPython.
And, you know, maybe a few other things.
Pandas has made a real big difference over the past several years.
A lot of people are using Pandas now.
Yeah, that's right.
Yeah, yeah.
For data frame kind of operations.
Yeah, and a lot of those are not easy to set up and install and get going with.
And so having this distribution is really great.
To me, you talked about a couple of things.
You talked about Conda, and you've talked about Anaconda.
This episode is brought to you by Hired.
Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.
Each offer you receive has salary and equity presented right up front, and you can view the offers to accept or reject them before you even talk to the company.
Typically, candidates receive five or more offers in just the first week, and there are no obligations.
Ever.
Sounds pretty awesome, doesn't it?
Well, did I mention there's a signing bonus?
Everyone who accepts a job from Hired gets a $2,000 signing bonus, and as Talk Python listeners, it gets way sweeter.
Use the link Hired.com slash Talk Python to me, and Hired will double the signing bonus to $4,000.
Opportunity's knocking.
Visit Hired.com slash Talk Python to me and answer the call.
Let's maybe focus on Anaconda for a minute.
So you've got sort of four interesting, I don't know what you call them, maybe pillars or concepts behind this distribution.
And I thought they were pretty cool, so I'll sort of go and maybe we could talk about them a bit.
So one is you're committed to open source now and forever.
What's the story there?
Yeah, so one of the things we want to make sure people realize is our roots are in open source, right?
I mean, I spent years building SciPy and years building NumPy.
And when we started the company, we wrote Bokeh and Numba and Conda, and they're all open source.
I believe infrastructure should be open source.
And one of the goals I had in starting Continuum was to create an organization that would allow a sustainable production of open source
by also selling things for enterprises that drives that.
Any revenue produced by slowing solutions to enterprises can actually support growing more open source software.
So I really believe it helps everybody, and it helps places you're not even able to target and help.
So we're real believers in open source.
We believe in it.
We think it's important.
We also believe in building on top of it and having things we sell on top of it.
But we want to give back to the community at every opportunity we have and can.
So Anaconda, as a distribution of the open source ecosystem, is my art perspective.
It needs to be open source and will stay open source.
It's really interesting to me how successful people have been with open source on the large scale and on the small scale lately.
And I think this is a new trend.
I mean, you probably know better than I do.
But I'm thinking of companies like MongoDB that are, you know.
Yes, 10-gen, yeah.
Yeah, MongoDB, that's right.
Yeah, over a billion dollars valuation.
And you can go to GitHub and get their thing they're selling for free.
You know?
Yeah.
It's so paradoxical.
Right.
But it's really interesting.
Well, some of that still has to be played out, I think, in the marketplace.
I mean, some of these large scale evaluations are a bit marked to vision, marked to dream.
Yeah, yeah.
They're looking ahead.
We'll see.
You know, they're not quite proven out whether or not they can be, you know, is there going to be a sustainable, repeatable, a sell cycle that's going to drive that.
There are known.
I think the reality is there are known sales conversations that can drive open source.
And those have been identified.
And I think there are more to come.
And people are recognizing that in order to play in the ecosystem of tomorrow, you're going to have to be open source because the developers are going to demand it.
The people who are – you have huge, huge advantages in terms of what people know already.
So if you don't, you're going to have to train people a lot more than you do if you kind of go with what open source is driving.
I think there are a lot of factors that drive it.
But our – you know, we're basically a group of folks that – we drank the Kool-Aid long ago.
So we're just continuing that.
It's sort of part of our core.
It's not something we just sort of, hey, let's try this, jump on this bandwagon.
It's who we are.
Yeah, you guys have been there from the beginning.
That's awesome.
But yeah, I definitely think that not only is it becoming – so there's lots of examples of businesses doing it successfully.
But like you said, it's being accepted by purchasers, people who are going to say, I'm going to buy a service.
Well, of course, I'm going to go get this open source project and I'll get the commercial support or whatever.
Whereas it used to be kind of this edge thing like, well, maybe you can save some money, but you might pay for it later when it doesn't work quite.
That discussion has sort of sailed, right?
Yeah.
Yeah, I think there's still some questions around – I mean, I personally believe there are a lot of people benefiting greatly from the Python and the PyTidus stack that need to figure out how they're going to help support sustaining it.
Either there's got to be – you buy a commercial distribution, support and unfocus.
I mean, there's got to be some dialogue around how are we actually going to make this work long term.
So I would definitely love to encourage people to take a hard look.
And if they're relying on this for their day-to-day, think about how that's going to maintain.
Right.
Don't shoot yourself in the foot, right?
Right.
Don't let today's price point be the enemy of tomorrow's success.
Yeah, for sure.
So that was sort of pillar one.
Number two was tested and certified packages to cover your back.
Yeah, that's right.
So that kind of speaks to the – we do a lot of work to make sure the Python works together.
And so you have a process where we release into – we have a download and we have a repository.
When we make a release of Anaconda, we basically are saying this group of software works together and we've done some integration testing.
When we make a release of a package into the open source repository, basically we've done a testing on this package that works and a little bit of integration testing.
But we haven't done like full integration testing.
So you kind of – depending on where you want to fit, do you want to sit and take only Anaconda released versions?
Because you want to make sure it all works together.
Or maybe you're willing to deal with the occasional, you know, hey, this new release of SoftwareX doesn't, you know, doesn't quite work with this other piece.
It's easy to fix, but you might have to, you know, get the configuration that works just right.
But either way, we've done testing at various levels and we, you know, we basically promised it'll work.
We – as a commercial thing, we do offer identification as well.
So that's one of the features we provide to people that will – that buy a subscription is we will actually indemnify you against the concerns about open source using and deploying open source in your organization.
We'll make sure that you're protected from, you know, copyright infringements and patent infringement concerns that the company may have.
That's a big deal.
That's really cool.
Yeah.
So with the sort of consistent packages, how many different packages are in the Anaconda distribution?
So the Anaconda download, we've actually been tearing it down, trying to make that download a manageable, you know, manageable 700K or 700 megabytes.
It could grow like to be three, four gigabytes.
But we've been tearing it down.
I think it has about 70 to 75 packages that are in the downloadable.
And in the repository that's a quick Conda install away is 330 currently.
Okay.
And growing.
And then, of course, you have access to everything else through pip or you have Anaconda Cloud, which provides additional sort of community provided.
Anybody can make a Conda package and put it in Anaconda Cloud.
Anaconda Cloud, excuse me.
And then they can go and you can install it from there, too.
Okay.
Excellent.
Yeah.
One of the challenges with sort of this mix and match open source feel is there's nobody's job or responsibility to make sure that all of these pieces fit together.
Right?
There's a whole host of developers, more than 70, working on those 70 packages.
That's right.
But are they, how much coordination are they doing, right?
I mean...
None.
Well, a little bit.
Yeah, I'm sure a little bit.
They each have their own...
They each use some corner of the stack, right?
And so they'll...
For the piece...
For their itch, for the things they care about, they make sure that works together.
But it can definitely fall apart.
Like, I've periodically decided, oh, I want the new stuff.
And so I went to my...
I just did a pip upgrade.
Everything in my installation...
Yeah, that's right.
That usually is okay, except for, you know, a few where it's not anymore, right?
So...
Right.
And, you know, if you're willing to deal with that, and you've been...
Some R&A, it's kind of fun sometimes, right?
It's a big kind of cutting edge.
It works okay.
Yeah, and it just sort of depends on which cut you're making through that stack.
That's right.
But especially when it comes down to, hey, I've got...
You know, I'm tied to this vendor-specific library, this Blosser, LAPAC, linear algebra library.
I've got this, you know, visualization stack that requires this version of that GPU driver.
I mean, those are really...
It's really hard to get that working together without somebody doing that testing.
Yeah, yeah, I can imagine.
So you guys got that covered.
That's cool.
So the third one is explore and visualize complex data easily.
Yeah.
So here we're basically advertising the capability of this PyData stack and helping people understand
what you can do with it.
And, you know, the fact that you've got such great visualization tools...
You know, we spend a lot of time on Bokeh, but we also use Matplotlib and we use, you know,
the BizPy and Myavi and the other tools that let you basically bring your data to life quickly
and inside of Jupyter or on the command line or inside of Spider, depending on exactly what
you want to use.
All of it's available and easy and kind of at your fingertips.
Yeah, that's excellent.
I installed Anaconda and go into the environment, iPython, space, notebook, boom, everything works.
It's ready to roll.
It's not...
Nothing to configure, right?
Same thing for Spider.
You can pull up the IDE, which is like a scientific computing IDE type thing.
And it's all right there, right?
So that's cool.
Right.
So that's basically, you know, it's a plot works and for Matplotlib.
And then if you're...
Bokeh provides a charting API, so you can do complex histograms.
The Seaborn interface, the Matplotlib works out of the gate.
You know, Pandas has its histograms and plot tools.
You can just bring up a data frame and type dot plot on it, and it'll bring up this interesting
plot.
Just lots of things available.
You just basically have to do a Google search on the kinds of analysis you want to do,
and it's all ready to go.
Yeah.
And almost all of it will work out of the box.
Yeah, that's really cool.
I definitely, if somebody out there is learning data science, definitely start with Anaconda,
right?
Because then you've got to focus on the actual thing you're learning and not fighting with
compilers.
Exactly.
Not becoming a distribution.
Not becoming a self-integrator.
It's the official term that Nick Coughlin uses for people who are using PIP.
That's great.
So you talk about Boca a lot, and I don't really know much about it.
What is it?
Yeah, great.
So Boca is...
I say Boca, but people can say Boca.
I think Boca is a plotting library for people that don't want to have to learn JavaScript
but want visualizations in the web.
Okay.
So it's kind of like D3 for the rest of us, kind of for the data scientist who knows Python
or R or another high-level language.
But you can write complex visualizations, kind of high-level plotting, charting, histograms,
cross plots, but have it show up in the web.
So that's Boca.
Boca has a JavaScript side.
There's a JavaScript...
Actually, I think CoffeeScript is the current implementation detail, but it's a JavaScript library that
you then embeds in your browser.
And you communicate with it via a protocol.
So JSON objects.
You communicate it back and forth between your server.
Either as a one-time static publish, you know, embedded in my HTML is this JavaScript that talks to the Boca.js and produces this visualization.
So you have a static interactive plot where you...
Interactive, I mean, you can zoom into the data.
You can drag and drop.
You can, you know, slide...
You can do some selections of points and have the visualization update as you're doing that selection.
So the data is static and it comes down all at once, but then you can explore it however you want, sort of visually.
So that's one use case, right, where you want the data static and you want it all in your browser at one time and you're exploring it all at the same time.
But the other use case, it's an important and growing use case, is where you have too much data.
You don't want it all in your browser.
You have to interact with a large data set and you're communicating via maybe a WebSocket API or kind of an interactive API.
The browser is talking to a client and, you know, you're interacting, sending viewport information back to the server.
And there's a Bokeh server that's then bringing the information and changing what's actually shown up in the browser directly.
So there's this bidirectional communication happening between the server and the client.
And that also works.
And it's pretty straightforward.
You don't have to know all those details.
You just kind of set up your visualization in a very simple API.
And then that kind of comes for free.
That interaction kind of comes for free.
And there's a lot – so there's – you know, there's a lot of possibility there.
And so there's an API.
There's a – there's a – both a – there's a lot of great APIs.
There's a plotting API, kind of relatively low level.
It's not really that low level.
It's more like – it's kind of like the plot level with, you know, I'm going to change this glyph.
I'm going to change that glyph, put these axes here.
Then there's a charting API that might take a data frame, might take a high-level object that you can then quickly build a histogram or a nice chart.
Then the other thing Bokeh provides is novel graphics.
Like you can just – I'm going to draw a glyph.
I'm going to draw the rectangles.
I'm going to draw circles.
And kind of a – and because we come from the scientific Python background, it's vectorized interface.
So with a single segment command, I can draw 100 lines, you know, and I give all of those endpoints in one big vector.
Does that make sense?
Like a single command will generate a bunch of circles.
Yeah, sure.
Or a bunch of glyphs.
Yeah, I was looking at some of the graphics on bokeh.pydata.org.
Yeah, exactly.
It's a great place to go.
Yeah, there's amazing stuff over there.
Yeah, it's just like a contour plot, all the different kinds of plots you can think of.
And just – that's really nice.
Exactly.
There's some examples of chloroplats and kind of novel graphics is one of the key pieces.
So, you know, the key things are novel graphics.
It's a library.
It's a fast library.
Kind of – if you have – if you have visualization you want to do and you have data you know how to access in Python or R, actually.
There's an R bokeh interface.
Check out bokeh because it may help you get your visualization done quickly.
And it can produce a static HTML or it can produce an application, basically, a visualization application.
Yeah, that's really cool.
For the server-side component.
Yeah, and because it runs on JavaScript, sort of you automatically get like distributed computing, right?
You offload a lot of the computation to the viewers, right?
Exactly.
This episode is brought to you by DigitalOcean.
DigitalOcean offers simple cloud infrastructure built for developers.
Over half a million developers deploy to DigitalOcean because it's easy to get started, flexible for scale, and just plain awesome.
In fact, DigitalOcean provides key infrastructure for delivering Talk Python episodes every day.
When you, or your podcast client, download an episode, it comes straight out of a custom Flask app built on DigitalOcean, and it's been bulletproof.
On release days, the measured bandwidth on my single $10 a month server jumps to over 900 megabit per second for sustained periods, and there's no trouble.
That's because they provide great servers on great hardware at a great price.
Head on over to DigitalOcean.com today and use the promo code TALKPYTHON, all caps, no spaces, to get started with a $10 credit.
Yeah, if you're trying to generate JPEGs and send them down, it's all in your server.
Yeah, exactly.
It's kind of in the direction of modern web applications.
You know, it's always impossible to publish images and static plots to the web.
It's sort of just traditional standard HTML serving.
You embed JavaScript, and there's a bit of interactivity.
And the next step, of course, is to have that bidirectional communication with the server, that they use WebSockets to do that.
And Bokeh makes it easy to take advantage of all of that.
Yeah, and it's already beautiful, so you don't have to be a designer.
Very nice.
Right.
You don't have to be a designer.
Right.
You don't have to learn JavaScript.
You know, we wrote the JavaScript, so you don't have to.
It's one of the, kind of make it accessible to the data scientist or the scientist who's, you know, the issue with the data scientist, they may learn Python because it's accessible.
Not necessarily become an expert Python programmer, but they don't learn enough Python to do their workflow and to accomplish their goals.
And they don't want to learn a ton of languages in order to get all the way there.
And quite often, getting farther along means building a publication or building a graph, building a visualization.
And so, you know, our mission is to support that group of people and make it really possible for them to translate their ideas and their thinking to real-world interactive visualizations they can communicate to somebody else about and have that just happen seamlessly and transparently.
And we do that, you know, part of its open source libraries that form a core, part of its, you know, integration pieces that we maybe sell at a high level.
And, you know, someone's just doing services for somebody to build that solution for them and ship it on premise.
Yeah, really nice.
Did you guys create Bokeh?
Yes.
Bokeh is a project we started.
So did you look around at the other things that were out there and say, you know what, all of these are nice, but they just don't quite fit the story of getting on the web?
We did.
Yeah.
Exactly.
We spent a lot of time.
We looked at D3 pretty hard.
Like some people have done a really good job of putting Python interfaces to D3, you know, and certainly Bokeh, you can also integrate D3 and Bokeh together.
They're not sort of, it's in the web, so you can build kind of mashups.
But, you know, we wanted to use the canvas.
We wanted to make sure we could scale out to millions of points, and we actually can get to billions of points on the browser-ness per se, but you can deal with billions of points and then push the ones in the browser you need.
We have a technology called data shading that's a really exciting technology associated with the Bokeh project that's up and coming, kind of one of the only ways to visualize billions of points easily.
And we wanted to control over that.
So we knew kind of where we were headed.
We knew we had to do that.
And, you know, it's been really good.
It's hard because you have to build a JavaScript library and build the Python interface on top and then promote it, ask all the questions.
But it's given us the control.
One aspect about other JavaScript libraries is they weren't really built with other languages in mind.
There's a lot of libraries that say, basically, yeah, you should be a JavaScript developer, and then you can use it.
If actually Bokeh is a JavaScript library that's easier to use from Python and R than it is JavaScript.
Yeah, that makes a lot of sense.
I mean, a lot of those great libraries, they're like, okay, well, you can do this in the client side, and then you connect to your own custom services that you dream up.
Yes.
And you write the server side, and you do all this stuff.
And, again, if you're a web developer, fine.
If you're a data scientist and you're trying to solve a problem, it's easy to forget as developers that not everybody in the world is a developer.
They have their own special skill, right?
And so they let them focus on their skill.
That's cool.
Right.
And the cool thing about Python, honestly, is it bridges that world, those worlds.
And it's because of this.
I think it's because it was a teaching language to start with.
And so it's meant to fit in your brain, kind of, and not take too much space there.
And so leverage your English language centers and other things you do.
And the white space, the visualization, the white space consistency is part of that.
And so because of that, lots of capability, lots of scientists, lots of data scientists come to Python and can work there together.
And they start to want things like a developer would want, but they want it a little differently.
They don't want to become developers.
They just want the capability.
That's right.
Kind of presented to them.
That makes perfect sense.
Yeah, it makes perfect sense.
So what does a typical Anaconda user do?
Like, who is your typical user?
Like, what are some notable things people have created?
Things like that.
Oh, yeah.
I mean, that's a great question.
They expand the spectrum.
It's what I love about the work we do and what I've been doing the past 15 years, honestly, is just the breadth of smart people that we interact with.
You know, so it might be a geophysicist trying to understand where to find oil.
It might be someone managing a reservoir.
It might be somebody on Wall Street.
Maybe they're managing a portfolio for their clients.
Or maybe they're trying to figure out a new derivative, a way to manage risk and trade risk.
Or they're trying to figure out how to avoid a 2008 crash.
You know, figure out what their risk of exposure is to people.
It could be, I mean, we have people who are actually this really great user has a story around, they're finding rare diseases.
They have a way to use microscopy to kind of single genome, single gene changes that cause certain rare diseases.
So they're diseases that are not well funded.
Nobody looks at their heart expensive to do anything with.
But they have a technique where they can study it and understand it because it can be reproduced with a single gene knockout or a single gene change.
And so they're using anaconda and bokeh and visualization to try to, and Jupyter notebooks, to look at workflows where they image a bunch of cells with different knockouts and try to find drug treatments.
There's pharmaceutical companies that have lots of drugs that they're looking for use cases, right?
And they have a platform for essentially testing these use cases against these single knockout models of genetic diseases.
So, you know, people who are helping essentially find cures for rare diseases, basically using these tools, which is awesome to see.
Yeah, that's really great to see people actually making lives better with software that you create or at least help support, right?
Exactly.
You know, that really makes my day when I, I mean, it really helps motivate.
It helps motivate me.
It helps motivate the company.
It's what we try to do is really make, like our mantra is, you know, we make the world better by helping people that change the world do their job.
Yeah, yeah.
Very cool.
What is the most surprising sort of use you've seen people try to do something with?
That's interesting.
I think, I think some of the embedding, you know, people embedding it in really small footprint places.
You know, I think that's what, you know, like I didn't expect people to like try to get Anaconda running on a tiny phone or tablet or, you know, if it was getting bigger these days.
But like, I'm less surprised now, but I think early on I was kind of surprised.
Yeah, what people do with like mobile stuff these days is, you know.
Yeah.
Like the Raspberry Pi.
Like the Raspberry Pi was an example.
But, you know, we had, you know, one cute Elon for April Fool's a few years ago did a Python 1.0 Conda package.
Just to kind of install Python 1.0.
How nice.
Funny.
Just a proof of confidence.
Of course.
You can manage all kinds of fire versions of Python.
That's a hard one.
I'll have to think about that.
There's a lot of great use cases, but.
Yeah, it's hard to pick the most surprising, right?
They're all surprising, I'm sure.
We talked a little bit about running a business on open source.
And I went and I got Anaconda and I downloaded it.
And you didn't even make me give you my email address, which thank you.
Thank you for that.
But you have Anaconda free.
And then you have some other things that are kind of products.
So you've got like a pro, a work group, and an enterprise version.
And you also talked about the Conda cloud.
Is that right?
Yeah, Anaconda cloud.
Yeah.
Okay.
What are all these?
Yeah.
So maybe I can address the first question kind of generically.
We do have to sell things to be a business, right?
Like businesses, at the end of the day, they sell stuff, right?
And what we sell is we sell services, we sell training, we sell software.
And what we described is our software offerings.
And we have subscriptions to Anaconda.
And their targets are really the enterprise usage.
You know, if somebody, we want hobbyists and academics and even people in enterprises to
use this.
But if you start to become dependent on it, you're allowed to think about looking at subscriptions
so that we can support you in your use cases and make sure that your new versions don't go
awry and you can be well supported.
So the first tranche is basically just supported Anaconda.
And that gives you the identification and then the priority support so you can call us and
kind of get what you need fixed on your timescale instead of ours or your sort of open source
timescales.
So that's kind of the first thing.
Kind of the...
I personally believe that that's not enough.
I think people, from a business perspective, I think just the way we are as people, we kind
of...
We need kind of additional stuff in order to get us to open the checkbook and send out money.
We need kind of get more stuff.
So we've added additional things into the workgroup and enterprise subscriptions.
And those are in the direction of repository management.
One of the things workgroup provides you is the ability to manage exactly what Anaconda users
internally are getting.
You know, if you download and sell Anaconda, you can point to our repositories and get
kind of this open source set of repositories.
But a lot of companies want more control over that.
And so Anaconda workgroup gives you a chance to have your own private mirrored repository.
You can control what goes there.
And you can also, you know, you can build packages and upload them to there and manage kind of the
deployment of Python and applications built around Python throughout your organization.
So it's kind of a repository server.
Yeah, there's certain places where that matters a lot.
Right.
Either it matters a lot or it doesn't matter at all, I think.
Correct.
That's exactly right.
Exactly right.
You know, like I did some work.
Exactly right.
I did some work with the guys at NASA.
And I was showing them all sorts of stuff like, okay, here's what you do.
And you've got to install this and this and this.
And you just, you know, they're like, whoa, wait a minute.
We can't just, you know, download that stuff and install it here.
Like there's rules and there's restrictions.
There's rules.
It's got to be approved.
And, you know, so.
Right.
Exactly.
To address that problem, right?
Yeah, exactly.
So Anaconda Workgroup becomes a single point of, you know, we know it's approved here and then we can control it.
And it kind of helps the IT organization understand it.
And, you know, it's growing things.
So it manages work.
It manages environments and packages and notebooks.
You can actually see what's deployed for somebody with Anaconda Workgroup by going to Anaconda Cloud.
So Anaconda Cloud is a, it's an anaconda.org.
It's a URL.
Anaconda Cloud story is kind of what gets installed behind your firewall if you get anaconda workgroup.
Anaconda Cloud is really about people who just gives everybody the ability to have, I want to publish my content packages and have other people see them.
And it gives you an easy way to do that.
So you can say, hey, here's my, here's my environment.
It's got these package dependencies.
And I want to be able to point somebody to it so they can get it exactly.
Not just they have to rebuild it and then hopefully get the same environment I had.
But here's the binary packages that actually work for me.
You can put those in a, either individually and also we have an environment specification, an environment concept.
And you can publish that and somebody can just point there to that, to Anaconda Cloud and then they can, they can get exactly the reproducible result they're looking for.
It can be a big problem in science.
When I was talking to the guys at the LHC, like it was a really big deal.
Yes, exactly.
The reproducibility, making sure you have exactly the same version of everything.
And if you're working in science, reproducibility is kind of key.
It is key.
Exactly.
Science, but also businesses have the same problem.
They want to, a lot of time is spent just rehab.
Like, oh, I had this bug.
Well, okay.
And what's your version of the, what's software and what's your data environment?
Like just getting that reproduced to where you can actually figure out what's going on.
People spend all kinds of money and time doing that.
And this, basically, we have a part, you know, our technology helps in that solution to really streamline that story.
I would say it's not as well appreciated, I think, as other, we have not had the resources to market quite as big as other people have.
And we're trying to change that.
But the ability to take people who use it and really find out, oh, content environments, this is really nice.
I can do this very quickly.
Because, you know, the rest of the IT world is pushing other stories.
And it's not those stories aren't good.
They're just sort of overkill sometimes.
And oftentimes a simple content environment will give you that reproducible environment very easily, very quickly.
Right.
Like one of the alternatives might be, hey, go use Docker and get this series of images.
Correct.
I think people, and that's great.
Docker has, it's great.
I think it's overkill for some of these cases.
And this is sort of lightweight.
Again, not everybody's a DevOps engineer.
Correct.
Also.
Exactly.
So we're working closely with the Jupyter community and others to try to, you know, I think there's a really, it's getting to the point where people can quickly do this.
And, you know, we're constantly making improvements to the UI and how easy it is to do and make sure it's, you know, make sure that we don't require, you know, turning into another DevOps person.
I mean, there's some of that that's probably a little harder than we would like today.
But some of it's really easy and people are able to do it successfully.
So that's kind of Anaconda Cloud.
And the work group provides that capability on premise.
So you don't, you know, you can own it, control it on your servers, and you can decide how your people use it.
So for testing and reproducibility, there's also a component that will, we manage a build.
There's kind of a build queue so that you can actually submit jobs and get kind of continuous integration of your packages and have things up and running all the time.
So that's an aspect of the product too.
So things like that that we're selling on that side.
And we also, for enterprise, that next level is where we offer the kind of enhanced Jupyter experience.
You know, really about integration with your single sign-on capability, LDAP, PKI, Kerberos.
People have enterprise single sign-on they've got to integrate with.
And we've taken the Jupyter and Jupyter Hub capabilities and we enhanced those to integrate with people's enterprise stories.
Right.
So like if they're logged in on their Windows machine on their Active Directory and...
Exactly.
Active Directory interface.
You can have like a private Jupyter notebook running on the web that only they can get to.
I see.
That's exactly right.
Exactly right.
So that's what the collaborative notebook capability.
And we've added a couple of little things.
We're working right now.
We've got a great project going on in conjunction with Bloomberg and the Jupyter team to actually read kind of the next generation of the Jupyter notebook.
There's a Phosphor project and we're working closely with kind of how do we improve that.
A lot of stuff.
Again, we love to contribute to the open source.
We love to make the foundations even better.
And then typically we sell things that really help the enterprise and tie into their deployment conversation.
It seems to me like running a successful open source business is about having like different channels for different ways, different things you can offer to different people.
There's a guy that...
Very insightful.
Yes, indeed.
Yeah, thanks.
A guy that blogs and podcasts a lot about sort of tech business stuff.
And he has a really interesting saying that it's harder to go from zero to one cent than one cent to ten dollars.
Do you feel like it's kind of that...
Yeah.
Like get somebody to open up their pocketbook at all is like really a big step and then you kind of have this relationship?
Yes, agreed.
Agreed.
It's a big, big jump to go from not paying you anything to paying you something.
Yeah, even if there's something that's super small, right?
Exactly.
And, you know, when we first started the company, that's actually why we had these add-ons.
And we've just switched our promotional model, like how we're shipping, what we're selling on the product side.
So we're in the middle of that transition still a little bit with some customers where we used to sell these add-ons.
And part of that, the reason we did that was precisely to just have a conversation about selling something with those who would engage in that direction.
Because I knew we would be promoting open source.
I knew we would be driving a lot of stuff for free.
And I was excited about that.
But I knew we also needed to have the I'm going to sell you something conversation so we could segment the market appropriately.
Yeah.
And then kind of set expectations that this is what we look to do is.
We do both.
And so people can understand if they only want to engage with us and our free stuff, they can do that and understand that we're not – it's not a bait and switch.
It's not a – we're certainly trying to encourage adoption, and hopefully some of those might buy our stuff later.
But if you've decided just use the free stuff, yeah, you use the free stuff.
Then let's collaborate on open source.
Let's collaborate in the community.
Let's collaborate around how we move this thing forward together.
Yeah, absolutely.
That's great.
So, Travis, we're getting kind of short on our time here.
Do you have any call to actions for the listeners out there?
Yeah, you bet.
Absolutely.
I would say definitely go and download Anaconda.
If you haven't tried it, I think if you're a new user, absolutely download Anaconda.
But if you're an old Python user, you might find that we've actually solved some things that you're having trouble with.
And you might try it.
It doesn't interfere with your Python installation.
It's a new – you can install it in your user account and kind of use it separately.
A lot of people used to tell me they were afraid to install anything new because it would mess up their work.
Anaconda doesn't mess anything up.
It's just completely separate.
Yep.
And you've got a Python 2 and a Python 3 version, right?
We have Python 2, Python 3 version.
And then, you know, see if you want to sign up for an Anaconda Cloud account.
It's a free account, and you can post packages there.
And then if you're an academic, you can get access to our proprietary libraries through that Anaconda Cloud account as well.
And, you know, set up an Anaconda community somewhere, you know, locally and attend the PyData conference.
There's a PyData conference in New York coming.
Attend one.
And if it's not one that's coming near you, there are 10 next year coming near you, then set up an Anaconda community and participate.
Yeah, that's excellent.
Are you guys going to be at PyCon?
Yes.
We go to PyCon.
We'll be there again.
I'm quite sure.
In Portland this year.
Right?
Yeah.
Excellent.
That's my hometown.
I already got my ticket.
So it's going to be great.
Hey.
All right.
We'll see you there again.
Yeah.
I hope so.
Cool.
And then two other questions I always ask my guests before I let you go.
If you're going to go write some Python code, what editor do you open up?
So it's either VI or Sublime Text these days.
Okay.
Yeah, they're both good.
Good, good.
And of all the PyPI packages out there in the world, 60 plus thousand of them, do you have some favorites or maybe things that people don't know about that you're like, oh, I wish you knew about this.
I should tell everyone.
Oh, so many.
I will tell you about Distributed.
Distributed is one that we are working on.
Matt Rockland, who many may know about because he's really cool and does a lot of cool stuff.
Distributed is a way to do parallel computing in a modern Pythonic approach.
And it's going to be the way Dask runs on multiple machines.
Okay.
So it's a separate library and it'll be the foundation for how Dask.
There's two, Distributed and Dask.
I think those are worth your attention.
And a lot of people already know about them.
But those who don't, they're worth looking at because they're very, they're going to basically give to Python a Spark equivalent.
Okay.
That's awesome.
Without Spark.
For at least for the medium scale, you know, tens of nodes, tens and twenties of nodes.
All right, Travis, it's been great.
Thanks for being on the show.
I really appreciate it.
I really appreciate it, Michael.
Thank you so much.
And good luck.
And good luck with future shows.
Yeah.
Thanks a lot.
Bye-bye.
This has been another episode of Talk Python to Me.
Today's guest was Travis Oliphant.
And this episode has been sponsored by Hired and DigitalOcean.
Thank you guys for supporting the show.
Hired wants to help you find your next big thing.
Visit Hired.com slash Talk Python To Me to get five or more offers with salary and equity presented right up front and a special listener signing bonus of $4,000.
DigitalOcean is amazing hosting blended with simplicity and crazy affordability.
Create an account and within 60 seconds, you can have a Linux server with a 20 gig SSD at your command.
Seriously, I do this all the time.
And don't forget the discount code.
It's Talk Python.
All caps.
No spaces.
Did you know you can personally support the show as well?
Just visit Patreon.com slash mkennedy and join over 100 listeners who contribute between $1 to $2 per episode.
It makes a big difference and I really appreciate it.
You can find the links from today's show at talkpython.fm/episodes slash show slash 34.
And be sure to subscribe to the show.
Open your favorite podcatcher and search for Python.
We should be right at the top.
You can find the iTunes and direct RSS feeds in the footer of the website.
Our theme music is Developers, Developers, Developers by Corey Smith, who goes by Smix.
And you can hear the entire song on talkpython.fm.
This is your host, Michael Kennedy.
Thank you so much for listening today.
Smix, take us out of here.
Staying with my voice.
There's no norm that I can feel within.
Haven't been sleeping.
I've been using lots of rest.
I'll pass the mic back to who rocked it best.
Thank you.