#174: Coming into Python from another Industry (part 2) Transcript
00:00 Michael Kennedy: 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'll 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 is Part 2 of the two-part series. Our guests, this time, are Giuseppe Cunsolo, Brian Skinn and Teresa Borcuch. This is Talk Python to Me, Episode 174 recorded July 15th, 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 @talkpython. This episode is brought to you by Vettery and Rollbar. Please check out what they're both offering during their segments. It really helps support the show. Giuseppe, Brian, Teresa, welcome to Talk Python.
01:21 Panelists: Thanks for having us.
01:22 Michael Kennedy: Its really great to have you all here and I'm really excited to share your story with everyone. So many people who come into programming either use it to amplify their skills or actually move into programming and they haven't gone through a four-year computer science degree and that pretty much covers you all as well. So I'm really excited to dig it in to what the motivation was, how that's affected you and just what your experience was. So, that's going to be great. I think, probably, the first place to start is what industry did you come from? And I guess we'll just go down our list. Giuseppe, you started at somewhere that, probably, most people don't think of as hotbeds of programming.
02:03 Panelists: No, it's a completely different industry. So, right now my current job is a dev ops engineer. But, until five years ago, I was in medical school, although, I was not progressing. I was kind of stuck, and I'd been stuck for a few years. And I was an ambulance paramedic and member of a rescue team. Think rescue inside Kenko planter, something like that. So, completely different industry to what I'm doing right now.
02:33 Michael Kennedy: So you use to just drive around racing to emergencies in ambulances and stuff like that, right?
02:38 Panelists: Yes, that's correct.
02:39 Michael Kennedy: Just has got to be such a crazy job and you must have some wild stories. It's very different than sitting behind a keyboard all day, I'm sure.
02:46 Panelists: A lot different. Although, there's some similarity in the way, in the sys admin world, everything is on fire and you have to be quick and do something very quickly. Do, kind of diagnose, and be very quick at finding what's wrong and fix it. So, in a way, it's kind of similar.
03:04 Michael Kennedy: The what server is down. It's a little bit similar. All right, Brian Skinn, how about you?
03:09 Panelists: My background is chemical engineering. I have a Bachelors and a PhD there. And I really have not moved out of chemical engineering. I sort of changed sub-disciplines, so to speak. What I'm working on now isn't at all directly related to what I did for my doctorate, but it is still engineering, chemical engineering sort of a thing. So, my day-to-day, most of it is working on developing new processes for things like electroplating and electropolishing. For anybody who knows what electrochemistry is, if it's under that field, then we've probably played with it.
03:42 Michael Kennedy: Okay, that sounds really interesting. I suspect that that's much closer to the sort of computational stuff so, probably, less far away than, say, ambulances and medicine. But still it's not a lot of programming, right?
03:57 Panelists: Not in the nominal job description, no.
03:59 Michael Kennedy: Yeah, sure, cool. And Teresa?
04:01 Panelists: Currently, I'm a data scientist, but up until, I don't know, about two years ago, I had been a biologist. I was a grad student and I spent a lot of time studying animal behavior, really, so a lot of time abroad observing dolphins and primates and stuff, so very little programming there.
04:20 Michael Kennedy: Yeah, a little bit disconnected. It sounds really fascinating though,.
04:23 Panelists: Yeah, super cool, but not a lot of time, well, some time behind a computer, but not programming.
04:27 Michael Kennedy: More data analysis and logging what you've seen, right?
04:31 Panelists: Yeah, yeah. A lot of looking at photos, and I did some some caveman-level R for some stats classes, but that was as far as it went.
04:40 Michael Kennedy: Interesting. I like the description. I guess the, one of the first questions everyone's probably wondering to hear is, why did you get into programming? The chemical engineering is somewhat close to the computational stuff, but other ones not so much, I guess. So, Teresa, maybe we'll start with you. What was the motivation to get into programming and Python?
05:01 Panelists: It sort of taps into, I liked, even though I was programming like a cave man in R, I did really like doing the sorts of statistical analyses and wanted to take it further and sort of wanted to make a career out of it, and thought that learning Python and sort of getting involved in data science would be the way to do that. So, that was my motivation. I found that the tool set I had to answer sort of scientific questions wasn't really sufficient. It was just looking for something bigger and more powerful.
05:28 Michael Kennedy: In the beginning or were you considering like, I'm going to get these skills so that I can do my biology work better? Or were you pretty sure, you're like, I kind of want to move beyond this and get into the straight data science programming side of things?
05:41 Panelists: I was moving out of biology. I think I was more interested in like, I really want to get into data science. It seem like a really great career path.
05:48 Michael Kennedy: Yeah, I think it is. And probably a lot of the skills you learned in biology about data collection and things like that and the R, little bit of R experience as well, helped.
05:57 Panelists: Yeah, totally. There's a certain way of thinking. Generating hypotheses and testing them, that is continuous throughout both fields. So it seems like it's really disconnected, but how you think about questions and go about answering them is sort of useful in both.
06:10 Michael Kennedy: Yeah, that's cool. Brian, how about you? Why'd you get into programming?
06:13 Panelists: Programming sort of grabbed me from the beginning. My first programs were on my TI-82 calculator in high school and just kind of continued from there, TI-82, TI-89. My one actual, formal programming class was a required intro to C++ class freshman year of college. And then, other than that, it was all kind of, somewhat self-directed, somewhat externally-motivated. I did an internship in college that turned into, The company I was working for had this, It was actually data science when I look back at it. They had this gigantic table of data from the processes they were running and my job over this eight-month internship was to develop an application or suggesting improved programs for their equipment. At the time, what was at hand, was Excel VBA so I got really, really good at Excel VBA. GUIs and the document object model and everything. And so that really established that and then from there I dabbled in Java a bit in mid-grad school, but then came to Python about four years ago.
07:18 Michael Kennedy: Oh yeah, I suspect that many people's first programming, in quotes, experience is Excel. Like I have these pieces of data and can I show or hide or change the color of this based on whether it's positive or negative or something like that, right?
07:35 Panelists: Yeah, I mean the multiple times on the podcast you've had people say, in industry, in the corporate world, the most prevalent database is Excel. That same thing is true that the, for the corporate world in a lot of cases, unless there's a specific reason to use something else, Excel is probably also one of the most prevalent development environments in the corporate world just because it's, anybody who has Office has VBA for better or for worse.
08:02 Michael Kennedy: Yeah, that's pretty funny and probably a lot of the programming happens in that one little cell editing text area right at the top, right?
08:09 Panelists: Yeah, the formulas too. It's like these different paradigms going on colliding and crashing into one another.
08:16 Michael Kennedy: I'm sure, I'm sure. Giuseppe, how about you? You took a pretty hard turn, like I suspect it probably wasn't something day-to-day that you were experiencing. Or maybe it was. Tell us.
08:28 Panelists: No, it wasn't. I have to go back to, something like five years ago, I decided wanted to change my life. And I left medical school. I moved to another country, to England, and followed my other passion, which is Linux. And, along the way, so I started to do tech support and then do a sys admin job. Along the way I picked up a genuine passion for Python. The reason is very, it comes to a simple reason that it's easy to understand so, even though I didn't have that specific background I could understand Python, and so I, I offered some of my friends from my hometown Linux's group that had been stuff in Python for some time and I was kind of exposed to Python and I was curious. So that's how I got started really. And then I found that it made my life a lot easier. So my day-to-day job was a lot easier because of Python because the new skills and that was really the, that moment where, yes, I love this programming language. I love Python.
09:35 Michael Kennedy: Yeah, you can do some stuff in bash and shell scripts but it's not the same as a real programming language.
09:40 Panelists: Yes, absolutely. And I had a first-hand experience about that. In my previous job, my old job, I wrote the script in Python to resolve a day-to-day problem that was nearly impossible to do in bash. Python? Easy. Took me a bit of time to get to that point but I learned a lot along the way.
10:02 Michael Kennedy: Yeah, absolutely. It sounds really interesting. Was it scary or nerve-racking to leave medical school? And then, also leave Italy and just completely rearrange your life like that? Were you like, aheh, what am I doing? I'm almost a doctor. This is crazy.
10:18 Panelists: Between all of these single things, moving to a new country, changing my life, I don't know what was more scary. But, here I am.
10:31 Michael Kennedy: It sounds like it's working out pretty well for you. It's really interesting. Two of my neighbors, they're both doctors at a nice hospital, research hospital, here. And I talk to them about, have a good day and how is everything going? And they're like, I just wish I would have just gone into computers or started a podcast or something. It seems like, like really? They're like, yeah. It's just, your life looks easy and smooth and mine is stressful and all this bureaucracy and stuff. So you probably made a good choice there, Giuseppo. Giuseppe, sorry.
11:02 Panelists: I think so, yeah. Now I work in a desk job so I'm not outside and people don't throw stuff at me or a
11:12 Michael Kennedy: How boring. Maybe one of those little office dart things. Like a little office toy, right?
11:18 Panelists: Nerf guns, yeah.
11:20 Michael Kennedy: Yep, how funny. Okay, so, one thing I wanted to start this conversation with is I feel like there's a lot of talk about people becoming programmers because computers are important, so, programmers, that what you should do. But, I think there's a large value in having another skill, like biology or chemistry or medicine or something like that, and sort of supercharging that with programming or with Python. Now, I know some of you've kind of moved on to do more specific programming but, you come from this background so you're totally in a good place to talk about it. Maybe, just let me know what you think about people who are not going to become programmers, but are doing stuff and say, in your field that you came from, how it might help them. So, Giuseppe, start with you?
12:05 Panelists: The newest thing comes to my mind is when I was in doing the ambulance department stuff, sometimes we had some kind of problems with the keeping track of vehicles, ambulances and calls. And I was, some point I was considering, oh, it would be so much easier if someone who is inside, who does this on a daily basis, could write a single program that just do what you need to do. Just keep track of the ambulances, keep track of the calls. Unfortunately, in Italy, well, at least where I was working, we didn't have any of that. Some custom proprietary software but not nearly close to what we needed. For some time, I kind of dreamed of, oh, if only I could pick up very quickly some programming skills, I could do that.
12:55 Michael Kennedy: Yeah, imagine just like a cheap Raspberry Pi with a cellular connection or something like that, right?
13:01 Panelists: Yes, absolutely. Imagine how much you can do and, how much you can do processing data with Python. A lot of data like the average call time, the average time the ambulance needed to get to someplace and how much you can improve the system having access to this data. I'm sure somewhere someone is doing something like this but, I guess I was in the wrong place and I had the wrong kind of skill set at that time.
13:31 Michael Kennedy: At the time, yeah.
13:32 Panelists: If I could go back now and, well, not now, I don't consider myself skilled enough, but say in ten years, with the skill set I, the skills I would like to have in 10 years, go back in time and do that thing. That would be my dream.
13:48 Michael Kennedy: It sounds like a really cool use of the IoT stuff and these days it's got to be almost easy. So, Brian, what do you think about it? You're still doing chemical engineering. What do you think about this power-up, Python power-up idea?
14:02 Panelists: I think the analogy that I would draw is, actually it's kind of a reflection of the technical management conundrum where, in order for someone to make better, at least, high-level vision choices for a technical effort, if you don't know at least something about the, if you don't have some expertise in the technical thing, then it's hard to have the perspective to make those kind of bigger visionary decisions. It can still work but it can be harder. I would draw the same sort of parallel to the programming skill set. A lot of the things that we work on involve equipment and tanks and pumps and things that you can't really, there's no IoT for the simple pumps we work with, for example. But in terms of data analysis and driving some of the data acquisition hardware or some controller hardware, having the ability to just toss together a script or to dig into a command line or a serial prompt or something, and even if if it's not the prettiest code or the most efficient, effective, fastest, whatever, it's still, so many orders of magnitude more capable than it would if there were not any programming expertise around to bring to it. And so, it's not critical exactly, but it can help so much that it almost is, I would say it's near critical in a lot of this...
15:24 Michael Kennedy: It basically opens up new possible questions you can answer and stuff because, where there used to be too much data now it runs for three seconds.
15:34 Panelists: Manageable, and you can also, being able to handle things faster means you can handle more things, which is really valuable.
15:41 Michael Kennedy: Teresa, how about you? Do you see those kinds of opportunities in the biology space?
15:45 Panelists: Totally. It's helpful, I think, to think of programming as something that'll save you time. Looking back on the way I used to handle data or the way we used to store data and the amount of time I spent scrolling through Excel sheets looking for things, when a database might have been the right solution, or manually cleaning things in Excel, when, if I had just put something into, say, like a Pandas DataFrame, it would have saved me hours. So, I like to think that its main benefit would have been just freeing up brain space to think about the actual biological problems or the actual questions of interest and kind of automate away a lot of those pain points.
16:20 Michael Kennedy: Yeah, and it seems to me, that kind of work is the least fun. You know, like cleaning up data by hand in Excel or something like that. Like That doesn't so fun.
16:29 Panelists: It's the least fun but you can never make it go away. You can just make it take...
16:33 Michael Kennedy: No, you have to do it.
16:35 Panelists: Yeah, it'll take a 10th of the time though with the right tools for the job.
16:38 Michael Kennedy: Yeah, yeah, that's cool.
16:39 Panelists: I have a very low tolerance for boring, repetitive tasks now. It's like, okay, I'm automating this right now. Yeah, exactly.
16:46 Michael Kennedy: I've had the same experiences in some of my stuff where, I'm like, for the third day I spend an hour doing something, I'm like, why do I not just take half an hour, write a program that solves this problem and it'll be fixed forever, not just for today? But you kind of need to hit that threshold, right, where it's like, I know I'm doing this enough and it's painful enough and so on, 'til you decide like, that's it, I'm writing a program. I guess, maybe like, a lot of the real opportunity for people to see programming as relevant to them when they're not programmers, is kind of this automate the boring stuff type of angle that Al Sweigart talks about in his book and stuff, which is there really, just, you could do that in 10 lines of Python if you just knew the 10 lines and the right packages.
17:29 Panelists: Yeah.
17:32 Michael Kennedy: This portion of Talk Python to Me is brought to you by Vettery. Vettery's an online hiring marketplace that connects highly-qualified job seekers with thousands of inspiring companies. They specialize in positions in the tech space, including software development, data science and project managers. Vettery is not only free for job seekers, you'll actually get paid to get a job through them. They're offering a $500 bonus if you accept a job through Vettery. Whether you're looking for a job at a tech startup or a major corporation, visit talkpython.fm/vettery, that's V-E-T-T-E-R-Y, and get that $500 bonus. Brian, I guess I'll ask you this one first 'cause it's, maybe, most relevant to you, is how has learning programming sort of changed how you do chemical engineering? You said you now have this super low threshold for boring, repetitive work, which is obvious. What else?
18:27 Panelists: The programming shows up, It's really scattered all over. The title, the Automate the Boring Stuff, is a really great philosophy, I think, for how it helps me. My day-to-day spans the whole range of engineering research, writing proposals, doing experiments, directing them, doing some modeling sometimes, consults, that sort of thing. Writing stuff up, writing talks, writing papers. And, for the most part, programming kind of sits in the gaps. It's scattered all over. And this is where the VBA is actually really helpful, has been really helpful, because I have a library of scripts that are bound to Ribbon buttons or keyboard shortcuts or whatever, so I can file, labeling, categorizing, filing emails, popping attachments off the server, cleaning up data in Excel charts and some chart automation stuff, keyboard shortcuts in Word to switch highlighting around or your various things, I can work a large, single-digit integer times faster because all of the automation I have tied into my workflow start to finish in just lots of small, little ways that are customized to me and they work really well. So it's a productivity enhancer to the max.
19:40 Michael Kennedy: I'm really impressed at how many different apps it sounds like you've plugged this stuff into. It's not just like, well, I'll go do it in Python now but like, Word and Excel and all sorts of stuff.
19:50 Panelists: Well that's the thing. I think it's safe to say I'm the only programmer in my office. I work in a small business that's 10 technical staff. I'm the only one with any programming background at all. And some of what I've written I've handed off to other people and the only way they're realistically going to use it is if it can be bound to a keyboard shortcut or a button.
20:10 Michael Kennedy: That makes sense. Obviously, the command line and a pip install this and, yeah, that's not going to work.
20:15 Panelists: Yeah, there's some data analysis tasks and I've done a very little bit of, probably, very low-quality machine learning for a project. So, for that, Python was the only thing that made sense, of what I knew. But, for the day-to-day, it's all VBA.
20:29 Michael Kennedy: That's really interesting. Are you known as the person who can solve the programming problems and people come to you with like data problems like, process this for me?
20:37 Panelists: Not so much. I could be, but
20:38 Michael Kennedy: You dodged that bullet?
20:40 Panelists: It's more that, in order to know, it goes back to that pain point problem. In order to help somebody out with a data analysis or data processing automation, I have to understand what the data is and what needs to be done with it. And that takes a lot. That knowledge transfer adds significantly to that cost of an automation step. It has happened, but a lot of the time, it's not enough pain for them to cross that threshold of making it worth the extra communication time and then the automation. It's happened a couple of times, but it actually doesn't happen very often.
21:12 Michael Kennedy: They probably don't realize the amount of pain they could avoid. They probably just see that as a fact of their job.
21:17 Panelists: I agree. I think it's very likely that's the case.
21:20 Michael Kennedy: Like you have a low tolerance now. So, Teresa, let me ask about you. So you've fully switched into doing data science. What kind of problems are you studying now?
21:29 Panelists: What sorts of problems?
21:30 Michael Kennedy: Yeah, like what area of data science are you doing?
21:32 Panelists: I work for iRobot, so a lot of analysis on data that would explain how people are using a robot. So it's some things that are sort of consumer-based analytics like looking at use patterns, things like that. I like to use the analogy that it's not that different from studying, say, like a population of dolphins out in the ocean that you can't really see what they're doing. You just get like glimpses or a few signals. I don't really know what all the people are doing with their products, but I get glimpses and signals and it's somewhat analogous.
21:59 Michael Kennedy: That's really interesting. And so, iRobot, that's the company that makes Roomba, the automated vacuums and things like that.
22:06 Panelists: Yeah, that's right. Small, home-cleaning personal robots.
22:10 Michael Kennedy: I have one in my kitchen right now. It's not going, but it's hanging out there. To you it was more of a sort of career transition. I guess like, how do you, are you happy that you've learned programming and took this transition? Is it working out well? Like, what was the experience?
22:23 Panelists: Oh, totally. I love how, I was trained as a scientist using probably not all the tools that I could have to really work in that field in academia. But now I still get to use sort of my science content knowledge but with this whole new, way more powerful skill set. So I think back a lot to problems that I solve now in my current job and they're somewhat similar to questions that might have been asked before but they were such a struggle. I had no idea how to process this much data or how to make up a graph that would answer this question easily and now, knowing Python and being plugged into all the really great tools like Pandas or scikit-learn, all these things for machine learning, it's a breeze to do this sort of stuff. And I always look back and say, if I had the skills I have now and was still doing that job, ugh, what I could have done, but it's overall been just amazing.
23:10 Michael Kennedy: That sounds really awesome. Is it interesting to come from an academic space and then into industry, as they say, and sort of look back and go, just see the differences?
23:20 Panelists: Yeah, totally. I think the contrast is really interesting. I think the pace at which things move has been a huge shocker in a way. Like, academia is much slower, as opposed to, if a question needs to be answered, they need the answer within a week or a few weeks, as opposed to, well, I'll spend a few months like thinking about it or maybe you'll publish a paper in a year.
23:42 Michael Kennedy: Exactly, well, yeah, and then it'll come out in journal six months after that, right?
23:45 Panelists: Exactly. Right. And two people will read it instead of this very fast turnaround kind of, not necessarily high profile, but work that has impact. Like immediate impact.
23:54 Michael Kennedy: It is interesting how narrow the academic exposure is. It's really important, but it's, there's like 10 people that might read a paper and it will influence their thinking. In the world, right, which is crazy compared to...
24:09 Panelists: Right.
24:10 Michael Kennedy: all the people that have a Roomba.
24:12 Panelists: Exactly. Yeah, much broader audience.
24:15 Michael Kennedy: Yeah, yeah, maybe a little more shallow effect on their life, but more broad.
24:21 Panelists: Yeah.
24:22 Michael Kennedy: Who knows which one has more volume. Okay, Giuseppe, how about you? This move from studying medicine and doing the ambulance emergency stuff into dev ops. How's that transition been?
24:33 Panelists: I'm trying to get rid of the old habits of jumping into problems head on and putting out fires. I'm trying to get new habits on think about the problem, break it in single little problems that you can then fix and apply some automation to that. So, these days I'm mostly working on this part and automation of provisioning with the machine servers and I'm using Python to do that. So, it's not an easy transition from the old world, the old life, the old habits, but I'm getting there. I'm getting there and I'm enjoying a lot, Python, along the way. It's really fun for me. It makes everything easier in my day-to-day work life.
25:24 Michael Kennedy: Yeah, that's really cool. What kind of stuff do you do around dev ops that you talked about?
25:28 Panelists: We need, for example, the need to automate the provision, the creation of the series of servers and the environment and, so far, it's not much automated. So, my project, currently, is to make that completely, fully automated. And I, when I was interviewed for this position a few months ago, I asked, can I use Python? The answer was yes, and I was, yes, I want this job.
25:54 Michael Kennedy: It's funny. Working in a technology day, to day, to day, like some technologies are more fun than others, and if you get to choose, it really can make a difference on how happy and joyful what you're doing is.
26:07 Panelists: Yeah, absolutely. So come the first week, the second week at this job and I have to get information from hypervisor about all the VMs running. Something in the range of 120 VMs and the specs, the information about the disks, the RAM, CPU, that kind of boring stuff that you think, why don't I automate that once and reuse multiple times, every time I need to gather information again? And, I did that in Python. And there's a wonderful SDK. It's called ovirt-engine-sdk-python, which is really a great library but, for some reason, it didn't play well with the version of the hypervisor we are currently using. So I ended up writing a simple skeleton script using requests to pull information using the APIs from the hypervisor, get in this information, parse what I need and put everything in a well-organized CSV file.
27:16 Michael Kennedy: That's really cool.
27:17 Panelists: That was the fun part of my first second week at the new job. I thought, oh, this is what I really wanted to do. And it gave me enough motivation to keep doing more Python. Gave me more confidence in doing more in the future.
27:33 Michael Kennedy: That's a great story. I feel like those little solutions add up. You come to a company, you get hired there or something and people just do stuff in this sort of painful, manual way because that's they way they've always done it and here, you come with fresh eyes. You're like, why? Why is this not automatic, right? And then, slowly, these things sort of get piled on until everything gets easier. It's great.
27:55 Panelists: Especially if you're coming from a different background. So, it's not really. I still feel I'm misplaced. I'm not in the right place. I still have to think, is it really me doing this stuff? I couldn't think of myself doing Python five years ago. It's a complete drastic change.
28:15 Michael Kennedy: It's like an identity shift, right?
28:16 Panelists: Yes.
28:17 Michael Kennedy: It sounds like a good one though.
28:18 Panelists: Yes, that makes me so happy. So, it's definitely a good one.
28:22 Michael Kennedy: That's awesome. Yeah, that's really, really great. So, one thing I'd like to do is, maybe go around and see which, sort of what technologies you are all using these days. It's probably a little bit different as you're solving different types of problems. So, Teresa, what does yours look like? Is it Jupyter and those kinds of things? What are you using these days?
28:41 Panelists: Yeah, definitely. I'm in Jupyter Notebooks pretty much all day. I really like Jupyter Notebooks. Other people on my team are sort of, have mixed feelings but, for me, it's really convenient and it just really works well for me. In terms of which specific libraries I like. Pandas and NumPy are sort of like essentials. I find myself dipping into SciPy or StatsModels or something for more statistics-relevant things. And, I guess, actually a major part of my job is making visualizations to summarize findings and things like that that are, could be shared around the company, and I found that Plotly is a really great library for that. Sort of easy to use and makes pretty nice-looking graphs. Yeah, can recommend.
29:23 Michael Kennedy: Yeah, cool. Plotly is really nice. Some of the graphing capabilities there are really coming along. Are you thinking of switching to JupyterLab?
29:31 Panelists: I don't know, probably not. I think I'm pretty happy with my setup but I might be able to be convinced. I'm not sure.
29:36 Michael Kennedy: Yeah, yeah, it's a little bit different. So the people that aren't using Jupyter that you're working with, what else are they using? What's their alternative if they don't totally love it.
29:45 Panelists: PyCharm, I think, is the other contender, as well as just, I guess like just writing scripts in Atom them and then running it from the command line or something like that.
29:52 Michael Kennedy: Yeah, so more like traditional computer science type programming stuff. Okay, yeah, that makes a lot of sense. Brian, how about you? Platform?
30:01 Panelists: So, at work I am strictly Windows. I do use Git bash for everything, so it's controlling it. Mostly I'm in Jupyter Notebook. A lot of h5py, NumPy, SciPy, scikits, MatPlotLib sort of a thing. Side projects, I work both Linux and Windows and go broader to Sphinx documentation, Talks for testing, Travis. I have packages on PyPI, so I've messed with setup.py client and all that kit and I'm a big fan of attrs for basically everything I'm doing.
30:32 Michael Kennedy: Yeah, attrs is a good way to get some quick classes in place.
30:35 Panelists: The repr, the dunder repr and dunder string that it autogenerates. That's so annoying, creating those by hand, so just having a nice representation by default is so nice.
30:45 Michael Kennedy: I really like outputs. I'll go and write those almost primarily for debugging. If I want to print one out, I can pause in a debugger at a breakpoint, you see like the variables windows. Instead of just seeing this object at this memory address, you can see real useful stuff there. It's great. And attrs just does that automatically, right?
31:02 Panelists: Yup, it definitely does.
31:03 Michael Kennedy: How nice. Giuseppe, how about you?
31:05 Panelists: Linux all the way. I'm in Linux heaven.
31:08 Michael Kennedy: All right, which distribution?
31:09 Panelists: Well, I'm partial to...
31:09 Michael Kennedy: All of 'em?
31:11 Panelists: Ubuntu.
31:12 Michael Kennedy: Yeah, I like Ubuntu as well.
31:14 Panelists: Although I have to say I started some, well, long time ago, with Gentoo.
31:21 Michael Kennedy: Yeah, nice.
31:22 Panelists: Which probably not everyone knows. But, I'm using CentOS and Red Hat a bit at work. But I use Ubuntu at home.
31:31 Michael Kennedy: Nice, and for a Python link, what are some of the libraries and stuff you're using for interacting with VMs over the network in the kind of work you're doing.
31:39 Panelists: I try to keep it simple. I use mostly requests and Beautiful Soup and I don't know if you want to count this as a, they come with any Linux distribution, any Python analytics distribution that I've used so far. My best friends are subprocess and AppBars.
32:00 Michael Kennedy: Yeah, of course, a lot of automation stuff there. That's great. Do you use things like Paramiko and stuff for remote interactions?
32:08 Panelists: When I can, yeah. But, sometimes I have to just use subprocess and call SSH with subprocess just to make the Python script portable so, you could use it everywhere on any machine, even if you don't have Paramiko on that machine. 'cause you know you have to pip install paramiko. Sometimes, you know, trying to keep it simple so it can be used anywhere. That was the best strategy for me in some occasions so far.
32:37 Michael Kennedy: Yeah, it sounds like it's working well. That's great. This portion of Talk Python to Me has been brought to you by Rollbar. One of the frustrating things about being a developer is dealing with errors. Ugh, relying on users to report errors, digging through log files, trying to debug issues or getting millions of alerts just flooding your inbox and ruining your day. With Rollbar's full stack error monitoring you get the context, insight and control you need to find and fix bugs faster. Adding Rollbar to your Python app is as easy as pip install rollbar. You can start tracking production errors and deployments in eight minutes or less. Are you considering self-hosting tools for security or compliance reasons? Then you should really check out Rollbar's Compliant SaaS option. Get advanced security features and meet compliance without the hassle of self-hosting, including HIPAA, ISO 27001, Privacy Shield and more. They'd love to give you a demo. Give Rollbar a try today. Go to talkpython.fm/rollbar and check 'em out. Giuseppe and Teresa, think of biology and medicine and stuff. I want to ask you this question. Back to the people, the place you were before. Brian, stay where you are.
33:46 Panelists: Thank you.
33:48 Michael Kennedy: If you were talking to someone who is in your industry or was in the industry you came from, and they had no background in programming, what advice would you give to them about maybe learning it or how it might help them push their career forward? Teresa go first.
34:01 Panelists: I think I left my field maybe about two years ago, but it really did seem to me that there was a certain sparsity of biologists who were competent in, or, I mean, both interested and able to program and just like utilize the power that Python could unleash for you. And I would say, do it 'cause it'll set you apart. It'll both make your life easier and make you sort of a rarity in the field. So, I think, the field as a whole, could really benefit from more people who have these skills and, if you want to be a competitive job prospect within the field, if you have the ability to, say, set up a database for a project you're trying to work on, that's really going to put you head and shoulders above a lot of the other candidates out there.
34:40 Michael Kennedy: Yeah, that's cool. And if you decide, for some reason, that academia is not for you, you could always go work for a cool robot company, right?
34:46 Panelists: Yeah, exactly. Just jump ship. It's okay.
34:50 Michael Kennedy: All right. Giuseppe, how about you?
34:51 Panelists: I would say, don't be afraid. For a long time, really a long time, I was curious about Python but too afraid to start doing anything. Even to start opening a book about Python because of my lack of programming background. So don't be afraid. Try a little script. Try something just for fun. And practice. That's something that, in medicine it's everything about practice, practice, practice. Do something until you can do it blindfold, or you can do it without looking. You can do it on a different patient every day and still you can do that something. So, in the same way, if you keep practicing and doing a little bit every day, that's a good way to get rid of the fear of not having a programming background. And that's why the 100 days of code is perfect for anyone from a different, I believe, for anyone from a different background that wants to get started with Python.
35:53 Michael Kennedy: That is a good resource and it's not that much of a commitment. It's an hour a day for a little over three months. It's not too bad. Brian, how about you?
36:01 Panelists: So, I keep coming back to the automate-the-boring-stuff theme. For somebody in engineering who isn't looking to become a full-time dev, think about what you do during the day. Think about the tasks that you have to address and then identify the ones that drive you nuts because it's the same thing over and over and over and over again. And start small. Find a little thing. It can be hard to know what's going to be big or small going into it, but pick something that seems like it's small and then identify a relevant programming language. So, a lot of the proprietary software has its own internal scripting languages and whatnot. But, if you're in Excel, if you're in Word, it gets slammed a lot, kicked around, but VBA is actually a pretty good choice because, if somebody else needs to use what you end up making, it will transfer. And then, of course, I would definitely recommend Python for anything general because it's great for that. And then, look around. Find a book, a learn-to-program book, in that language. O'Reilley has stuff for Excel that has some VBA in it. There's a VBA For Dummies. There are a plethora of Python books that you can find. Search the web. Hit up Stack Overflow. And just search until you find something that seems relevant to solve what you're trying to solve, to automate this problem, to solve this problem. Try it. Code it. If it doesn't work, keep tinkering at it until this first small thing you can get it to work. And then pick the next thing and learn what you need to to make it work and just, step by step, eventually you'll accumulate enough of an understanding of the way the computer thinks, the way the computer works, that you can start telling it what to do without having to figure anything out. And then you're unstoppable.
37:38 Michael Kennedy: Oh, that's great advice. And, I feel like these can really quickly add up in ways that are hard to foresee. If you can do this little thing to process like a CSV file, maybe convert it to an Excel file, and then you're going to do some other little trick and some other little trick, all of a sudden you could just sort of chain those together and process like a thousand files all at once. Whereas, before, you're like, oh boy, I got to go through all of this. They add up in non-obvious ways.
38:05 Panelists: Yeah, it is definitely a super linear capability curve. If you know how to do N things, you have N to the X, where X is large, total things you can do with those bits of knowledge.
38:18 Michael Kennedy: Yeah, I think, actually, a part of the secret of programming that people who are not programmers don't actually get to see is, it's really about building these little building blocks and then like clicking them together to build larger building blocks. And, in the end, you're clicking big pieces together, not small pieces often.
38:34 Panelists: Yes, absolutely, I agree. And also, the ability to see the problem and break the problem in the single units. That's another something that, from my point of view, adds to. It's something to get in front of a big problem is something to see the big problem and be able to split in single units and, okay, now I do this unit, now I do this, fix this problem, do this little action, little operation and then, after a while, bam, your big problem is gone. It's definitely an important part of the skill set, but it's something I don't, that's not something that somebody new coming into programming should expect to be able to do in an efficient or natural way. With no experience whatsoever, I would be surprised if most people coming in fresh to programming, would have an instinct for how to break problems down that way. It's sort of, that sense develops along with the facility in programming, generally.
39:25 Michael Kennedy: Yeah. It's definitely powerful once you get it, but it's hard to just, It's hard to see that it's being useful in the early stages. All right, we're getting sort of near the end of our time here, so I do want to ask you all a sort of forward-looking question on this. Obviously, programming is changing stuff for all of you. But it's also, I think, dramatically changing everyone's roles in these industries. So, I guess, where do you see programming and technology pushing your industry or the one you came from over, say, the next 10 years, in the next reasonably predictable amount of time? Brian, you want to go first?
40:02 Panelists: Sure. 10 years, I have to imagine that programming will still be a non-critical skill. You can thrive and do well without it. But as the scope of data and the automatability, automability, of proprietary tools and the growth of open-source stuff like Python and R and others, the productivity and capability advantage that's going to come from being a programmer, that differential is only going to increase. Things may get to the point where a lack of a programming ability just is too much of an efficiency drag on somebody, an engineer, in general.
40:36 Michael Kennedy: You're thinking it's like almost like saying, well, I can't type or I can't use Word.
40:42 Panelists: Right.
40:42 Michael Kennedy: I have to take notes on my legal pad. And like, you know what? Thanks, but no thanks. We're going to find a different candidate.
40:48 Panelists: Exactly that sort of thing. It won't be fatal, but it will be more and more important. And, ultimately, no matter which, how far things go, I think it will continue to be a skill that differentiates between just a solid competence versus being a magician of sorts, in terms of being able to churn through, chew through data and asks.
41:09 Michael Kennedy: Yeah, you should be able to address questions and problems that others just can't.
41:12 Panelists: Yes, exactly.
41:13 Michael Kennedy: Yeah, interesting. Teresa?
41:15 Panelists: Yeah, I agree with that idea that it'll be sort of a, the baseline will raise. You know what I mean? There'll be a certain expectation that you will know how to store larger amounts of data or like a task, the expectation that cleaning your data set might take you two weeks, like sort of an expectation that it might take you a couple hours 'cause you can do it programmatically. I think things have to go that way. It seems almost inevitable. And I guess something that I would hope would come with it and I don't really know if it's headed this way, but it's sort of a change in how we think about sharing code or sharing information of that type in academia. I know that if you, now, at my work, if someone were conducting an analysis and we really wanted to comb into it and reproduce it, you'd want to see the code for how they set things up. I don't think that standard is there and that could be next. It's sort of hand wavy. Like, we did this model with these things but you don't see it written out. So, I don't know that things will go that way, but I think that would really be a benefit. There are definitely people pushing that way and infrastructure getting to the point where, They're still figuring how to manage it, how in the world to set everything up. But there's definitely attention being paid to it. Right, 'cause there is sort of attention. You want to protect your work and your original ideas and things like that but, it does, science is sort of built on sharing the ideas among different teams so, sharing that code would really go a long way, I think.
42:31 Michael Kennedy: I wonder if there's going to be a shift where, Right now it's like you get credit for writing the paper and getting the result, but it's, maybe, more it's like, well, we collected the data and then here you can see, we wrote the software, and here's the GitHub repository that shows all the commit history, and, yeah, somebody took it and drew a picture and made a conclusion, but that's not the work. You know what I mean?
42:54 Panelists: Yeah, exactly. Yeah, one thing I know of where they're doing that, you can actually assign a DOI to a GitHub repo and possibly even a specific release. CERN, I think, is where it's out of. There's a site called Zenodo, Z-E-N-O-D-O,
43:09 Michael Kennedy: That's right.
43:09 Panelists: Yeah, and it might have come up previously on the podcast but, they're definitely getting infrastructure to cite data, code and all those sorts of things as individual units to tie into the research documentation process.
43:22 Michael Kennedy: Yeah, it lets you sort of claim or make a permanent link back to the software in an exact state, the Digital Object Identifier. Yeah, yeah, they're doing some really cool stuff with reproducible science there. But also you could see it for attribution, right?
43:35 Panelists: Mm-hmm. Interesting. Yeah, that's really cool.
43:38 Michael Kennedy: Yeah. Giuseppe, let me ask you the same question. Where do you see programming and software pushing medicine in the next 10 years?
43:44 Panelists: That's an interesting question. Maybe in the direction of collecting information, storing information and parsing information on a higher level, on a region, city, region, general population level, which is a, there must be some work being done about that.
44:03 Michael Kennedy: Yeah, that privacy always gets in the way. The privacy, it just makes it so hard to write that software.
44:09 Panelists: It's all for the greater good. But on a personal level, maybe to remember what was done with Watson, the IBM software but taking the history of a patient and making the diagnosis of the patient in an automated way. So maybe that's a possibility. Using AI or machine learning in a way that the processor, I wouldn't say less prone to error, but the maybe it could be a safeguard or a backup for the doctor, for example.
44:41 Michael Kennedy: Yeah, that's a really good point.
44:42 Panelists: Something that verified information and say, okay, the probability this being the illness is this much or could be this other problem, this other...
44:52 Michael Kennedy: Yeah, when I was young, thinking about careers, people always said, oh, you could become a doctor and you're always going to have a good job. And it's always going to, You know, that is a stable, reliable job. There are always going to be people and they're always going to need healthcare. And, if you want to be safe, you become a doctor or, of course, if you're interested in it as well. But that was a part of the message, I thought. And I don't know that it's necessarily true anymore.
45:13 Panelists: There's a physical part that is not going to go away. It's not going away, not today, not in 10 years, 15 years. But there's another part of the whole process that could be, I would say, improved by technology.
45:29 Michael Kennedy: Yeah, for sure. We saw some projects where they took mammogram pictures and the AIs were doing better than the radiologists on predicting cancer. There's some stuff they took on doctors' notes and then figured out the readmission rates and, actually, the AI was doing better on that. And I can see a world where a doctor is a skilled scientist who understands the body, but is also largely acting as a, like a very knowledgeable counselor to help understand what the machines are saying. It's going to be interesting.
46:02 Panelists: Yeah, very,
46:03 Michael Kennedy: Yeah, there'll always be a place for doctors but I think it's going to shift a little. It'll be interesting. All right, well I guess we're going to probably leave it there just for the sake of time. So it's all very interesting but, we've got to ask you all the last final two questions of course. Just quickly go through both these We don't have a lot of time. So, Giuseppe, I'll start with you. Favorite editor or what you use day-to-day, and then, notable PyPI package.
46:25 Panelists: I use Sublime Text with Anaconda and I love it.
46:29 Michael Kennedy: And that Anaconda is a plug-in that makes Python editing better, not Anaconda, the distribution that distributes scientific packages.
46:36 Panelists: That's correct, yes.
46:36 Michael Kennedy: Strictly for
46:41 Panelists: And, so with package, I guess, I'll go with requests just because it saved my day in so many different occasions.
46:50 Michael Kennedy: It is special. Brian?
46:52 Panelists: I'm a polyglot when it comes to editors. At work, most of the it's in Jupyter. For side projects, depending on how big the project is. If it's smaller I'll just use BAM on Linux or Notepad, WordPad, simple lightweight text editors on Windows. Or, if I do want a full IDE on Linux, I use, I think it's pronounced Geany, G-E-A-N-Y. And then I'll pull up PyCharm on Windows. And, as for a package, I'm going to go far from the usual fold, I think, here. For one of my side projects where I, there's a, it's a technical program that runs some calculations, but it just spits data to the terminal, but I want to run it async and I've used a package called sarge
47:29 Michael Kennedy: sarge, okay.
47:31 Panelists: to, you know, like Sargent and all, Yeah. So, to run it, it's a wrapper around subprocess I guess but it handles all of the pipes, standard in, standard out, standard error, so that you don't get lockups from buffers filling up.
47:43 Michael Kennedy: Oh, wow, okay.
47:46 Panelists: It continuously flushes them and makes them available as capture objects that then you can pull and parse and spit back to the console if you want. And it's like version 0.1.5 or something, so it's still nominally early development. But for what I needed it for, it's worked really well.
48:03 Michael Kennedy: That's cool. So, that's like that building block idea, right? So now you can take these other processes and really easily click them together.
48:10 Panelists: Mm-hmm.
48:10 Michael Kennedy: Nice. I love it. Teresa?
48:12 Panelists: As far as editors, I'm a big Jupyter fan, but also I just use Atom, nothing too crazy there. And package-wise, I'll say one that's not necessarily like my all-time favorite, but it saved me a ton of time recently. So I'll give a little shout out to openpyexcel, which is just a really convenient way to work with Excel sheets, especially if people want to save data in multiple tabs. It's really very, very helpful.
48:35 Michael Kennedy: Oh, that's cool. Yeah, I've played just a little bit with that and that is great and I think it's really relevant to the audience who would be interested in this particular show, right? Like, very likely that they've got some data in Excel and they want to just interact with it. Well, here's a nice way to automate that from Python. It's cool.
48:51 Panelists: I haven't used it yet, but I'm planning on it. Yeah, it's really good. It'll help let you just like tab through all the tabs that you might not be able to get if you just saved it as CSV and, really, very, very intuitive I think.
49:01 Michael Kennedy: You could even do formatting I think. Like colors and formulas and stuff like that. It's pretty sweet.
49:06 Panelists: Yeah, I think so. I haven't gotten too much into that aspect, but I think that you can.
49:09 Michael Kennedy: I think so too. I've just never needed to programmatically set a color but I could see how you might some day. All right, well, thank you all for being on the show. It's been really great to hear your stories and thanks for coming on and sharing them with everyone.
49:21 Panelists: Thank you. Yeah, thanks. Thank you. Thanks, very much, for the opportunity. Really appreciate it.
49:24 Michael Kennedy: Yeah, you bet. Bye everyone. This has been another episode of Talk Python to Me. Guests on this episode have been Giuseppe Cunsolo, Brian Skinn and Teresa Borcuch. It's been brought to you by Vettery and Rollbar. Vettery will connect job seekers with thousands of great companies. Make Monday something to celebrate. Visit talkpython.fm/vettery, that's V-E-T-T-E-R-Y, and get a $500 bonus if you accept a job through them. Rollbar takes the pain out of errors. They give you the context and insight you need to quickly locate and fix errors that might have gone unnoticed until your users complain, of course. And as Talk Python to Me listeners, track a ridiculous number of errors for free at rollbar.com/talkpythontome. 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.