Nina is a Cloud Developer Advocate at Microsoft, Twitch Streamer, Pythoniasta, PyCon 2019 Keynoter, long-time DjangoCon speaker, and now teacher at FrontendMasters. We discuss learning Python & Django mid-career, VSCode, Azure, and more.
Carlton Gibson 0:06
Welcome to another episode of Django Chat, a weekly podcast on the Django web framework. I'm Carlton Gibson joined as ever by Will Vincent, how are you Will?
Will Vincent 0:13
I'm great. Hi, Carlton,
Carlton Gibson 0:14
you Hello. And today we've got Nina Zakharenko with us. Hello, Nina. How are you?
Nina Zakharenko 0:19
I'm doing great. Hi, Carla. Hi. Well,
Carlton Gibson 0:21
hello. Thanks for coming on. So, Nina, we always ask this is a good, good opener. Can you tell us a little bit about yourself how you got into programming how you found Python and Django and you know, what's your backstory? What's your origin story?
Nina Zakharenko 0:35
My superhero. Oh, there we go. Yeah. So I've always been interested in computers from a young age, I started hacking together my first websites on geo cities, probably around the time when I was 12 or so. And I had more of a traditional background. So I went to college for computer science and kind of went through that whole misery to start my development career.
Carlton Gibson 1:05
Nina Zakharenko 1:07
Yeah, I have I have a ton of pop quiz knowledge about things that have not been helpful to my career at all.
Will Vincent 1:13
Well, neither of us have two degrees. So we, you know, empathize with that.
Nina Zakharenko 1:18
So I started out my career doing enterprise Java and working for large financial institutions. And it took me a bit of time to realize that that was horribly boring and not how I wanted to be spending my days and I kind of thought about what technology is the companies I did want to work for were using and Python seemed to be a common thread. I heard great things about the Python community. And so at some point, maybe about five to six years of Java. under my belt, I decided to switch to Python. I had a really hard time teaching it to myself on the side Because it was just really hard conceptually for me to switch from using a compiled language full time to something dynamic like Python. And so I, I quit my job for three months. And I went to hacker school, now known as the recurse. Center, which is kind of a self directed writers retreat for programmers. And I taught myself Python over three months, and then kind of haven't looked back since
Will Vincent 2:30
recurse. Center sounds amazing. I mean, at any stage in your career, I think the chance to spend a couple months just learning and having some colleagues, I mean, I'd like to do something like that, right. Yeah,
Nina Zakharenko 2:39
it was fantastic. I recommend it to everyone. I went completely broken in the process, because a lot of folks who had gone through the program had spent a lot of time planning for it. And for me, I was just like, I'm really sick of what I'm doing. I did not plan for this. But I think I need to go and make it happen. But you're kind of kind of equaled out in the future.
Will Vincent 3:05
And then you made your way out west from there, right? I was. I think I first heard of you in the context of some of your Reddit work and I remember it being like, oh, like salt lake city like there's, you know, this awesome skiing out there. I didn't know there was tech out there. Obviously. People Yeah,
Nina Zakharenko 3:19
they call it the silicon slopes. I think it's pretty cute.
Will Vincent 3:23
You know, when you go and visit, you're like, this is perfect. Like, I got to go to Park City for the first time last year and you fly in and 40 minutes. You're there. And
Nina Zakharenko 3:32
yeah, I moved from New York City to Park City and it was a shock.
Will Vincent 3:38
Yeah, you're in Park City? Well, because you could they say right, you can you can leave like Boston or New York in the morning. And with the time difference, you can be on the slopes by noon, which is actually true. I did
Nina Zakharenko 3:48
learn two things. Park City in the winter, I think is has a population of 21,000 people but in the fall when I had moved there, I think it was between five and 7000 so I moved from one of the biggest cities in the world to a tiny, tiny city. And it was I, it took a lot of adjusting. I'll say that, but
Will Vincent 4:13
but I mean, it's not the middle of nowhere, right? You got the Olympic Training Facility there. I mean, I use the, like the community like Jim there. When I went out there, I had to take a shower and it's like the nicest job ever seen.
Nina Zakharenko 4:25
After two months, you've kind of you've done all the things and what I learned from living there. Yeah, you know, the people you see the same people everywhere. I learned that the skiing and Park City was actually not that good. And think big and little cottonwood was where it's at so Snowbird and and, yeah, and Brighton and so I would drive from Park City to Snowbird to ski like an amateur and I moved to the following year, but yeah, lesson learned.
Carlton Gibson 4:55
Okay, this nice little interlude
So I know you mean a firm like, you're massive on Twitter, you mess with the conference's, you've got these courses, you've got talks, you've got things. So can we talk through some of the things you've done that so, you know, one thing I want to talk to about is your Django con talk from last year where you'd about debugging was it goodbye print? Hello, debugger was that? Yeah.
And it's just
fantastic. You know, I'll just, I'll just run for a little bit about why I loved it so much. And then you can just spin off from there. But you've been using the debugger for years. And then all of a sudden, you just can Oh, you know, did you know you can use his little interact command and then you can pull up an ipython debugger. It's like, No, no, no, this. So anyway, I've been using that. It's been my new hammer ever since. So I want to say thank you for that. But perhaps you talk a little bit about your talk, tell us tell the listeners and we'll link to it in the show notes things.
Nina Zakharenko 5:56
Yeah, I'd be happy to I'm actually in the process of recording a new and improved version of that talk for Python us. It's going to be released on the virtual Python 2020 YouTube page. Okay.
Will Vincent 6:12
Oh, great. So that should probably be out when this Yeah. And
Nina Zakharenko 6:16
yeah, I know quite a few senior engineers who still use the print statement to debug and to troubleshoot. And my goal with this talk was really to show people that the debugger is not scary. Because I think a lot of people's first introduction to it is just like, Oh, this is a lot of text. There's an arrow and a prompt. And what do I type in here? And how do I set this up? And what packages Do I need to install and there's so many commands to keep track of? My goal with this talk, like a lot of my talks was to just kind of distill it to the basics. So what can somebody walk away with in half an hour where they feel not quite so overwhelmed by All of the options and all of the commands, how did they kind of get their training wheels on to start using the debugger right away and then incrementally build on that knowledge in the areas where they felt like they had gaps. And I was really kind of shocked by how few developer, few Python developers use the Python debugger. Because every time I give this talk, I think I've given it twice now. I asked people to raise their hands and and kind of show you know how many folks in the audience use the debugger. And the first time I gave the talk, I expected the number to be 50 60%. It was 10%. I was shocked. It's really not a widely used tool. But it is so helpful. I mean, it saves me dozens of hours, debugging working on a project. A lot of times I'll just copy code straight out of the debugger into my code base, because that's where I got it working and The first time I gave this talk, somebody afterwards approached me and they were just like, you know that the head explode meme. Yeah, that was
Will Vincent 8:11
the one with the rainbows. This is one of
Nina Zakharenko 8:14
their expression. Like they were a shell shocked. They're like, Oh my God, thank you for telling me this and explaining this, this is gonna save me. hours and hours a week at work. I can't wait to try it. And so I kind of feel like I'm spreading the good word, you know, by giving this talk and and sharing this information. Ya know,
Carlton Gibson 8:35
and I think a little bit of debugger skills because goes a long way. You don't need to know all the minutiae. You don't need, you know, if you can just put in a breakpoint and stop it in the place where something's going wrong and examine a few variables that can make all the difference. And then, you know, you can step up to that and step through code and back and up and down and, you know, move around the stack and that's more advanced, but just to be able to stop it there where you can't necessarily unit test because your code isn't structured, right? But you can get the debugger in there and you can see what's happening.
Nina Zakharenko 9:05
Yeah. Should we give a quick overview of debugging to your listeners who might not be familiar? Yeah. Conan? Oh, I choose you Chrome.
Carlton Gibson 9:15
Oh, well, okay. So what do you do what debugging, you won't why'd you put a print statement in you put a print statement, you put a print statement in because you wanted to see what's happening at a point. So you print a value, what you can do with the debugger is you can put in a breakpoint. And the code literally just stops there. And you get a little console. And it's not quite a Python console. And like a plain variable, you can type, you know, you could type it and it will print the representation that variable, and that's kind of handy. And you can, you can put, you can examine the variables. In that point, the thing that really amazed me for Nina's talk I didn't know and I've been in I've been doing the debugger for a long time, was that you can type interact, and that actually opens a Python shell and it's like, and then you've got a proper shell and you can do what I mean, because to print an object in the, in the debugger, you kind of have to use these arcane commands. And sometimes you can't examine the the variable you want. But if you type interact and you enter the Python shell, you can just use it's just a Python shell. And it's amazing. It's like I can, I don't have need these crazy debugger commands. So that's fantastic. And anyway, you can then once you've got your breakpoint, you say, Well, actually, I need to see what's happening. 10 lines on and you can, you can type the file name, and then the line number, and you can set a new breakpoint. And then you can press Continue, and it will jump, Gary until it gets to the next breakpoint. And then you can see what's going on there. And with this, you've got visibility into code that perhaps because of the structure, whatever you can't get with unit testing, ideally, it would be all be perfectly unit testable. But you know, I know, personally like that.
Nina Zakharenko 10:48
Yeah. And the fun thing is you can put breakpoints in your unit tests.
Carlton Gibson 10:52
Yes. Yes, you can. And you can do things like assert false in your unit test and then you can run your Your test runner with the PDB flag, so that when it hits that surface, it'll open up the debugger. And then you can print your variable. So say the I don't know you, you've got your unit test, and you don't know what some variable is meant to look like, but you know what it looks, it's going to look, you can just print it in the shell, and then you can copy it, copy and paste that into your unit test, and Blackboard formatted nicely. And then you can remove the assert fourth, run it again, and your unit test passed, and you didn't have to type it out by hand.
Will Vincent 11:26
Do you recall how you found out about it and started using it? Because clearly, it's not a standard part of Python developers are learning. Like, were you reading that? Maybe your you know, my, the two things I can think of is some colleague happened to mention to you is just like, yeah, you should do it this way. Or you were just as a newbie to Python reading the, you know, standard library or something. It was like this looks good. And didn't realize it was not well, you've
Nina Zakharenko 11:50
been using it for so long that I honestly don't remember, but I know that I came across the command. bind shell version of breakpoints first and discovered ID breakpoints. Second. And so a lot of my workflow around debugging still revolves around interfacing from the command line. But I honestly don't remember how I came across them. But the idea for this talk started out a few years ago, because I went to a talk about debugging and kind of left a little bit less than satisfied. I don't remember which one it was. But the talk was just kind of an overview of all the commands. And so the talk was run this command and this will happen run this command, and that will happen. And I think I left more confused than I walked in, and I kind of always wanted to put my own spin on it.
Will Vincent 12:50
Yeah, well, you know, if you did, then certainly a lot of other people did, but maybe they didn't raise their hand and ask questions to you know, bring out the insight at the talk. The speaker
Nina Zakharenko 13:01
And it's been kind of it the talk is just about half an hour. And I feel like everybody who walks out of it walks out of it a little bit more productive. Right? And
Carlton Gibson 13:14
they were the command, it's been like, sometimes it's difficult in the PDB command line, it's difficult to have to do exactly what you want to do, because some things you can't type because their PDB commands. So it's like, how do I now examine this? But yeah, as soon as you can drop into it, that's that's literally been a life changer for me for, you know, nine months, I've been like, ah, every time I type you, I'm like, Don't give me you know.
Nina Zakharenko 13:41
I love that.
Will Vincent 13:42
Even before Django con Carlton. I remember you were all excited about it. And I do recall that you and I gave our talks at the same time. And Carlton went to you know, he'd gone to mine the first and I was like, What better have been good and he's like
Nina Zakharenko 13:57
sniped. I'm so sorry.
Will Vincent 14:01
Watch the video it was
Nina Zakharenko 14:02
Will Vincent 14:04
Yeah, it's, there's one
Nina Zakharenko 14:05
other thing I want to call out about the talk. There are some folks who've been doing Python for a long time, who also walked away with knowledge about the PDB RC file, the dot PDB RC file where you could add some configuration and add aliases. And so one of my favorite bits was configuration where you can set up the IP, python repple. A command that would allow you to open that up from your debugger. So letting you do things like the ipython magic commands, you know, like C paste, where you could just cop copy and pasted a whole code block at once. Like That was my when I discovered that I was like, Oh my God, I've been searching for this for years.
Carlton Gibson 14:51
So you've actually just given up coding in an editor. Now you just can't you just spin up PDB and just start typing code in straight into PDB until it's finished, and then print it
Nina Zakharenko 15:00
Sometimes Yeah, when something is happening, I'm like, What is going on? or What is this variable look like? It's I just always reached for a breakpoint, or you know, is is this code path being hit or not? You know, is this method being called just toss a breakpoint in there? There's no need to wonder or search through log files or anything like that. To a breakpoint.
Will Vincent 15:22
Yeah. Yeah, no. So I thought that was a nice segue Carlson cuz we did want to ask you about Visual Studio code. Yeah. Since you work at Microsoft, you have a post, if not a talk on that. So I'm curious how how do you configure VS code for your your Django work? I'm sure there's some tips. I'm because I use it personally. But I'm sure there's stuff I'm not using.
Nina Zakharenko 15:45
Yeah, so the nice thing is, I mean, once you have the Python extension set up, you really don't have to do much additional configuration. You do need to kind of use to get this debugging going in VS code, you have to set up your debug configuration just once. But Django is already present in the debug configurations. You don't really have to do anything there. It comes with debugging of Django templates out of the box, which is,
Will Vincent 16:17
yeah, that's super nice. Yeah, super nice.
Nina Zakharenko 16:20
That's one of the killer features, and something that at least I haven't figured out how to do with a command line debugger. So if I need to debug templates, which I almost always do, I don't know why templates Just give me a lot of grief, you know, the template syntax and
Will Vincent 16:34
that's where the typos slipped in there. And it's always like a, you know, a percent or a bracket that's slightly off. Yeah, for me anyways,
Nina Zakharenko 16:42
and so so in VS code to be able to throw a breakpoint in a template and see what the data looks like. Like that is just huge to me. It's it's saved me a ton of time. And then, when I'm debugging more complex applications, the VS code debugger is great too, because you can just hover your mouse Over variables in code that has already been executed, and it'll just show you the value. Yeah.
Will Vincent 17:07
It's pretty amazing editor. And I tried to recall because I think it's only the last maybe three years where it was sublime, too. And then which is still good, but then it was a while before three came about, and then everyone got hopped up on atom, which I still use in like from GitHub. And then VS code came in, and I think, you know, I can say a lot of people's reaction was just like, yeah, that's from Microsoft, but it's so good. Yeah, it's like, it's got the built in Terminal. And it's, you know, since I saw it, I think maybe it's two years ago, I've, it's, you know, I haven't really used anything else. And it's just, it just sort of to me, like I know, it's Microsoft Visual Studio, I think for a while for a long time, but it kind of just dropped and was like Wow, this is amazing and fast. Yeah, and free.
Nina Zakharenko 18:00
I, I was a PI charm user for many years. And then I switched to Emacs for many years. And the thing that I
Will Vincent 18:08
really went that way, you went from Emacs. Oh, wow.
Nina Zakharenko 18:12
By the time I switched from Emacs to VS code, my Emacs configuration was like, so out of control that I was just kind of just
Will Vincent 18:21
as sick as you were using Emacs. So let's I was, you know, it's like, complain to me about config. I'm like, we are using Linux.
Nina Zakharenko 18:29
It was great when my config was minimal. But then I was like, Oh, I need this. And I need that. And then you know, all the config is less. So to look at a lot of Lisp. I know it was my own undoing, and made my configuration too complex. And if I had kind of stuck with the basics, I probably would still be using Emacs but now I use an Emacs keyboard. bindings plugin. And the thing I really like about VS code is it comes super bare bones right like is when you first download and install it. It's a really lightweight editor. And you kind of pick and choose the plugins that you want to install based on the kinds of activities that you do and the kinds of code that you interact with. So when you open a Python file for the first time, if you don't have the Python extension already installed, you'll get a pop up that says, like, hey, there's an extension that can help you edit this kind of file. And so you can kind of
you get a menu, right? And you get to
Will Vincent 19:30
hold your hand and kind of suggest stuff, which is really nice.
Nina Zakharenko 19:32
Yeah. You get to choose your own configuration, your own custom setup.
Will Vincent 19:37
It's almost like maybe all of us are old enough to remember like Clippy with Microsoft Word which popped up. Like, actually helpful.
Nina Zakharenko 19:46
I think there's a lot of nostalgia out there for Clippy
Carlton Gibson 19:52
VS code is like Clippy pretty.
Will Vincent 19:56
So you have you have so much work out there that we could Is there anything else you want to add about VS code before? I switch gears
Nina Zakharenko 20:05
at Kirtland? I know you use it too. Do you have any
Carlton Gibson 20:08
no I use it all the time. So I so I have an old and first love which is BB edit, which is a variable macros
Will Vincent 20:15
again, it still works it
Carlton Gibson 20:16
Nina Zakharenko 21:42
well, yeah, you know where to send that feedback. You can send it to me and I'll make sure it gets routed properly.
Will Vincent 21:48
Okay, okay. Yeah. Do you do you have a sense of how many people are working on it within Microsoft? Because my sense is it's a pretty good sized team.
Nina Zakharenko 21:56
It's it's a fairly large team. I don't have the exact number but the creator of the Python extension. It was developed by somebody else, Don, I'm gonna butcher his last name. And for that I apologize. It's Don Giovanni. And he has software It was kind of acquired by Microsoft, but he also came on board. So he started the extension. And then when Microsoft acquired it, they were able to build it up and make it this really great thing and have a team that you know, now supports it. It's something that I'm working on that isn't quite ready yet, but hopefully will be by the time the podcast airs is. I'm planning on getting about four folks from the Python extension for VS code team to come on my twitch channel every two weeks and do a kind of a community q&a. So take questions through the chat. Talk about any updates, any you No sneak peeks that they can share from future releases. And I'm, I'm really excited about that I did a pilot and you know, everyone who kind of came on the show and was able to interact had a great time with it. And so I think it's going to be a great way for, for the team to interact with the community. And then for folks to also ask questions and meet some of the people who who do the work.
Will Vincent 23:24
It's been really nice to see Microsoft's commitment to Python. I mean, also in the realm of, you know, the Windows, Windows 10. App Store, now you can install Python because I, it used to be a lot harder. Yeah. And even I had have installed Python three.com site and one of the ways I was recommending the new way to do it, and I forget who but someone who's on the team at Microsoft came in and made some comments saying like, yes, we recommend doing it this way as opposed I forget the other way. But also we're adding there are one or two complaints and people had in a discussion for him and he was saying at work, we're going to work on those and Because it's just you know, they're just systematically removing a lot of the traditional barriers to development on Windows machines, you can install, like 3.9 Alpha out of the Microsoft Store. So that's kind of quite easy. That's that makes destiny more fun, you know? And if any,
Nina Zakharenko 24:20
that's awesome. Yeah, I've, you know, as a Python developer advocate at Microsoft, I've been to see the support and the presence at pi Khan has been really great. So we've been a keystone sponsor for the past. Who I don't know. This would have been my third pi con with Microsoft, but I believe it would be four years in a row is Keystone sponsor. And we have a lot of really fun and exciting virtual events planned for Python. Since we weren't able to be in person. We're doing a lot of hands on labs and online workshops that are going to be released. kind of starting mid April going through mid May.
Will Vincent 25:03
Great. So the web links to that. There's also we should mention, you and Carlton have done a video series on using Azor for deployment that's from last year, I think right right after
Carlton Gibson 25:14
Django. So we using them VS code with Django just showing you how that works, and then sticking your Django app on App Service, provisioned a Postgres instance, and deployed the Django app to as your to the App Service. They're all from within the VS code extension, which is quite cool and super easy.
Nina Zakharenko 25:39
Yeah, we should I drop a link to that in the show notes because I I think the video came out quite good. We got to film it in the Microsoft studio in Redmond, which is kind of a full fledged studio with cameras and lights and we had a newscaster desk and yeah, it came out quite well.
Will Vincent 25:56
Do you spend in your work? Do you spend much time on a nap? Have it or, like if people have issues deploying Django stuff in azura? Can they reach out to you? Or is there someone else on your team who's handles that?
Nina Zakharenko 26:08
They can reach out to me and I'd be happy to route the request and take their feedback. Usually, the the best way is to open an issue on GitHub. But sometimes it can be hard to figure out what's the right project or you know, what are the right tags? And if it's something kind of more, if there's a bigger issue, I'm happy to route into escalate and to help out, I guess, what would
Carlton Gibson 26:33
well we're talking about this, though, we should just talk a little bit about as you're, you know, in the cloud world, there's a three right, there's Amazon, AWS, this Google Cloud Platform and as your and a lot of people to be straight to AWS are not necessarily the right option. You know, the others are good, too. I mean, I don't know what you think, what you'd say from the Microsoft stand, you know, what's the what's, what's the is your option. I mean, for me, it's great. You can spin up you can spin up a Postgres, you've then got things like the app service, you can spin up compute instances the same as everywhere else. You know, it's if I guess if you're tied into Microsoft already, it's a good place to look.
Nina Zakharenko 27:11
Yeah, yeah. Yeah, we we have a fully featured suite of offerings, we offer deployment, and serverless functions and kind of all of the all of the standard stuff, but I think where we really shine, and something that is really cool that the other cloud platforms don't necessarily offer is we have VS code extensions around all of our offerings. So there's a VS code extension for web apps that lets you create deployments right from VS code and do things like add environment variables, start and stop instances. There's a Yeah, so there's an extension for our serverless functions and it's it's just It's really nice to have a different way of interfacing with your cloud resources.
Carlton Gibson 28:06
Yeah. And the Yeah, there's one thing I really like as well, like the blob store extension is really cool because you've uploaded to the blob store, you can just I'm gonna read it my CSS online, you know, it is. It's like when you used to SSH into your server and edit your HTML live. And you can do that all that again, from inside VS code. It's like, anyway.
Nina Zakharenko 28:24
Yeah. And I think, you know, it offers, it opens those services up to an audience that maybe is not necessarily quite as familiar with the command line, and doesn't necessarily want to learn the ins and outs of a new command line tool. Some folks are just visual learners and visual explorers like I am and so, yeah, to be able to interface with those resources from straight from your ID, you know, in a in a way that you're kind of already familiar. It's it's lives next year code. I think it was really fantastic.
Will Vincent 28:59
Yes. Super. Okay, that's cool. Well, maybe the last of the talks I wanted to ask you about is so you did the closing keynote at pi con this past year, I think. Yeah, I mean, that's not really Django related. It was more about hardware. I know what we'll link to that talk as well. I thought it was really interesting in person, I guess, where do you find the time to play around with hardware to?
Nina Zakharenko 29:24
Well, I kind of started as more of
a hobby and then has kind of migrated to something that I'm able to focus on at work, which I'm really thankful for. But I started tinkering with hardware quite a few years ago, and when I discovered circuit Python, but I think that kind of really reinvigorated my my interest. It's, it's a fork of micro Python that's more focused on education. And so to kind of move away from writing Arduino Which is kind of more of an analogue to C and c++ to writing, Python to interface with microcontrollers. I just thought that was so, so fun and so awesome. And we were going to be handing out pi badges at pi Khan for completing hands on lab. I know unfortunately, that's not happening this year, we're we're going to be doing something virtual though. So, so keep your eyes out. But I do have a whole circuit Python repository available where if you do have a PI badge, you can run it and it had some fun easter eggs in it and a little, a little version of an expo vert meter that I had written, cuz I'm pretty introverted, but sometimes, you know, you're at a conference or an event and yeah, I love talking to folks and catching up with old friends. So there's an indicator have kind of where your social battery was.
Will Vincent 31:04
Nina Zakharenko 31:06
Yeah, with a little red LED and a little red message, you know, if you're if your social battery was empty or you know, could display a green line if you wanted to chat folks, there are a lot of cool little things built into the badge and I can share a link to that repository as well. If somebody does have the hardware, they can play with it and try it out. Because, you know, unfortunately, Adafruit isn't shipping at the moment.
Will Vincent 31:30
Yeah, well, because last last year, they gave everyone a, you know, a chip. Well, a little board. And so I remember going through the airport being like, you know, I'm sure you've seen a lot of these. Yeah, because it is the kind of thing you're like, I just want you to see this thing like it does look scary, but it's it's not. It was fun. Swag from last year, Carlton, you were gonna say something?
Carlton Gibson 31:52
Because what I was gonna say was just that. I guess the trick with this kind of thing is always getting the right hardware. So you know, you go You find an electronics tutorial and you buy your Arduino board and your starter kit and you get the rope, you know, and you get up and running. And then you're like, ah, but I need this piece of kit, which I haven't got. And I guess for Is there a Do you have a kind of look if getting started by this guide, because that's kind of handy, I think.
Nina Zakharenko 32:20
Yeah, well, so there are kind of two paths there. I think that the Adafruit circuit playground express the device that they were giving out last year is really a good all in one kit. It is microcontroller, but it has buttons. There's 10 LEDs on it, there's a little slide switch and a whole bunch of sensors, temperature sensor, light sensor. So if you kind of just want one thing to get started with, I think it's a really good option. There's also the BBC Micro bit which I think kind of has less on board but is also a great option and then kind of these days If you're not able to get your hands on hardware, there are options for emulation. So make code will allow you to use a block based editor and have a circuit playground Express emulated. So you can learn about all the concepts without necessarily having the hardware. And then some of the interns who have interned for the Microsoft garage have come up with VS code plug in called the device simulator Express. And originally that just simulated the circuit playground Express. But there has been a recent release, I believe, last week that added support for the micro bit and the Adafruit clue board. So if you don't have the hardware, you can still run circuit Python and see
how it would look on the actual device. So yeah,
Carlton Gibson 33:54
and if you're waiting for the board, or you know you can get the board later on this year up and running.
Nina Zakharenko 33:58
Yeah, yeah, exactly.
Will Vincent 34:00
Do you know does so bits box is something I see all the time for kids? Does that is that micro Python? Or you
Nina Zakharenko 34:07
know, I'm not familiar.
Will Vincent 34:09
Okay. Yeah, they I guess just in my parenting circles, they have these subscription will they'll send you hardware things for kids six through 12. And I guess I was trying to more generally segue to teaching Python cuz we have a course we'll talk about but I've one thing I've noted is that, especially for younger kids, doing hardware based things is a much more accessible way, a real world way because you don't need that much code. And you can do things like, I think Nicholas Ptolemy was a guest and was telling some of these stories of you can create like, a wand and have like a, like an Easter egg hunt in a library or you can use a tiny bit of Python code with a, you know, one of these chips, and it's just a great introduction to students. And I think that's being used more and more at the like late elementary, middle school level, rather than, you know, default. to building a video game or a website. So that's just something I'm very much thinking of, and my oldest daughter is in that age group. But I'm so predisposed to think of software terms, but it's like, oh, yeah, hardware, like a teeny bit of Python. And I'm, you know, hashtag coding, but then you can, like run around and make it interactive. makes total sense that especially for a younger kid, that would be a great introduction.
Nina Zakharenko 35:24
Yeah. I mean, there's just something exciting about making an LED blank.
Will Vincent 35:28
Yeah, yeah. Yeah, it's I mean, it's, yeah, it's a little more than just this, you know, your computer screen showing something or other.
Carlton Gibson 35:38
Yeah. You've got to teach at the marquee tag at the moment.
Nina Zakharenko 35:43
Don't don't do
marquee tag is over. Yeah, one of the I think the first time I ever spoke. The first time I spoke about hardware at a at a conference was pi cascade. Last year, early last year, and I did a few live demos with the hardware where I had a camera kind of pointing at the device, and I would modify code on it. And I think had three or four demos. And after each demo, the audience would just break out and applause and I was like,
Will Vincent 36:19
giving a talk. I didn't I didn't know that.
Nina Zakharenko 36:21
Yeah, I didn't know that either. I was not expecting it. But folks were like, really excited and really amped up to see the LEDs change color. And, you know, like, you're watching me program changing the behavior of buttons, like folks are really invested in it. And I was, I was taken aback for sure.
Will Vincent 36:41
They probably also impressed that you live coded and it worked, right? That's always like, great energy hasn't spoken before. Like, I'll just live code this little bit and you want to say it's not gonna work. So many ways, not gonna work. But, you know, he made it work. So
Nina Zakharenko 36:56
I had videos recorded of all of it in case it didn't work.
Will Vincent 37:00
Yeah, right. I was gonna say that, like, that's the way to do it like, is to have a backup or. Yeah, I mean, I've even had it like Boston related things where I always like throw copy of everything online. Because just because like I have a MacBook and the person before me had a MacBook and it plugged into theirs doesn't mean it won't plug into mine and yeah, not that I recall it. I had to give a 40 minute talk just, you know that way and I was like, never doing that again. I'm always gonna throw a copy up online somewhere. In case my slip my, my MacBook mysteriously doesn't work.
Nina Zakharenko 37:31
I gave a I did live demos for my PI con keynote. And that was terrifying.
Will Vincent 37:37
Yeah, funny enough couple thousand people.
Nina Zakharenko 37:39
I did it. I did a practice run it everything worked great. And then on the day of my camera's glitching, the camera that I was using to display the hardware started kind of glitching out every time like well. Alright, this is just happening. I'm gonna roll with it. Cuz. Yeah, I'm here and I've given the talk. So
Carlton Gibson 37:58
I want to ask about recording for I'm fine because you're doing recorded talks for like an online this year. So do you feel like the pressures much higher to make something you know that the production quality higher because, you know once you're on stage live, you've just got a plow on and if you camera glitches you've just got to go through it and this isn't diamond dynamism to that. But if you're recording it, you'd be like, Oh no, I'm gonna redo that bit 58 times and till it's just right.
Nina Zakharenko 38:24
How do you feel that Oh, well now the mentioning Carlton.
Will Vincent 38:28
Thanks for that.
Nina Zakharenko 38:29
Yes and No, I mean, editing is really time consuming. Um, I think I'm lucky that I'm kind of I was already familiar with software to record screencasts locally on my machine because I do a lot of internal presentations that take advantage of that format. So I know kind of a little bit about video editing. I have a fair amount of gear for recording videos and for live streaming. So I've been live stream coding on Twitch for the past few years. So, you know, I have a reasonable microphone and good lighting and a nice camera. And so I feel pretty well set up to do my recorded talks. But I think if you don't have that background and don't have that experience, it's it's a lot harder and a lot more nerve racking because you might want to make it perfect or re record or whatever. But you don't necessarily know how because the tooling is not that easy. And not that straightforward.
Carlton Gibson 39:29
I guess you've mentioned twitch a couple of times, I want to ask about that as well. So I always say, Oh, you know, I've seen people doing Twitch, I thought I could I do Twitter and be like, is anyone gonna watch me reading the docs? Like do you have to put you've got to plan it in advance or so that you actually do some coding? Or do you just sit there reading the docs, I don't know.
Nina Zakharenko 39:48
So they're one of the most interest interesting things about live coding on Twitch I think, because at first I thought I would be productive, you know, as productive as I might be writing code on my own but actually I'm at least half as productive, if not less. So when life coding because
Will Vincent 40:06
he's typing in public, right, that's always error prone to Acts anyways.
Nina Zakharenko 40:10
Yeah, it's typing in public. There's, I keep an eye on the chat, and I try to answer questions and interact. And then sometimes we go down rabbit holes. So kind of setting expectations for how much I can get done, which turns out to be a little bite sized pieces. But I don't plan much in advance. And there have definitely been streams that are probably more boring than others. There was one where I forgot to set a callback URL properly. And so I spent, you know, 45 minutes going, why is this not working? And that's because, you know, is a mis configuration with with an API that I was using. There was one stream where I read docs about the logger for the most part. Yeah, and log stream
Will Vincent 40:54
filters. Yeah. But I think that's there's real value in that to both and seeing That even the pros, you know, Miss stuff, and like and that but more importantly, what is the process of debugging a situation? Because I don't know, like, like I play I play guitar and like john mayer is a guitarist and he does these live streams from home. And he'll just like noodle for 45 minutes and just, like not miss a note, but that's not what programming is. Nobody does that. Now. So I think you know, it's helpful just to show people like, here's Carlton reading the docs, here's will looking up on Google, it turns up it's a tutorial he wrote two years ago, like, you know, this is day to day programming.
Nina Zakharenko 41:37
Yeah, exactly. I, you know, I remember almost nothing Google and Stack Overflow. That's my crutch. And a lot of times, it's just like, poke it with a stick and see what happens. It was definitely scary making mistakes at first, because everyone's gonna think I don't know how to program and how terrifying is this but you know, the community That I've built up on Twitch is very nice and very wholesome. If you come on the twitch stream, you can get information about joining our Discord. And at the moment, I think there's just 40 wholesome folks who hang out in there and talk about Python and everyone's really nice and welcoming and supportive. And yeah, I think it's, it's good for people to see me make mistakes. And, you know, the process of debugging and troubleshooting and figuring out what went wrong is is really important to show
Will Vincent 42:32
why almost think that having having like the q&a, where people ask you a question, and just seeing how you Google for it, is, would be really valuable. Or Carlton, I mean, because beginners just don't and I often think is termed as a teacher, how do I teach people how to Google better? Because it it's a, it's a little slippery, but you know, I think there's some, there's some value in that just seeing like, well, I don't know, but here's the terms I would type. Here's how I look at something and say oh, this is seems valid versus like, this is total trash. You know, how do I scan through StackOverflow? You know, that takes a long time to get there. And I don't know of a linear way to do it other than seeing real people do it.
Nina Zakharenko 43:11
Yeah, I'm not sure.
Will Vincent 43:13
On your next Twitch, people can ask you stuff you don't know and see like how you would figure it out?
Nina Zakharenko 43:18
Oh, boy, that sounds like a pranking show.
Will Vincent 43:21
No, but I mean, I mean, I'm serious about this. Because I think I mean, to your point about not making mistakes, I mean, I'm earlier in my coding career than either of you. And I've only just gotten to the point where I'm, like, more and more Okay, with like, there's just, I'm just never gonna know a lot of stuff. And even if I knew something, I probably forgot it. But I'm not gonna apologize for that, because I can figure it out. Yeah, like, I think that takes a long time. It takes a while to get there.
Nina Zakharenko 43:46
Yeah, I think so too. Um, yeah, the q&a format helps. One of my favorite bits is when you know, sometimes I make a typo or I do something wrong and somebody in chat is like, Hey, did you check this or you forgot to do that? So it's kind of a different style of pair programming. I like to think that folks are like hanging out with me in my living room. Right?
Will Vincent 44:06
Yeah, yeah. Well, so let's talk about your learning Python course, came out last year, links to it. So you have this is on front end masters, but then also you have a lot of the curriculum online, available. I was just asking, before we started recording, you're using graph learn with a Hugo site for hosting? Is that so? So? So why the course and what you know, how did you how did you determine how to structure it? Because I'm always curious on on that, like, I like that you didn't just dryly, go like, here's datatypes. Here's the Python flavor. Here's, you know, operators, right, because it's tempting when you're teaching to a fellow programmer who's on their third, fourth sixth language, like we know these are the constructs of computer science. And here's the Python flavor of it. You didn't do that as much. I think you made it much more. Maybe I'm actually new to programming. Yeah. Which I like I'm so I really appreciate that. I'm curious how you got to that point.
Nina Zakharenko 45:05
Yeah, I didn't know that you had gone through the course. Of course I kind of told me right right before we started the show. And so and yeah, Carlton hasn't
Will Vincent 45:13
read my book, so I don't assume you
Carlton Gibson 45:16
have a book. Do you? Yeah.
Will Vincent 45:19
All three. Oh, just to have. Okay.
Nina Zakharenko 45:23
That's, that's sweet. So, yeah.
Will Vincent 45:28
I recommend my course your wife has
listened to the podcast though. So Hi, sweetie. Oh, sorry. So how did you come up with the
Nina Zakharenko 45:43
Yeah, so um, I have been an author on front end masters I believe since 2014 or 2015. I did a course with Brian hole on an introduction to web development, which I think is now pretty out of date, so it's no longer on the platform. I have a course. I taught on get so it's a six hour four to six hour workshop on get and people come out of it just like oh my god, I never understood it before. And now I know exactly what I'm doing. Like I'll folks who see me at conferences and they'll run up to me and be like, oh my god you taught me get which is so like it's so it's so touching and so satisfying.
Will Vincent 46:25
And that's all that to your two years ago, I think right?
Nina Zakharenko 46:28
I think the good courses two or three years ago.
Will Vincent 46:31
Yeah, I mean, cuz cuz get is one of those things like I use the same kind of five commands. But I mean, just yesterday I, you know, committed an API key with a demo I was making, which was a no bueno. And then I was like, you know, how do I totally nuke this and rebase and all these things. I'm just like, oh my god. Yes, I certainly haven't. I should. I should go through the course again, because I'm definitely like, we do that thing. Like it's not a revert. And it's not a good committer pusher. I'm gonna look it up. And whenever it's the base I get scared or typing, you know, dash dash force or hard, then yeah, it's like sudo. And I'm like, Oh, God,
Nina Zakharenko 47:09
Scary don't force push to a shared branch. So if you're working on a project with other
Will Vincent 47:16
Nina Zakharenko 47:17
And, you know, I, a lot of people don't don't know this or don't follow this, but just before you start fiddling with your branch, just make a new branch. You can just see from your current branch, you could just say get branch, whatever. And it'll just make a backup branch. And then you have to worry so much.
Will Vincent 47:40
And I'll admit I'm, I've gotten lazy in my own projects, it just working out with Master and it's bitten me, like twice in the last two weeks that I, you know, because in a team setting, of course, I would create a branch and it's just me, I'm just like cowboy coding. And then it's like, Oh,
Nina Zakharenko 47:55
God. Yeah, I still do branches and pull requests for my projects because then I can go back and review the PR and I kind of have a history there. We are for the Python course. So these courses are available by subscription on front end masters. I think the current charge is something like $40 a month, but you don't have access to just my courses. There's a really full vibrant library of courses available for for one fee. It took me months to put my course together of just that. Yeah, yeah, this is something that I kind of do outside of work on my personal time, and it definitely ruined by Sir social life for months. Because there's kind of an approach that I take to teaching this approach of taking complicated topics and distilling it down to the basics. So you know, I've done that with conference talks on topics like memory management, and Python, and debugging. I've done it for my gift workshop. But Python was kind of a different beast to tackle because every time I thought I had the curriculum, right, it's like a way, I haven't introduced this foundational topic that will let the person make that aha connection at the next step. And so now I have to rearrange everything. And so the rearranging happened three, four times, like it took me a really long time to get the curriculum, exactly how I wanted it so that each concept that was introduced was the building blocks for the next one. And there was no section where you're like, well, this is a mystery. I don't understand how this works because I was able to kind of build it up step by step. And I was really proud of how the course came out. I put a lot of time and effort into it. I was supposed to be recording a new course in in June in Minneapolis, but I don't think that will be happening that was gonna be kind of a one day you already know some programming. Give me a one I have condensed Python to help me be productive after watching this course. So, I don't know, maybe front end masters will be going remote. Maybe I'll have an update to share in a few weeks. But I, you know, I love that people have a venue to compensate me for my work if they find the class valuable when they watch the course on front end masters it is something that I get paid for. But I know that not everybody is able to afford that. And there's still a lot of folks out there who want to learn Python and there aren't a lot of good free resources out there. So I released all of my course materials and all the exercises under learn Python dot Dev. It is licensed in such a way where I really don't want other folks teaching my material, you know, because that's not why I put it out there and put it online. Mine, I really put it out there for individual learners who want to learn Python don't have resources, and can't necessarily afford to watch the full recording. And then I also released my course. And the videos for free for two weeks at pi con last year.
Will Vincent 51:18
Yeah, I remember that. That's, that's when I first actually took took a look through it. But then I just refreshed before this. Yeah, yeah. I mean, I mean, because specifically like with Django, it's a part of reason I think about Python is because people ask me about Python, in the context of Django, and the big thing that they they have confusion about is object oriented around classes and make sense and inheritance. That's, that's the part where, you know, if you don't get that then Django is really not going to make sense to. And so I I've read with particular interest, how you handle that. So because you put that in the intermediate section. And yeah, I like I mean, I like also how you have practice things for all them because I do think that that's really helpful. And as a teacher, it's, it's sort of like, how do you, you know, in a traditional classroom, you just assign it and people have to do it on their own people almost never do these things. But if they are self motivated, it is nice to have like a, you know, stretch yourself. And then you know, the answer is out there. But, you know, really reinforced the learning by by trying to apply it in different contexts. I think that's, I really like doing that without doing some sort of like, made up online validation quiz that you can just cheat on.
Nina Zakharenko 52:37
Right? Yeah, and I think folks learn best with muscle memory. So throughout the whole video course, I encourage people to type along with me because that's how they'll get it to stick. That's how the concepts will really they'll be able to internalize them a lot better if they type along with me and then all of the exercises I walk through completing them with the students So I think the video course came out really great. And
Will Vincent 53:03
yeah, you missed a lot if you just do that. Look at the, the text for sure. I mean, I do think that that typing along I mean, back in the day, said Shaw's learn Python the hard way. One of the real positives of it was it emphasized type all this stuff out and make it work. So I think beginners sometimes, you know, copy paste and all the rest and that muscle memory is really important. I mean, that's in a way I mentioned to people, they want to learn how to program like, you better be a good typist. Yes, I mean, you know, and quite a few people aren't. Because, man, if you're not a good typist here, it's something people don't think about.
Nina Zakharenko 53:41
Yeah, that's actually a skill that you can learn. I realized that I learned to type the wrong way. And so I was going through some typing tutorials. You know, I type really fast but the way that I type is not necessarily the correct way and the typing tutorials really helped me minimize you know, straining my fingers and like figuring out which keys to press with which finger and how to optimize all of that. So
Will Vincent 54:07
it's painful when you see an educated person of a certain age using just their index fingers to type.
Nina Zakharenko 54:13
Yeah, it always makes me think of a.
Will Vincent 54:16
I have a baby for them. Yeah. Hot, hot, hot,
Nina Zakharenko 54:19
hot and catch fire. Yeah, yeah.
It was like the index finger. typer. Yeah, I mean, there's tons of free resources to learn to type online. So even if you're not good at it, it's a skill that you can learn. And it's just same old muscle memory.
Will Vincent 54:33
Yeah. One last question on the structure of it. So you you go basic datatypes and then you go functions and then after that lists and tuples and sets. So that's in the canon of Python teaching. That's the one where it varies quite a bit on like, when do you introduce functions? So I'm curious what, why introduce functions before you get into data structures, and logic. And if you If you're a call,
Nina Zakharenko 55:02
oh, I'm gonna, I'm gonna have to think about that one. It's been a little bit over a year since I've put the course together. I honestly don't remember. But I, if I were to guess it would be around the concept of arguments. So I think functions accept arguments. And then a lot of the data structures accept arguments as well. And I think it's easier to think about it in the concept of like, a very simple function, accepting arguments. And then moving on to the more complex,
Will Vincent 55:33
right, a list doesn't really make sense if you don't understand arguments. Right. And I like to you also have the you take the time to talk about function scope, because, again, for someone who doesn't have a computer science background, scope is is a gotcha. Yeah, I'm sure you have you seen the Python tutor site that Phillip go does. He's actually he's UC San Diego. That will visualize how the interpreter running your Python code.
Nina Zakharenko 56:02
I've seen it a bit, but I have not used it on any of my own code.
Will Vincent 56:06
Yeah, well, it's really helpful for I mean, when you were talking about the debugger, I was thinking, because you can just literally step through and see how scope is executed from the computer's point of view. But he was just calling out I liked he had this specific section on scope, because I think that's often not included. Yeah. And that obviously will get you.
Nina Zakharenko 56:27
Yeah. And I try to think back to all of the things that I found confusing when I was learning Python. And, you know, think back to the aha moment when I finally figured it out. So I put a nice illustration in there about how break and continue work with colored arrows and everything. And I was quite pleased with that.
Will Vincent 56:49
Yeah, well, it's great. We're linking to it. People should watch the videos. I mean, I find not just as a teacher, but just sometimes I feel like I do Django more than I do Python. So even if it's more of the beginners stuff. Either I forget it or I just get a little bit different lens on it. And I really enjoy working through educational stuff. I always get something out of it. Personally. Yeah,
Nina Zakharenko 57:11
yeah, I'm really glad to hear that.
Will Vincent 57:13
What's the Tai Chi equivalent Carlton? What are the pose the movements? Right so it's not caught up but
Carlton Gibson 57:18
you will it well, a cutter is a jet cutter I guess is Japanese was like a karate thing. Yeah. Yeah, it's the form, isn't it? So?
Yeah, the the point, like scales. Yeah, you see the Yeah,
exactly. It's these basic movements, which, you know, you might think I, you know, five minutes I've got this but there's this 50 years worth of depth in it. And it's about keeping your tool sharp. It's about always having we've talked about in the podcast before the beginner's mind. It's about being open to you know, the fact that you're everyone's on their edge and you're on your edge and you're trying to make yourself better and sharper. And, you know, reviewing educational materials, it's always like Yeah, okay. You know? Yeah, yeah, there's a new aspect I hadn't thought of. There's always an every person puts it slightly differently. And there's always a brilliant, thanks. Yes. And it's what did it Oh, it was just list append, but I hadn't thought of it that way.
Will Vincent 58:15
Right. Yeah. I mean, our our mutual friend, Trey hunter has Python morsels where it's like weekly Python exercises. I mean, I often I play music, my kids play music. And so I have to supervise their lessons. And I often think I wish that there is professional musicians will spend a third half their times throughout their whole life scale. And, you know, I wish that I did more of that as a program. I feel like I just, you know, airdrop into some project and just start, you know, putting out fires. And I kind of wish I had like a ramp up of just, you know, hitting my scales in the same way I do on my guitar and the piano.
Carlton Gibson 58:51
So, this is not part of the obsession that we all have with tooling, right, and it's
Will Vincent 58:58
not tooling. I feel like To me tooling is, is can be a waste of time, it can be a black hole. Whereas this is just like reps. Yeah, it's just you know, and but not in like a, you know, leet code like interview. I mean, those can be a little bit helpful but i i wish i you know, spend half an hour an hour every day just keeping my Python sharp To be honest, I feel like it gets gets lazy
Nina Zakharenko 59:23
and it's foundational skills. This is something I picked up from Raymond hadden, Jr. But he always stressed the importance of being able to move between different data types in Python, you know, how do you quickly pull out what's in a dictionary into a list or tuple and kind of fluidly move between all these different types because all the types have different pros and cons and ways that you can work with them. And like, that is probably kind of one of my my biggest takeaway is being able to move a list into a set and figure out you know, well, you know, what are all the individual elements and not even kind of think twice about about it or have to think about Oh, like, which data structures Should I reach for? That's been really useful in my day to day programming.
Will Vincent 1:00:07
I guess if you're a typical, you know, Bay Area startup engineer, you bounce jobs every 18 months, so you have to refresh those skills. So that's like built in practice.
Carlton Gibson 1:00:18
That's like, What 1%?
Will Vincent 1:00:21
Yeah, well is. So we're pretty much up on time. Is there anything else we haven't covered that you'd like to mention your work at Microsoft or personal projects?
Nina Zakharenko 1:00:31
Um, yeah, that there are a few things that I want to mention. We already covered those kind of in the middle of the podcast, but I really hope that folks can keep an eye out for the the workshops and the labs and the tutorials that we're putting out for Python over the next few weeks. A lot of folks on our team have put an immense amount of effort into those and I've been really happy with how They've come out. So unfortunately, we weren't able to bring our booth to pi con. But we tried to digitize as much of that experience as we could, so that we could still share it with, you know, attendees and Python enthusiasts. And the last thing I wanted to mention is I'm going to be kicking off some new live streams on twitch. So one is going to be every two weeks and I'm going to have a QA with the Python extension for vs. Code, folks. We're probably going to be covering different areas, maybe the debugger, maybe AI ml. So folks would like to keep an eye out for an announcement about that they can follow me on Twitch an nj i o. n or Twitter, an NDA. And in between those Q and A's, I think I'm going to do a series on Twitch called I'm still working out the name But I think it's going to be called Python tea time, where I'm going to have a new guest every two weeks. And we're just going to kind of talk about what they're working on how they're doing. Maybe any projects or news that they want to share, because I feel like we all really miss the hallway track, you know, and just running into people and catching up with them. So this will be a virtual way of doing it. And since I'll be streaming it on Twitch, there'll be a chat and a q&a, so people can come and hang out and interact.
Will Vincent 1:02:31
Great. We will link to all those things. Awesome. So Nina, thank you so much for taking the time to Yeah, hold on. Yeah. Yeah. Thanks. So we talked
Nina Zakharenko 1:02:39
about this in person at Django con in San Diego last year. And so I'm really glad to kind of close the loop and go full circle and that we were able to connect. Yeah,
Will Vincent 1:02:48
well, we did because we were getting drinks and I was like, Carlton, where were you? And we were all sitting together. He's like, Well, I was with Nina and I was like, you know so that was that was the first time I think I you and I ever spoke Yeah. So Yes, finally it happens. Anyway, to your point in the hallway track again, this podcast came about because of my 2018 Django con experience where it's my first time going to a real tech conference to be honest. And I love the hallway track and I thought, how do we keep that going?
Nina Zakharenko 1:03:15
Yeah. That's awesome. Well, thanks so much for having me. It was a pleasure.
Carlton Gibson 1:03:21
Thanks for coming on. Super. Okay, I guess that's it. Join us next time, folks. Bye.
Transcribed by https://otter.ai