Not everyone comes to software development and Python through four-year computer science programs
at universities. This episode highlights one alternative journey into Python. Over the course
of two episodes, you will meet people who started in other industries and specializations and now
make Python part of their daily experience. Some of them have used programming to power up their
specialization. Others decided they'd rather just be doing programming full-time and made that switch
over. This episode is part one of a two-part series. Our guests this time are Derek Chambers,
Jim Taysom, Arash Shoheli, and Rob Ward. This is Talk Python to Me, episode 173, recorded July 25th,
2018.
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 talkpython. This episode is brought to you by Linode and brilliant.org. Check out what
they're offering during their segments. It really helps support the show. Derek, Jim, Arash, and Rob,
welcome all of you to Talk Python.
Thanks for having us.
Thank you.
Great to be here.
Thank you.
You're welcome. It's good to have you all here. I'm really excited about this short series of shows
that I'm doing on people getting into programming in Python from other disciplines like chemical
engineering or accounting, things like that. So I guess we'll get started by kind of setting the stage
and talking about where you're coming from because you're not really full-time developers.
you're doing other stuff and using development as kind of a superpower. So I guess the first thing I
want to ask you guys is what is your industry? What is your specialization? What do you study? What
are you doing day to day? And I guess we'll start with Derek.
Great. Well, I'm a mining engineer who studies earthquakes and works for the Centers for Disease
Control. So I usually get a lot of blank stares when I introduce myself that way. Essentially,
the Centers for Disease Control has a group that does occupational safety and health research,
and I work within that group studying the mining industry.
That sounds really interesting. What kind of background do you have to work in this? Did
you go and get like a bachelor's degree in mining and geology?
Yeah. So I have a bachelor's degree in mining engineering and then I did my master's work in
geophysics.
Very awesome. Jim, how about yourself?
I work for Radiant Solutions. We're federal contractors in the DC area. My background is as a
geographer. I got my bachelor's degree in geography with a focus on geographic information systems.
And more recently, I've been transitioning into a full-time developer role because of picking up
Python and all the things that's led me to.
Yeah, that's pretty awesome. You know, I had a similar path. I studied something else and I just
did more and more programming until I'm just like, why am I doing that other stuff?
But are you still doing programming around GIS? I know Python and GIS are like a really good fit.
ArcGIS and the Esri folks do a lot with Python, for example.
Yeah. So I'm still very involved in the GIS community. The project that I'm on is very GIS
centric, although I'm doing more of like the web backend for the project right now.
Okay, cool. Arash, how about you?
Yeah, I'm working for MarketSmart and we do like software and services for nonprofit organizations
exclusively. And I was traditionally trained as a organic chemist, but I've pretty much transitioned
over now. So I'm not really involved in doing really chemistry anymore. Maybe in the future,
I'll maybe get back to a cross section of doing something with software and chemistry, but I'm
pretty much doing software engineering now full-time and not really as much doing it, not really doing
any chemistry anymore.
That's pretty interesting. How do you feel that studying like a science, like a hard science
background sort of helped you become a programmer or did it not help at all?
I think it helped. And what I realized is the skill that I had as a scientist is basically
the scientific method and the problem solving approach is actually exactly the same as software
engineering. When I came over, I realized that the approach to solving problems, you know, forming
a hypothesis, researching what's out there, testing something, feedback loop. That's literally
what I did in as organic chemist every day. And so the same process is really applied to
software engineering. It's really the tool set that's changed. Obviously, I'm a guy chemist,
so you're in the lab messing with chemicals, trying to make stuff. And in software engineering,
you know, you have a computer and you're trying to build software, but the approach to how you're
going about solving a problem was actually the same. And it actually really, I think, kind
of helped me be able to make that transition.
Yeah. I had it, like I said, a similar background. And I feel like, you know, people will joke like,
Michael, you almost got your PhD in math, but does that seem like a waste? Right? And I don't
think it was. I think like those types of thought processes are really, really similar. And like you
say, the problem solving and stuff like that. So I think it prepares you pretty well. Yeah. So Rob,
how about yourself?
Yeah. So I got my bachelor's in accounting and had some accounting jobs early in my career. And I've
always been technically savvy and kind of along the way, I got exposed to SQL and that kind of led to,
Hey, this is kind of cool and more interesting than accounting. And then from there decided I wanted
to learn Python. And I will say like some of the others, I am not doing accounting anymore. I'm a data
analyst. So working my way towards data science and working on a master's in analytics. So that's cool.
So you're still going to school for your master's degree right now. How far along are you?
Right. Right. I'm about a year and a half in and I got a year left. So I'm just taking one class at a
time. Just keep it simple. Yeah. No reason to go full time. Right. Yeah. Kids and all that. But,
but yeah, from an accounting standpoint, I did actually use Python when I was still doing accounting
work a few years ago, which, you know, we can get into more a little later. Yeah. Sounds good.
So I guess maybe go back in reverse order with you, Rob. If you're in accounting, you know,
Excel is programmable, right? People do ridiculous stuff. I think I've seen a flight simulator created
in Excel. Have you seen this? I have not seen that. There's a pretty intense stuff done in Excel.
So, you know, it's probably like the natural place to do like automation and stuff like that. So why do
you learn Python and programming? I had years ago, I had, I tried to learn C and that failed miserably.
I mean, it's hard, man. Yeah. Yeah. I was like, what is this stuff? And so then I kind of decided
again, you know, data science was starting to become a thing and I knew I wanted more of a
business intelligence or data analyst type of role. I was doing accounting and, not the name drop,
but my brother works for GitHub. So he's like, you should learn Python. I'm like, okay, I'll learn Python.
So, you know, I think it was about, it was five years ago and, I just started on,
I think it was that learn Python the hard way, which I know that's going to be controversial
to some people, but, it was a good starter. And then also took some Coursera courses. They have a
lot of Python, courses, got through about half of it until I got to, object oriented programming and
was a little dumbfounded at the time. And, I was able to, to see the value and see that there
were things that could be applied to things I was doing every day in my accounting work,
which I don't know if you want to get into that right now or a little later.
Yeah. Let's get into it maybe a little bit later, but I think there's definitely some really cool,
like automation of, of sort of Excel and processing of those files. And there's lots of
cool stuff in there. Yeah, for sure. Yeah. We'll dig into that. So Arash, why did you get into
programming in Python? You were in the lab, your hands are already got like gloves on. It's hard to
type. Yeah, yeah, yeah. I know. I, I, I mean, honestly, I, I went down a path where I was trying to do
in chemistry, but I got into pharmaceuticals and, and I started not liking the big companies in the
pharmaceuticals. I, I thought about, academics and it was not looking good as a very few jobs.
Funding is kind of bad. And I'd always been interested in technology and I was doing some
web development, not really much programming, but I was doing that stuff. I was getting more and more.
And then eventually I kind of just, I don't know. I've always been someone that,
that kind of takes chances. And so I kind of just was like, well, let me try to see if I can,
you know, work my way into, into this field. And I kind of, and I got there and I kind of
pulled myself up, and learned and, and made it through. So it was really kind of been the
industry of, of chemistry, at least for me, didn't really kind of, kind of failed me.
At least for me. Yeah. But actually the Excel thing you were talking about, I will say something.
We actually had an entire application here. We built Marcus Smart out of this, Excel. We had this,
uh, this guy who was working for one of these nonprofits who had this crazy Excel file
that he, nonprofits would send him his data and he would just, had this,
basically these macros he had written and it would take like, some of it would take like a data run.
And he finally came to us and we talked to him. He's like, you know, this is, this is awesome.
People are sending me this stuff. They love this thing, but it takes me so long to run. I'm like,
can you put, make the software as it? We're like, yes, that's what it should be for. So we actually
built an entire application. it's called the fundraising report card.com that is out of,
came born out of literally of Excel files. That's awesome. Yeah. I think there's so much
programming happens in Excel, honestly. So one thing I wanted to ask you coming from on that path,
do you feel, I know a lot of people talk about imposter syndrome, not coming with a computer
science degree. Was that a problem for you or were you okay with, did you feel like, do I belong in
this programming world? Like how do I sort of prove that I earned my chops here? Yeah. Yeah. No,
I think that's real. I mean, I think people feel it. I've definitely felt that. I think the first
year was really tough because there was a lot of nomenclature, a lot of words. I just didn't
understand. And literally there was a moment I, even though it was an accumulation, I literally
remember a moment after a year where one day it just kind of like clicked and I was like, okay,
I understand. Like, I don't understand. I don't know everything, but now I can understand. I can read
an article. I can go through something and comprehend and work my way through it. Where before,
you know, I would get lost sometimes just completely not understand concepts. So I think
it's real. And you got to, you know, read, read, read. I read constantly and you got to just always
train yourself and always be training. So to keep, and I think at some point you get over that to a
level, you're like, okay, I think I got, you know, through it. So yeah, I think it's, I mean,
you got, and you got to work through it. Yeah. I agree with that. I feel like once you get to the
point where you've learned enough new things repeatedly, you're like, there's a lot of stuff I don't know,
but if I need to know it, I can learn it really quickly. And once you kind of get that skill and
experience, I think the posture syndrome really fades pretty quickly. But yeah, if you don't like
continuously learning, this is not the industry that's going to work out so well.
Yeah, for sure. I mean, I think learning is, is a, and things change so much in software engineering,
I mean, almost on a weekly basis that you, you better be ready to be learning all the new stuff
and at least keep up to date with it.
Yeah, for sure. Jim, I think probably your introduction may be the simplest. If you're
in GIS, you almost have to learn Python to do some of that stuff, right? But what, what was the
motivation for you?
So for me, the first couple of years of doing GIS, I didn't really need to use Python at all. I ended up
in some mandatory training that I didn't need. And so I would spend hours and hours and hours every day,
just completely bored out of my mind. So I started going through all the ArcGIS documentation on how
to use ArcPy and started teaching myself Python enough that within my realm, I was willing to put
it on my resume. And then there was another position at work that needed someone who knew Python because
they had this old VBA application that was written for ArcGIS that they needed to replace because
Esri was...
Because it's VB6.
I don't even remember what it was.
Or VBA or whatever it was, yeah.
They needed someone that could take what they had and recreate it in Python because Esri had been
telegraphing for a while that they were going to be dropping VB support. And so it was more than I
was ready for, but they couldn't find anyone else. And so I just told my boss, I was like,
I can do the project, you just have to give me at least a little bit of time every week so I can
do some at-home Python training and figure this out. And I did it and loved it and started doing
more of it.
That's really cool. It's cool how you're able to sort of laterally move in your company because
of it too. It's not great to be stuck in mandatory training that's super boring, but at least you
made a really good use of it.
Yes. I use my time well.
Awesome. Derek, how about you? What was the motivation for getting into programming?
Yeah. I first got into programming when I started graduate school and I had an advisor
that was really hands-off. And so his charge was kind of just go figure out something new
and novel and useful and do it. So I ended up changing my research topic, I think three or
four times, but I was finding that it was very hard to use some of the existing tools that I'd
known to build sort of a larger system that would do something interesting. And so I run across this
Python package called obspy, which implements a lot of format parsers and data classes for handling
seismology data. And so once I found that, I got into Python and I was able to build this bigger
system that actually looked at implementing a newer method for detecting very small seismic events.
Like micro earthquake type things?
Yeah, exactly. The typical seismicity associated with mining is pretty small, so you have to have some
clever methods for detecting it in most cases.
Nice. And you said that you're now a contributor to that project, right?
That's right. Yeah. I'm a maintainer for obspy. I really enjoy when I can find some spare time,
you know, making improvements or suggesting different things we can do in the future.
Yeah, that's awesome. So what are my feelings about sort of people becoming programmers and having
these skills is it's great to just have like a computer science degree. You can solve problems and
programming stuff. But I think the real value of many more people having programming skills and Python
skills is like it's kind of a superpower for the thing that you do do. So I wanted to ask you all
sort of how you saw that in your industry. I know not all of you are still doing that day to day, but you know,
it sounds like all of you sort of got started in programming while you were still in that industry.
So Rob, what do you think about this sort of power up idea?
No, yes, I can attest to that firsthand because in my last job that was truly an accounting job,
I was I was the accounting manager for a small company in my hometown. And we had they were a
property manager and had over 500 homes or mortgages that that I had to manage. So every month I was
sending out these mortgage payments and I have to put them in the in our accounting package, our software,
right. So I found out there was an easy way to or there was a way to import the data. But there was
no easy way to create that in Excel, at least not that I could find I didn't want to manually type
these out. So I, my first project in Python, you could say was, I figured out how to do all the loan and
amortization payments and the principal and interest, and make them basically batch load this entire file
for the month. And that's been my workflow, you know, made made paying the bills so much easier
from a daily on a daily basis.
That's great. And there's so many examples, I'm sure that are out there like that, like even in my stuff,
you know, obviously, I have to write code to run websites and things. And I've done other types of
programming for many years. But like, one example was, I have all of these, these videos for the courses,
courses, and I had to import them. It's when I load a new course, and it doesn't sound like a big deal. But
you've got to set the time and like the duration, there's just tons of stuff. I was even thinking of
hiring somebody to like do that. And I'm like, wait a minute, I want to just write a program. And now it's
like, you know, a five second command line type it and boom, it's done. It's, it's just so nice when you have
those realizations, like, why am I doing this by hand? There's something surely this, this can be automated,
right? That was the impetus for me, you know, everything was doing, doing in my hand. And I,
and I had played around with, you know, maybe people have heard of auto hockey, you know, I'd done made
macros with auto hockey before years ago in windows. And so this is kind of a similar idea, like, just
automating simple tasks that you have to do anyway, but might as well just speed it up.
Yeah, I can see somebody actually deciding, I'm going to go do that from the coffee shop,
taking every other Friday off as their code runs and, you know, does the work they did for half a
day. All right. So, Jim, how about you with this, this power up idea?
So it was actually really, really amazing. Some of the things that I was able to do
like really early on in learning Python. So a lot of the GIS workflows are really intensive and you're
doing a lot of steps over and over. There's been a couple of things where I've done where you might be
taking and doing like four things, but you do them a thousand times in a row. And without something
like Python, that's almost impossible to do. And my favorite example is there was a coworker who was
working on trying to do some correlations between some various data sets and his manual workflow that
he was using would take him between three and four weeks. So he was spending 120 to 160 hours,
like just manually just going through the data.
It's like, not only is that inefficient, but that's got to be terribly ungratifying type of work.
Oh, just terrible. Cause it was just like, click, click, click, wait five minutes, click, click,
click, wait five minutes for weeks on end. And when I heard about that, I was like, all right,
let's fully explain what you're trying to accomplish. And I'll work something out. And a week later I had a,
just a little script written in Python that did his entire workflow. But instead of being able to like
correlate, like, like the top three correlations, I was able to correlate all of the data sets
and the entire script would run in eight minutes. So I replaced a month's worth of work with an eight
minute job and it only took me a week to do it.
That's incredible. What was the reaction of this guy?
He was just completely blown away because like he went from being able to do like this type of analysis
12 times a year to being able to do it 12 times before lunch.
Yeah. That's amazing. I've worked at companies before where there are a lot of like real scientists
doing scientific work. And it was this kind of thing. It was like really manual involving lots
of different sort of software pieces like Excel or other MATLAB or stuff glued together. And there's
they did the tedious little steps thinking like, this is how you do it. And it just, you have to do it
this way. And me and a couple other folks, we sort of systematically started automating like the
worst of these things like you're describing here. And every time something amazing like that came
out, it was like, oh, you're going to automate us out of a job. It was like, oh, yeah, this was my job.
And now I don't do it anymore. What am I going to do? But of course the next week they were doing
higher level stuff or doing it more in more depth or whatever. And those people never got automated out
of a job. As far as I could tell, there's always more problems that can be solved once you free up some
time. This portion of Talk Python to me is brought to you by Linode. Are you looking for bulletproof
hosting that's fast, simple, and incredibly affordable? Look past that bookstore.
And check out Linode at talkpython.fm/Linode. That's L-I-N-O-D-E. Plans start at just $5 a month
for a dedicated server with a gig of RAM. They have 10 data centers across the globe. So no matter where
you are, there's a data center near you. Whether you want to run your Python web app, host a private
Git server or file server, you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network,
24-7 friendly support, even on holidays, and a seven-day money-back guarantee. Do you need a little
help with your infrastructure? They even offer professional services to help you get started with
architecture, migrations, and more. Get a dedicated server for free for the next four months. Just visit
talkpython.fm/Linode. Derek, power up idea? Yeah, I think there's kind of three components to
this. The first one is scale. You can usually do a process a lot bigger data sets with Python or some
other programming language than you would normally with Excel or some other tools that you might be using.
The other one is maintainability. You know, you can put Python scripts into proper version control like Git,
see what changes and when it changes. Unlike Excel, where you might have people that are working on a
common workbook and change different things and you don't know who changed what. And then also really
increasing the level of automation. Just like Jim had mentioned, I've had a few experiences, nothing
quite as dramatic, but you know, co-workers have come to me with a really manual process and asked for
help automating it. And we've been able to do that in Python and save a lot of time. That's cool. Are
you, are you known as like the guy that you can come with manual stuff and you can fix it? I'm trying
not to let that reputation spread, but yeah, a little bit. This podcast won't help, I'm sure.
Arash, how about you? An example we have is, and I think, yeah, it's very important to kind of get
everybody to understand that, that a little bit of programming knowledge can really make you very
powerful. We have account managers who, similar story, were doing some manual stuff that, some
campaign data that wasn't available via an API. So they were literally going to every account and like
putting copy and pasting it to an Excel. And of course that made it tedious. So eventually they came to us
and I kind of, with a, with somebody helped them write a web scraper with Selenium to just basically
scrape that data. And so something that took her basically eight hours or a whole day, or, you know,
would just bog her down. We were able to do it like basically the same thing in five minutes, which, you know,
they were very thankful for. And she is actually somebody who is starting to learn Python. And I think that's the
thing, like for people to get into using programming to make themselves super powerful, they do need somebody or
somebody to really kind of show them the benefits of it and kind of get them in the direction. Because I think it's,
that's not the first thing they're going to think about, because it's not natural for them. And also,
they don't really know how to get into it. So I think it really, to kind of make that happen,
you kind of do need somebody to kind of show them the way. And then hopefully that gets them excited
enough and realizes the benefits that they can start to go down that path and realize, yeah,
I could be an account manager, I could be a product manager, I could be kind of anything, but with a
little bit of programming, I could be a really powerful account manager or a powerful product manager or
whatever field you're in.
I think that's a really great point about sort of seeing the light and realizing that it's not
all that complicated. Because to me, before I got into software development, programming computers
seemed really like a deep, complicated thing that took years and years and years of studying. And you
had to be the right type of person to have that kind of thinking and that just that knowledge,
right. And while there is some type of like, some types of software that probably is that way,
like writing a kernel for a new OS that you've invented, probably is like that. But a lot of the
stuff that we're talking about, and what most people need is actually not that that bad. But
you kind of have to see the light, right? You're like, wait, you did that in 15 minutes. And now
my horrible job I did for eight hours once a week is now five minutes in automatic, like,
maybe I could do that.
Exactly. I think it's also and I try to tell everybody in our company that it's like,
you know, you don't need just because you do a little bit of programming, or you're going to
use some tool doesn't mean you're a programmer doesn't mean you're going to be an engineer.
That's not the point of it. It's just a tool set that's going to help you do whatever is your job
better. So you don't need to think that I have to be a programmer or have to be an software engineer
to do it. It's just a tool set that you can learn just like any other tool set.
Yeah, maybe you are into psychology, and you don't want to be a programmer, you want to be a
psychologist. Well, I'm sure there's awesome stuff you could automate and discover and make you a
better psychologist, right? You don't have to give that up.
Exactly.
All right. So let me ask Derek and Jim this one, because you guys are still doing the sort of
what you studied day to day. How has learning programming changed what you do day to day? Like,
has it changed your job? Or has it not really?
So I guess I'll start, I would say that it's completely changed almost everything that I do,
because ArcGIS, it's very good at what it is. But it's also very expensive. And so a lot of places
don't necessarily want to use it. And it's also quite slow. And so there's a lot of things I can do in
Python that are a lot faster. But one of the things that you end up missing is that like that interface
that ArcGIS provides. And so now I'm doing a whole lot of like, web programming and back end
development to like, like build up a core system. But then you still need something that like can be
provided to a UI so that when my teammate makes a really beautiful UI, it can consume everything that
we've processed on the back end.
Yeah, that makes a lot of sense. I think this is really great. Derek?
Yeah, so a lot of people that study seismology are already kind of halfway programmers, you can't
really do much in seismology without having some programming knowledge. But a lot of tools that were
common there were things like Fortran and scripting things together, stitching them together with bash,
that sort of thing. So I think Python has given me maybe an advantage over a lot of those
old workflows and that I can prototype things faster, maybe try out a new research idea much faster than
than I would have if I wasn't using Python.
Yeah, there's probably a lot of MATLAB and those types of things going on as well there.
Right. Yeah.
Yeah. So what type of packages and tool sets do you guys use? Is it like Anaconda? Is it Django?
Derek, I'll keep going with you first, I guess.
Yeah, I mostly use Anaconda. That's been a really great system for us just to avoid a lot of the
compilation, especially when we have to work on Windows systems.
Yeah, a lot of the scientific tools can be a pain to install. So getting them pre-compiled
and just download.
Yeah, very much so.
Yeah.
VC var all bad or whatever that is.
Yeah, I've seen that a few times.
Yeah, for sure. Jim, how about you?
So at first, when I was just learning, really the only thing I had available was the Python
installation that came with ArcGIS. So I had the core library and ArcPy and nothing else for
probably the first like two years of using Python. And then when I got Anaconda, it was fantastic
because I had all these great extra libraries that I could use. And now at this point, it's
a whole lot of web programming. So like right now I'm working with Sanic. We're using Postgres
and the Postgres extension. So because of that, we're using asyncpg to connect to Postgres. We're
Docker and Kafka and all these other things. I'm using PyKafka to communicate with Kafka.
So it's gotten to be very, very diverse compared to where I started with Windows and ArcGIS.
That is a serious change there. That's amazing. How do you like Sanic?
So for the most part, I really do like Sanic. It's very responsive. Every once in a while when I get
like down into a rabbit hole and there's just like not nearly as like many things on Stack Overflow of
like, how do I fix this problem? And I'm still wrapping my head around the whole async thing. So
it's definitely different, but I do enjoy it. It's fast.
That's cool. Yeah. I've definitely wanted to do more Sanic, but I actually have a little,
a little bit of that feeling like, well, not necessarily that there'll be not enough answers
on Stack Overflow, but there's also all the other support stuff. Like here's an example of how you
do this, or here's a library you plug in that like fills this gap and things like that. So,
but it definitely looks like a cool framework.
There's definitely some of that missing. And so there's been times where it's like,
I really wish I had just started this project using Flask instead of Sanic, but.
But now, now you get these flask.
We had very good reasons for choosing Sanic at the beginning.
Yeah, absolutely. Arash, how about you?
Yeah. As far as toolset, I mean, we're mainly doing some of the typical Python web stuff. So we use
Flask, Frontend, we use Angular. We recently got into like Airflow, which I don't know if everyone's
familiar, but it's from Airbnb.
Yeah. It's like a data pipeline thing, right?
Yeah. It's data pipeline. So we'd originally doing a lot of our data pipeline still is, was with
Pentaho. And I really hate that software. It's good at some stuff, but it's really annoying. I hate using
it. And so I started looking at Airflow and that's really nice because it's Python. We know Python,
it's code. And it's just a lot easier to kind of get it up and running. That also does suffer a little
bit right now still from, I mean, it has decent documentation, but there's still a lot of stuff
there that it's kind of hard to find when you run into some issues. So, but it's really growing.
And I think Google just brought out a product, which the underlying platform of it is using
Airflow. So I think that, you know, Airflow is probably here to stay and it's going to probably
grow. So, and then we're also using a Falcon framework for like an API that we've set up.
So yeah, Falcon, I've had those guys on the show a while ago. It's like a really low level,
low latency API framework, right?
Yeah. I mean, I originally, I used to set it up maybe like two years ago when maybe I still wasn't a
little bit understanding of all the frameworks at the time, but I'm kind of glad I did actually,
because it was strictly for an API for our company and it is really fast and it's held up. And although
I probably would have used one of the, if I had to do it again, I'd probably use one of the other
frameworks that's built on top of Falcon, like is it Hugs or?
Yeah. Hugs is one of them.
Yeah. Yeah. I used, we used one of those, but still it's, it's a really good fast framework for what we
want it.
Okay. Yeah. That sounds really interesting. I haven't really talked about Airflow on the show.
maybe give people a quick example of like what problem or what job you're accomplishing with
Airflow, like describe like why you're using it.
Yeah. So, I mean, basically it's kind of in the real, it's not technically an ETL, which is
extract transform layer. So in a lot of companies, office software engineering, you get data,
but a lot of times you need to get data from one place and kind of transform it and do some
things to it and then bring it over to another place, usually to another database.
And so that's where like an ETL comes in. And so those are usually workflows that you want to set
up that maybe go through many steps. And there are different like sort of softwares out there to
accomplish this. And Airflow is technically just like a scheduler of these flows, but it's got a nice UI
to it. You can kind of put tasks, you know, one after the other. It's, it uses directly acyclic graphs.
So you can, and then the thing is it's code. So because the, you write Python code for those tasks,
you bring in a lot of programmability where a lot of the other ETL software,
if you ever use it, they're not like that. They kind of come with prepackaged sort of modules and
you kind of just have to use those prepackaged modules. And then it gets transported like,
like Pentaho is, it's really a Java XML. So it's, it's taking XML code and eventually it's,
you know, it's run by Java. So it's not, you know, that sounds fun. Yeah, it's, it's,
yeah, I hate it. I love Airflow so much better. Although there, you know, there are differences
and there are some things that, that sort of like Pentaho is better than an Airflow. I mean,
right now, just to give a use case, which also brings in async is that one thing we're using
Airflow mainly for right now is that we're, we're, some of our stuff is done in some other
software, some email platforms. And so we need a lot of their data through their API. So
instead of at real time getting that data API, we're like making tasks where we, where we hit
those APIs, get all that data, transform it the way we want, and then, and then put it in our database.
So then when we run our application, we don't need to rely on the API anymore. We just pull it from the
database. And we actually ended up using asyncio and IO HTTP to, to speed up those tasks, which came
really in handy and was, a great example of using async at that point because we make,
we're making thousands of API requests. And so instead of like a task original, we were running
was taking two and a half hours. We got it down to like 10 or 15 minutes.
That's really awesome. Yeah. Some of that IO HTTP stuff, the client side stuff is really powerful.
Yeah. So we're basically pulling all this stuff, pre-fetching all this stuff from APIs,
from our different, softwares that we work with and then, transforming it into the
forms that we need and dumping it in our database. So then that way we don't have to rely on them when
we actually run our application.
It sounds like a real cool use of airflow. Nice.
This portion of Talk Python to Me is brought to you by brilliant.org. Many of you have come to
software development and data science through paths that did not include a full-on computer science or
mathematic degree. Yet in our technical field, you may find you need to learn exactly these topics.
You could go back to university, but then again, this is the 21st century and we do have the internet.
Why not take some engaging online courses to quickly get just the skills that you need?
That's where brilliant.org comes in. They believe that effective learning is active.
So master the concepts you need by solving fun, challenging problems yourself.
Get started today. Just visit talkpython.fm/brilliant and sign up for free. And don't wait either.
If you decide to upgrade to a paid account for guided courses and more practice exercises,
the first 200 people that sign up from Talk Python will get an extra 20% off an annual premium subscription.
That's talkpython.fm/brilliant.
Rob, how about you? Tool set.
Sounds like I need to learn airflow, but
I, yeah, I'm primarily use
Anaconda and all the associated or many of the associated
packages that come with it. So pandas I'm using every day
and I love Jupyter Notebooks or JupyterLab now. I have transitioned over to that. That's
mainly what I'm using at work. And then on a personal level, I, you know, still, of course,
love requests and beautiful soup, but that's my personal project.
The whole web is your API. It's sweet.
Yes, exactly.
So you switched from Jupyter to JupyterLab. Why was that?
That's kind of where Jupyter is headed from everything I've read. They're going to eventually,
I think they're going to sunset Jupyter Notebooks and it's going to move exclusively to JupyterLab. I don't know the timeline. It's probably a few years off still, but they had released the beta.
I believe it was December or January. I can't remember for sure, but I jumped on board right away and it works. I haven't had any trouble. There's a few features that are missing from JupyterLab still compared to Jupyter Notebooks.
But the nice thing is if you have the latest version of Jupyter installed, you can run as long as the Jupyter server is running, you can run both. It doesn't care.
It's just a UI front to the server.
Yeah, it's just a different UI than the Jupyter Notebooks. I mean, it'll look familiar, but then there's like the file browsers is built in right there. And so is the command palette. So it's all, it's just all built in right there.
And then you can, the nicest thing about it is you can have, you know, multiple tabs so you can compare notebooks side by side. You can actually copy cells or drag cells from one notebook to the other.
Oh, wow.
So, you know, I'm, yeah. So anytime I, which is really nice for reproducibility, because, you know, sometimes I might get a request at work like, hey, can you, you know, run this report, but change this.
I actually had that happen this morning where it's basically just, you know, I had to drop in like a lot of the same code, but then make a few small changes. So you just literally, I just copy or three or four of the cells and drag them to the new notebook and run it again.
It's cool. It's a little bit like, like an IDE version of Jupyter, right?
Yeah, that's actually a really good description for it. Yeah.
Yeah. We started using that a little bit. Our style, we were, we were also using Pandas and JupyterNova.
We started using JupyterLab and actually talk about empowering. This is another example. We had one of our colleagues who's working on this app and he would get requests of these files that they would send him that are like over a million.
And so Excel actually has real trouble when you get to really large files and he had to segment them.
So it would crash constantly. So he kept sending it to me and be like, hey, can you take care of this?
So finally I was like, you know what? I'm going to teach you Jupyter. It's not that hard.
And I did teach him. And once every week he comes to me and says, Arash, thank you so much for teaching me this. Now I can just take care of this stuff and I feel more empowered.
So that's another example of that empowerment. And then, and JupyterLab notebook, whichever one you use, like really makes that really easy actually.
I wonder if Jupyter for those types of folks almost is like a Trojan horse for teaching them programming. Like, look, you're not a programmer. You're not writing source code.
You've got this thing and it does like computation and you type in it. You know what I mean? Like, of course it's still Python and stuff, but like, I wonder if it's perceived differently by people who, who come at it from that perspective fresh.
Yeah, I think it could because the interface is not, you know, because I guess there's some web versions of it, or if you run it locally, you got that kind of web looking interface.
So it doesn't, you know, you don't have to pull up a dedicated editor that you have to install and things like that. So yeah, I think it probably is a good, you know, and it deals with data.
And most people in some area have to deal with manipulating data. And once in Excel, yeah, you can start getting large files or having to do any kind of manipulation of sorting or any kind of complex thing in Excel.
And it starts taking like two minutes to do that. And you're sitting there with the spinner and you're like, okay, I got to find something, something else.
It's got to be a better way.
I think on the flip side too, though, I mean, a lot of people can use Jupyter as kind of a crutch and build some really big systems that really should be put into proper packages and things.
So it's kind of hard to know once you've made the transition from exploratory data analysis into something that should be, you know, more software engineered.
That's a really good point.
I'm probably guilty of that myself.
There's probably cases where I should just be putting them into a script and not running it in the Jupyter notebook itself.
It's hard to know, though. It just sort of creeps up on you.
Yeah, definitely.
Yeah, that's really interesting that you could take it too far, right?
Like eventually you might want to break out of it.
To me, doing traditionally like web development and database stuff and so on, that's usually across lots of files.
And it's like a different way of programming than people do with exploratory data.
And it took me for a little while to get my head around like what is the real value?
Like why do people love Jupyter and these notebooks so much?
But when I saw people really doing the exploratory data stuff with them, oh, this really is pretty amazing for that type of work.
I agree.
I didn't get Jupyter.
I kept hearing people talking about it.
And it was really only about probably about a year and a half ago that I saw someone demonstrate it.
And then it clicked.
I'm like, oh, that makes a lot of sense now.
And it really has changed, you know, the way I can do a data analysis.
I hardly ever open Excel anymore.
I kind of hate it now.
Yeah, you've got to be pretty good with pandas for that.
But that's awesome.
Yeah, yeah.
That's, I mean, for sure.
I mean, panda, but I'll echo, you know, you get with large files.
You know, Excel just kind of starts crashing if you're trying to do a lot of, especially if you throw, you know, multiple view lookups in, you know, or literally a large data set.
But pandas, unless you're dealing with gigabytes of data, it is really, really fast.
Yeah, that's awesome.
All right.
So I want to sort of do a little bit of forward looking stuff with you guys here, maybe by starting looking backwards.
So I guess if you have people who are coming into your industry and they don't have any programming background, what advice would you give them?
Let's start with you, Derek.
Okay.
Well, I think the first one, a lot of people that I've told about programming coming from my background have said things like, well, I haven't had a class in that.
Or I don't know about that because no one is, I just don't have any experience with it.
And so I think getting over this mental block that you have to have taken a university or a high school course on something in order to learn it is a real barrier for some people.
So the first one would be just understand that you don't have to be taught everything formally.
And the second one would be to be a little bit humble and try to be comfortable being uncomfortable.
And what I mean by that is when you try something new, especially when there's other people around you that are really good at it, you're kind of putting yourself in a position of inferiority, right?
It can be kind of intimidating.
Maybe it's not the best feeling.
But if you can really just kind of take it step by step and learn what you can in those situations, I think you can really grow professionally and as a person as well.
Yeah, that's great advice, especially in today's age, you know, like if you could either take a semester long course and disrupt your life Monday, Wednesday, Friday for two hours plus homework and exams.
Or you could take a weekend and an online course and get pretty close, honestly, you know, even free stuff on YouTube, you may be able to sort of teach yourself.
So it's definitely a different perspective.
I think that people probably got to write their minds around.
Yeah, cool.
I think, too, if you have a specific problem that you're trying to solve, that really is a good way to learn.
You just learn enough to solve a problem and then you get a harder problem and you kind of build your knowledge of programming as you solve the problems you have to address anyway.
Yeah, because you can't learn it all at once.
It just becomes overwhelming.
All right.
So if you can focus it, like I need to do these three things.
How do I do those three things?
And it becomes way easier.
I'll echo that, you know, the statement about solving a specific problem because that was my advice, too.
I set out to learn programming just because and but I didn't I didn't have a problem to solve at first.
But then once I did and I didn't really make a lot of progress until I did have a problem to solve.
You know, once I was doing that accounting job and said, oh, I can automate this step.
And that's where I made progress because I was figuring out how to do a specific task.
And then I'm just like he said, you move on from there and solve bigger problems and take it step by step.
Don't feel like you have to learn everything all at once because you're you're not going to.
And it takes time to for things to come automatically.
I mean, there's things that I do now in Python that, you know, just come naturally.
But a year or two years ago, I would have had to look it up on Stack Overflow again, you know, for the hundredth time.
It's hard to realize that things like that will become automatic and you sort of go on autopilot like driving a car.
It's like there's so many inputs and things and stuff you got to juggle.
But eventually most of it becomes sort of just stuff you do automatically.
Yeah, even Pandas.
I mean, I've only been using Pandas for just over a year.
But because I've been using it every day for about almost a year, it is natural now, you know.
And and I know, you know, the documentation is there.
I know how to figure out how to do something, even if I don't know how to do it off the top of my head.
Yeah, that's excellent.
Jim, what's your advice?
So I would say for anyone who's working with ArcGIS, I would start by just looking at what your daily workflow is, whatever you're doing day to day.
Go look at Arc's help docs because they've got for every function that you can use.
They've got a Python example of how you do it with Python.
And it's not just like the one line of how to use the function.
It's like a short little script of beginning to end how you would use this.
And then look at your workflow, start grabbing all those like pieces of scripts, customize it to whatever you need.
And then all of a sudden you've replaced an entire workflow with a Python script that's your own work.
And after you've done that, learn a little bit more about just like generic Python.
And then even though this isn't necessarily Python related, I would highly recommend learning PostGIS and SQL because there's a lot of things that you can do in PostGIS that just aren't readily easy to do in ArcGIS.
Right.
Have a little bit of database knowledge, possibly.
Yeah, great.
Arush?
I actually probably have a lot to say on this topic, but I'll try to keep it to some main points.
I think it's a combination.
I think one of the two main points is a combination of learning and doing.
And I think you've got to balance it in the sense that some people might realize you don't do anything on titles.
And some people might just rush in and just do stuff but not really even pick up a book and learn some fundamentals.
I think you've got to kind of do both.
You've got to pick up the book and learn the fundamentals.
But most of the time you won't truly understand all of it until you actually start doing some stuff.
So you've got to kind of do that back and forth.
And a lot of times, decide to build the application for Flask while you're reading your Python book.
And then after you finish the Flask, you probably want to go back and read that Python.
Because then a lot of the things in there will start to click better for you after you've had the experience.
And so you've got to kind of go back and forth.
Almost an iterative learning style, right?
Yeah.
It's like, yeah, because I know a lot of times the stuff I read, I thought I understood it.
Or maybe you think you understand it, but you don't really understand it.
So you actually are somewhere stuck and you're trying to do something.
You're like, oh.
Then you refer to it.
And then you're like, oh, now I understand what they were talking about in that book.
And so going back and rereading some of the stuff that you're trying to.
So try to learn the fundamentals.
But don't let that from stop you trying to build stuff.
Because as I said, as everyone said here, especially if you have a specific problem.
Or just decide on some project.
And just start working on it.
And then try to read and work sort of concurrently as best as you can.
And I think that will set you on a good path to try to learn.
Yeah, that's great.
So the last one, I guess, is think about the industry that you came from originally.
Where do you see programming and things like artificial intelligence?
And just people having these programming skills increasingly over time.
Pushing the industry and changing the way that people do their jobs there.
Derek, let's just start with you.
Okay.
I've seen a lot of hype around artificial intelligence and machine learning.
And there's some bigger companies that are doing some things that are pretty significant with it.
But I think there has to be a lot of footwork on the ground level.
Maybe the average engineer is going to have to gain some more data literacy before you can get data into a format or a sensible database in order to be able to do these bigger analyses on them that really can add value.
And so I see a lot of emphasis on data literacy, maybe simple scripting becoming part of the curriculum for a lot of engineering disciplines.
And then I'd also like to see a lot more open source being used.
A lot of companies will pay a lot of money for, I would even say, subpar proprietary packages that a lot of open source libraries can do for free if you just knew that they existed and knew how to install them.
Yeah, that's a really good point about the open source stuff.
And I think open source is definitely going to drive a lot of change for a lot of areas.
Jim?
In the GIS realm, one of the things that we have always had to deal with is the fact that we almost always have more data than we can actually handle.
Because the whole world is our subject.
And so a lot of times we'll scale our data back to a lower resolution so that we can just even begin to do the processing.
So as new things come out that lets us work with bigger and bigger data sets, we already have those data sets available.
We've got petabytes of satellite imagery that just, for the most part, goes relatively unprocessed just because there's nothing that can process that much data all that easily.
Yeah.
And as the processing power gets better and people are more capable to take advantage of it, you know, larger problems will be solved, right?
Yep.
Yeah.
Very cool.
Arash?
Yeah.
Actually, you know, even though I'm not in organic chemistry anymore, I still read a few articles here and there about what's going on.
And actually one that I saw, which I was not surprised that things were in this direction, was that MIT, someone at a group at MIT, I come up with an artificial intelligence that was significantly better at predicting medicinal chemistry compounds for clinical trial type of stuff.
So basically, you know, medicinal chemists, if people don't know chemistry, are the people who sort of investigate the type of compounds that eventually will become drugs.
And that's a very slow, costly process of iteratively making compounds, thousands of compounds to even see, whereas eventually there is definitely a solution here for software to really step in and make that process faster and cheaper.
And this MIT team came up with this article about it being vastly improved as far as predicting better compounds.
And I see that's really where the direction is going.
And there's already lots of robotic automation happening in organic chemistry.
When I was there, I'm sure that's expanded.
So along with artificial intelligence, you kind of see where now computers can fairly accurately design drugs for diseases and push it through the pipeline, which, you know, hopefully should reduce, we would hope to reduce the cost of drugs and be able to discover drugs faster.
I mean, that's ultimately the goal.
Right now, the process takes anywhere from 10 to 20 years.
I mean, if we could discover a drug for disease in two years, that would be a lot better.
Yeah, that would be great.
Maybe, maybe even lower the price of.
Maybe.
Probably not.
Just raise the profits, probably.
But one thing I'm really surprised about is how much programming and automation are affecting medicine, actually, because that seems like a really human hands-on sort of thing.
But we've got, you know, AI doing the job of radiologists in cancer detection for Google did a thing on studying readmissions and, like, finding out that people are going to have to come back to the hospital sooner.
I believe this example.
Like, it's really interesting how these sort of good doctor medical jobs are almost under threat from software.
Yeah, I think it's a case where a lot of this feels like, if you're talking about medicinal chemists, I mean, the lore was you had the old medicinal chemist guy who, you know, had been making compounds for, you know, 20 years.
And he just knew which one was going to be the right compound, right?
So that had been basically an operation for a very long time just because there really wasn't an alternative.
There wasn't the data, be able to crunch data, analyze it, and do the type of things predictably that we do now that we are starting to be able to do now just wasn't available.
So you kind of had to rely on this sort of people who had just experience in the field and just sort of their experience guiding it.
But now I think we have more data.
We can analyze it.
We can predict it.
And that's going to start to replace those, unfortunately, in some level, replace those old guys with the feel of, yeah, I know this is going to be the right thing or that's going to be, you know, the right way to do it.
And it's like, no, the data is going to drive us now.
That's really interesting.
Rob, how about you?
Yes, I'm not sure from an accounting standpoint, since I'm not in the industry anymore, but I would imagine there are companies already working on, you know, the AI machine learning side of things to automate the more manual sides of doing accounting and bookkeeping and things like that.
And probably tax wise, too, I would imagine.
I think it's what H&R Block already advertises how they use IBM Watson for calculating your taxes or something like that.
Oh, interesting.
Yeah.
So I'm sure, you know, down the road, there's going to be a point where, you know, you click two buttons and all your tax data is imported and your return is filed automatically without having to do much of anything.
But we're probably still a little ways on.
Yeah.
So kind of folks can become almost like advisors more than like computers, I guess.
Yeah, I think it kind of goes back to what some of the other guys talked about where, you know, oh, you're going to take away my job.
Well, no, not really.
You're just going to work on higher level, you know, planning type of things versus the actual manual work of calculating taxes or doing keeping.
Yeah.
And that sounds like a good thing.
Yeah, probably.
All right.
So I think we have to leave it there.
We're pretty much out of time, everyone.
But I wouldn't be Talk Python without the final two questions.
So just quickly, I'll go down the list.
You guys can let me know.
So Derek, favorite editor and notable PyPI package?
I don't really have a favorite editor.
I'll use Vim or Spyder or PyCharm just depending on what I'm doing.
Notable package, I found this package called Sorted Containers, which basically I had run into some software that had used this custom AVL implementation.
And I was able to basically get rid of a lot of the compiled C code using this package.
So check that out if you're in the need of something like that.
Oh, that's sweet.
Jim?
So I spend most of my time using PyCharm if I can.
And my notable package would be Huppr, which is a great development package where if you've got like a web server running and anytime you make a change to your code, you want it to automatically restart.
Huppr takes care of that for you.
Yeah, that's really cool because normally you've got to like restart the process for it to redetect and reload the Python modules.
But I think Flask does this automatically.
All right.
You can say like --debug or reload or something and it'll watch those changes.
And maybe it's even using Huppr inside.
That's cool.
Definitely a nice feature.
Arash?
I used to be a PyCharm person, but I have switched to VS Code.
I'm really loving VS Code, so I think I'm pretty set on sticking with it.
And then for a package, I'll reroute it Airflow.
I think it's still fairly new.
I don't know how many people are using it, but if you have data pipeline workflows,
I need to do some data processing and you want to do some scheduling, check out Airflow.
It's a really good package and it can solve a lot of those kind of problems.
Nice.
It sounds like you guys are doing cool stuff with it.
Yeah.
Rob?
Favorite editor.
I'm doing, I mean, a lot of my work is, you know, Jupyter now, but if I'm doing just stuff locally,
it's sublime generally or occasionally then.
Okay, great.
And package?
Yeah, package a little one called PiperClip, which is really simple.
It can, you just give it a path or anything and it will copy something to your clipboard,
which is really handy when people send you files that you have to load into Pandas and the name is never consistent.
So we literally just copy the file name and have the path set up and you concatenate together.
It's all set to go.
Oh, that's cool.
I really like PiperClip.
I use it for some automation as well.
And just like the results will pop out and I don't want to save them to a file, but I just,
I need to paste them somewhere else.
And so the last bit in that step is just copy to clipboard.
And, you know, if I want it, it's there.
If not, like, you know, I just ignore what's in my clipboard.
Yeah, I just, I usually just use it to grab something and put it in my clipboard and grab it from there without having to paste it.
So.
Yeah, great.
Very nice.
Yep.
Very nice.
Good recommendation.
All right, everyone.
Thank you for being on the show.
This was a really interesting conversation and I'm looking forward to sharing with everyone.
Thanks.
Thank you.
Thanks.
You bet.
Bye.
This has been another episode of Talk Python to Me.
Our guests on this episode have been Derek Chambers, Jim Taysom, Arash Shoheli, and Rob Ward.
It's been brought to you by Linode and Brilliant.org.
Linode is bulletproof hosting for whatever you're building with Python.
Get four months free at talkpython.fm/Linode.
That's L-I-N-O-D-E.
Brilliant.org wants to help you level up your math and science through fun, guided problem solving.
Get started for free at talkpython.fm/brilliant.
Want to level up your Python?
If you're just getting started, try my Python jumpstart by building 10 apps or our brand new
100 days of code in Python.
And if you're interested in more than one course, be sure to check out the 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, Google Play feed at /play, and
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.
And I'll see you next time.
Thank you.