Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

Transcript #80: Dan Bader drops by and we found 30 new Python projects

Return to episode page view on github
Recorded on Friday, May 25, 2018.

00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 80 recorded May 25th, 2018. I'm Michael Kennedy.

00:11 And I'm Brian Okken.

00:12 And Brian, we have a special guest, don't we?

00:13 Yes.

00:14 Hey, hello, Dan Bader.

00:16 Hey guys, it's me, Dan. Good to be back on the show. And it's always so nice to hear you do this intro live, Mike. It's...

00:23 Thank you.

00:24 It's not, it's unreal. It's like, and you sound so smooth. I love it.

00:27 I guess I've done it 80 times now. Maybe 82 or 83 for the few times I screwed up with the wrong date. Well, thank you. And it's great to have you. For those of you who don't know Dan, Dan's well known from real Python and and a bunch of Python goodness.

00:44 Before we get to the show, I want to say thank you to DigitalOcean. So they're sponsoring this episode and a number of them are coming up, as well as the actual infrastructure delivering all this technology to you. So Python bytes, Fm slash delusion, get $100 credit for new users. Pretty awesome. Brian, I feel like there's a few themes that we touch on frequently in this podcast.

01:06 Yeah, I guess that we do. And one of them is packaging. So we've talked about packaging a few times. And the Python packaging authority has a has their like tutorial on how to package Python packages. And it used to be out of date, but now they've recently revamped it and rewritten it. And it's very user friendly now. It's a short little walkthrough of how to set up a package and push it to both the test server and then to the full Python package index, PYPI. Yeah, I got that out. One of the things that's kind of fun to note is that I noted is the readme example is in Markdown. And that's cool.

01:49 That's a new feature, right?

01:50 That's one of the things of them switching to warehouse and the big release of the new

01:55 I think I remember the old examples for

02:00 They were either too small, they didn't include everything they needed, or they were too big and kind of scary.

02:06 And now this is a medium-sized example that is actually pretty nice.

02:11 I read through it and it looked like the same tool set that I used to push up, so I think it's pretty accurate now.

02:17 So that's nice.

02:18 Nice.

02:19 super out of date. You're like, why am I not using this or using that?

02:22 Yeah, because when I learned how to do it the first time, I think I read both the old tutorial and then like four or five or six different blog articles on how to do it now, how to do it now, because it changed. But now this is all up to date. So it's good.

02:36 Very nice. Dan, do you do much packaging?

02:38 Yes, I run a couple of open source projects. And I always felt like, you know, exactly like what you were just saying, Brian, where I had to combine a couple of tutorials just to get it to work and it never really felt all that straightforward.

02:50 And so I think this is a pretty nice and pretty minimal write up.

02:54 I like that.

02:55 And I'm surprised that we're, you know, that the recommendation now seems to be to use a Markdown based readme files.

03:00 Like I really like Markdown every year warmed up to a restructured text so much.

03:04 And, it's definitely cool that they're supporting that now.

03:07 That's awesome.

03:07 I think restructured text, maybe predated Markdown.

03:10 And it was, you know, it was the thing when the original pipe I was created.

03:15 And then just like that thing was, you know, calcified.

03:18 And I go, let's not touch this.

03:20 Let's just not mess with this.

03:21 Let's just keep it running, right?

03:24 It's really good to see that getting a fresh update.

03:26 Also, Brian, you talk about Twine in here.

03:28 What's the story of Twine?

03:29 - I don't know if there's a story with it.

03:31 That's just the tool you use to push things up to PyPI.

03:36 - Oh, nice.

03:37 I probably used it and didn't realize it or forgot that I used it.

03:39 - Maybe there's another way, but that's what I've always used.

03:42 - Yeah, cool.

03:42 - Actually, there's a cool project to throw in the mix here.

03:45 It's called flit, F-L-I-T.

03:48 And it's, well, what's a good way to describe it?

03:51 It's sort of a minimal, simple way to put Python packages on PyPI.

03:56 So they kind of completely done away with the

03:59 Instead you write an init file, where you just put in your author name and your homepage or whatever.

04:05 And it generates all of that other stuff.

04:07 And it might not be really necessary anymore now, if you have like a really sort of short and sweet tutorial, like the one that we were just talking about.

04:14 But it is super, super beginner-friendly, this flit thing.

04:19 FRANCESC CAMPOY: That's cool.

04:20 MARK MANDEL: Nice.

04:21 It's F-L-I-T?

04:21 DANIEL LEWIS: It's F-L-I-T, yeah.

04:22 MARK MANDEL: Awesome.

04:23 And so that's probably on GitHub, isn't it, Dan?

04:26 DANIEL LEWIS: Yes, it is.

04:27 Nice transition.

04:28 MARK MANDEL: So the next thing you have for us is an async library for calling GitHub's API.

04:33 DANIEL LEWIS: Yeah, yeah.

04:34 So I was going to talk about this thing called Gidget Hub, which is a Python wrapper around the GitHub API.

04:41 So it basically allows you to talk to GitHub, and you can interact with all the different content types that GitHub provides or exposes.

04:49 So you can add and modify issues.

04:51 You can create pull requests.

04:53 You can add comments to pull requests.

04:55 You can download all the comments to pull requests and all that stuff.

04:58 So the other thing it does, it allows you to parse GitHub's webhooks.

05:04 So you can configure GitHub so that every time a new pull request or something like that is created, it sends, essentially calls an API callback on the web, like on some URL that you give it.

05:15 And so what you can use GitHub for is a really nice and clean way to write GitHub bots with Python, essentially.

05:23 And it's just a really cool library, and I think its API is super well designed.

05:28 So we were recently using it on a workshop that we did in Vancouver, like Marietta, who's a CPython core developer did it, and I served TA and was running around helping her.

05:38 And so she wrote a really cool tutorial about how to use Git GitHub.

05:42 I think it's just a really nice example from modern Python web API library.

05:48 - It looks really great.

05:49 And so you just go over here and you say like, I'd like to open a PR.

05:52 So you get some PR data, then you say, await, and all your methods are async.

06:00 Yeah, definitely nice and scalable.

06:03 It looks like it's based on AIO HTTP, which is a really nice client-side, async-enabled REST library.

06:12 What's really, really cool about this Gidget Hub thing is that it's actually abstracting away from the actual back end, I want to say, what the actual library you use to talk to--

06:23 or to handle those web requests, whether incoming or outbound.

06:27 So I just learned that this is referred to as a Sans IO library.

06:31 So basically, it's just a protocol implementation that doesn't really specify how the I/O is performed.

06:38 So it allows you to plug in different backends, different concrete implementations that make this thing super reusable.

06:47 Because, well, if there's a new async library, flavor of the day kind of thing in a couple of months, then, well, you can probably just plug that in and work with that.

06:54 So it's kind of nice.

06:55 It's really well at the site level.

06:56 - Yeah, so you can use AIOHCDP, you can use Tornado.

07:00 Yeah, I was, recently we covered it on the show, this thing called unsync instead of async, U-N-Sync.

07:07 And it's a different implementation with a different thing, a different event loop thing.

07:13 Maybe you could use that here as well.

07:14 That's pretty awesome.

07:17 I like it.

07:17 Nice pick.

07:18 - Nice, yeah.

07:19 It's nice to use.

07:20 Super friendly.

07:21 - Yeah, Brian, do you guys do any GitHub automation?

07:23 You just started with Git at your organization, right?

07:25 - We're doing, we've got a private server so we don't go through GitHub for work stuff.

07:30 But I use GitHub all the time.

07:32 - Yeah, of course.

07:33 - Yeah, nice.

07:34 Yeah, I feel like this kind of automation is more relevant and useful when either you're building an app or you have like a big organization and you wanna automate your company's interaction with GitHub, right?

07:47 Like me as an individual, I just don't really see a massive use of this for me because I just don't do that much different other than what I personally do with GitHub.

07:56 But I think it looks really cool and I love the way it works.

07:59 - Some uses where you could often use like Travis or something like that.

08:02 Like if you were watching different, if your project depended on a bunch of dependencies and you wanted to, if they changed, pull them in and run your build, repackage everything and run some tests against it.

08:14 You could do that locally with something like this.

08:16 - Yeah, that's pretty cool.

08:17 Or you have that one person on your team that often breaks the build, so you run extra tests when you see them do a check-in.

08:22 (laughing)

08:25 - A harassment bot that just goes in and, be careful. - Exactly.

08:30 I think they use it on the CPython.

08:33 They've removed all the source for that to GitHub.

08:35 And I think now they run a couple of bots that, I think one of the things they do is, so when you contribute to CPython, they need you to sign an agreement that you're giving up the rights, essentially, for your contributions.

08:47 And so I think Marietta actually runs that bot.

08:49 I might be mistaken here, but it's a bot that checks if that committer or that contributor already has given their permission.

08:55 And if they didn't yet, then it's just gonna ask them to do it and it sets a flag on the PR.

08:59 So it's super cool that way when you can sort of code up a workflow like that, that you never have to worry about again in your life because it's 100% automated.

09:08 So I think it's great for that sort of use case.

09:11 - That is a great use case.

09:12 Yeah, that's really, really awesome.

09:13 Okay, so the next one that I wanted to talk about actually was recommended to me, recommended to me and Brian because of some stuff that I had recently been doing.

09:24 I think, you know, we were all at PyCon.

09:25 I think maybe we were all at the same meeting or get together and I had just decided like that's it.

09:31 I'm writing a Python systemd daemon that will synchronize all of my course data, geo, basically across the various servers in the different locations.

09:43 So there's like eight or nine places in the world that serve up course content based on where you are.

09:49 And so I wrote a service in Python that is a systemd service that will basically keep all those places in sync.

09:57 nothing too impressive, but it's kind of cool you can do that in Python.

09:59 So we got pointed at this thing called PySystemD, and this was actually presented at PyCon 2018.

10:06 So there's a whole talk, you can go learn about what is systemd, why you care about it, how is it used, but the short version is, this PySystemD is an API into the systemd whole API part of Linux.

10:19 So you can create things that are daemons, you can say like, I would like to have my Python web app start, and I want it to start in this way, but I want it to not start before my MongoDB server starts.

10:33 I don't want MongoDB to start in that way.

10:35 You can configure these things to all just happen on boot or on demand, things like that.

10:39 So I think this is really pretty awesome.

10:42 So if anyone's doing any sort of automation with systemd, and they're already using Python, here's a really great way to just like, you know, import this library and just ask, hey, let's load up this unit, which is like one of these services, and ask, is it running?

10:56 Let's start it, let's create a new one, all sorts of stuff, really, really nice.

11:00 - That's cool.

11:01 Yeah, also kind of cool how this was built.

11:03 So this is like based on Cython.

11:05 So it's a wrapper on the C library that actually talks to systemd, right?

11:09 - Yeah, I think so.

11:10 And actually I'm gonna cover in the next episode this sort of article on using Cython as a way for a simple way to wrap C APIs.

11:21 - That's what surprised me.

11:23 - Yeah, I think that's why, 'cause it doesn't seem like a performance thing, right?

11:26 I think it's like, let's use Cython to get a really simple API into the C layer, as well as build the integration back into Python.

11:34 So pretty cool.

11:34 - Yeah, nice, I'd love to see that, because I'm surprised they're using Cython for that and not just C types or CFFI or something like that.

11:41 But I'm sure there's a reason for that.

11:43 - The other thing I wanted to point out about this is this was created and presented by Alvaro Lleva, sorry if I mispronounced your last name there, but he's a production engineer at Instagram.

11:54 and a Facebook.

11:55 And so, you know, they have a few servers to manage and this is probably pretty polished and comes from a pretty well-informed space if it's being used there, right?

12:05 Pretty sweet.

12:06 All right, so before we get to the next one, let me tell you guys about DigitalOcean.

12:11 So DigitalOcean is definitely one of the best hosting frameworks or places out there.

12:19 You can go up, create a server, super easy, create a load balancer, you can create floating APIs that allow you to switch between various machines with perceived zero downtime, all sorts of stuff.

12:32 All of our code and our sites, our delivery, all that stuff is running on top of it. It has been for a long time and it's been working great. So like I said, if you're thinking about running servers and you want to do it affordably, high performance, with lots of control, then go to Ocean. If you're a new user, you'll get $100 credit and check out what they have.

12:56 Takes about 60 seconds to set up a new server and you'll be SSH'd in and doing all sorts of good stuff. Maybe you could even use Pi System D to automate some cool stuff on it afterwards.

13:05 So check them out. It helps support the show and it's definitely a good product worth checking out.

13:10 Speaking of products, Brian, you're excited about one, an update one, right?

13:14 Yeah, I am. I usually for a while I was running the the latest or the last 2017 release of uh PyCharm But I don't know how recent this was but not too long ago. We had a e the early access program build one of 2018.2 Is out for PyCharm and the really exciting bit then we got notified by this from the Bruno Oliveira Who goes by nick dermis on twitter but it supports a whole bunch of new pictures features and i'm kind of a test kind of not so the things that i'm really excited about you could say you wrote the book on it yeah well you could.

13:59 Because i did anyway the couple of features that i was really waiting for is Pytorch being an IDE has a lot of, what do you call that, IntelliSense or something?

14:10 Yeah, autocomplete IntelliSense.

14:12 Autocomplete. That didn't work for fixtures to a test. So if your test was using fixtures and you was returning an object or a function or something and you were trying to call that, you didn't have all of those cool autocomplete features. Those are now in for fixtures or tests.

14:30 And that's really cool. But the thing that I'm really excited about is parameterization now works seamlessly within PyCharm. So if you've got a test that is parameterized so that you've got like several, or in my case, sometimes dozens of different parameter sets that are run through the same test, you can always run that through, run all of those parameterizations in PyCharm. And that was wonderful.

14:56 if you wanted to rerun one or rerun the failing ones it would just rerun all of them i see a tree like a whole method in the decorate a bit that had here's all the variations that was just like a thing that i would just rerun right yeah so now you can run a test and then the left sidebar.

15:12 You can right click on one of them and rerun just one of the parameterizations or you can like for instance if i'd like only one two or three or some of them failed when you rerun failures, it only runs the parameterizations that failed.

15:27 And this is a huge time-saver for me, so I'm really excited about it.

15:31 Yeah, that's nice. I use that feature a lot where I just say rerun the failed tests.

15:34 For people that are like really, and may not be too much of an issue for people that are running running really quick tests, but a lot of my tests talk to hardware, so they're not really that fast.

15:44 So this will save me like an hour a day, I'm sure.

15:48 That's awesome. Very, very cool.

15:50 Dan, do you use PyTest?

15:51 Yeah, I do.

15:52 Yeah, I actually just used it.

15:54 We wrote the backend for

15:57 So we've got PyTest powered test integration tests for that.

16:01 And yeah, it's just been a joy to use, especially the parameterization stuff.

16:04 It's just so nice when you can reuse a lot of test code.

16:06 You don't have to copy paste it around so much.

16:08 So Dan, one thing I was going to cover, but you put it in here before I could get to it.

16:13 So you're faster.

16:15 Is basically, why is installing Python 3.6 so hard?

16:19 so sort of confusing, right?

16:21 Like you talked about this workshop that you recently did and I've thrown this out on Twitter and people sometimes tell me, oh, it's not hard, it's super easy, you do this.

16:29 But then if you actually go teach a workshop to beginners, you're like, why are those four people over there not ready yet?

16:35 Like it's been 10 minutes, what could they have possibly been doing?

16:39 And it's because it's like there's all these edge cases, right?

16:41 - It's one of these things where in theory, it's easy and it's not a problem that you really run into when you have a little bit more experience under your belt.

16:49 But for people getting into Python, it is definitely a barrier.

16:53 And we were teaching this workshop, so Mariata was teaching it, and I was just running around, kind of, you know, supporting people.

16:59 And for some people, we spent almost like two hours to get them to a working Python 3.6 install.

17:06 And, you know, there were some really, like, you hit all of these interesting, but obviously kind of frustrating edge cases.

17:12 Like, some people were running, they were running a Windows host, and then they were also running the Linux subsystem for Windows.

17:18 So now you can essentially boot up a VM that is integrated into Windows and it boots Ubuntu or Debian or some other Linux distribution, I think.

17:27 I think it defaults to Ubuntu, I'm not sure.

17:29 I think it's Ubuntu as well. Yeah, that's nice.

17:30 So basically you have this really tightly integrated Linux environment that you can just work from your Windows host environment.

17:37 The problem is that people maybe accidentally installed Python in the Linux environment and then try and access it from the Windows environment because it's a little bit unclear if you're a beginner like what actually the difference is, between these two different terminal windows.

17:52 - Right, and you also might open PowerShell, which is like a third still.

17:55 - Exactly, things like that, and then you have your path set in different ways, and other issues were that, so the previous long-term release of Ubuntu, I think it was 16.04, so it doesn't ship with Python 3.6.

18:08 And so for this tutorial, we specifically needed 3.6.

18:11 And so people started Googling and just copying a bunch of stuff from Stack Overflow to install Python 3.6 on Ubuntu?

18:18 Well, it turns out there's like two different PPAs, so like third party packages that you can install this from.

18:24 And one of them is broken or was broken during that time.

18:28 So, you know, people would have Python 3, but it had broken SSL and no PIP.

18:33 So it was essentially useless for the purposes of this tutorial.

18:38 And it's kind of crazy just into, you know, the all of the edge cases you can encounter with this.

18:42 And I think it's really something we need to keep in mind, you know, when we're teaching beginners or kind of telling people how awesome Python is, it can be a pretty jarring experience.

18:50 If you try to set it up and you're just sitting there, well, OK, I just wanted to try this.

18:54 It doesn't work.

18:55 MARK MANDEL: For sure.

18:55 Well, so you guys are writing this up at as sort of an ongoing guide, right?

19:01 FRANCESC CAMPOY: Yeah, so we decided to do something about it.

19:04 So shout out to John Sturtz and Jim Anderson.

19:07 And we got together and put together this sort of the ultimate Python 3 install guide.

19:14 And we're going to keep it maintained.

19:16 And it tells you how to install Python in very specific steps in all kinds of different configurations, so Linux, Mac OS, different Linux distributions, how to compile it from source.

19:26 And we're just going to add to it and improve it based on feedback.

19:29 And hopefully, that's something we can just use in the next workshop and then tell people what to do.

19:33 I hope that when you refer to Python 2 in there to say, oh, don't do Python 2, do Python 3, that you call it Legacy Python.

19:39 So just throw that in there.

19:41 I'm still trying to make that a thing.

19:43 I don't think we even mention it in that particular piece.

19:46 This is Python 3 only.

19:47 - And then my Mac is about ready for a format because it's time.

19:52 It's been bad.

19:54 So anyway, it's about time for a format.

19:56 What would you, like after going through this whole experience, we could do Homebrew, you could do Anaconda, you could download the PKG file from, et cetera, et cetera.

20:06 What would you do if you were setting up a new computer?

20:08 - Like on Mac?

20:09 - Yeah, on Mac.

20:10 - Yeah, so I'm a big Homebrew fan because it makes upgrading very easy.

20:17 And it's just something that I personally use for other purposes as well.

20:22 So one of the things I usually do, when I set up a new macOS development environment, I upgrade Bash.

20:28 So I use Bash as my preferred shell and macOS ships with a super old version of Bash.

20:34 And with Homebrew, it's super easy just to get the latest version of Bash.

20:38 And then a bunch of other command line tools that I use.

20:40 And so I just use that to install Python as well.

20:43 So I kind of like that.

20:44 I mean, Python org version, it works as well.

20:47 But if you're gonna use Homebrew anyway, which I think you wanna use if you're on a Mac, then I would just keep everything in Homebrew.

20:54 - Yeah, that's what I'm thinking as well.

20:55 It makes a lot of sense.

20:57 Awesome.

20:58 - Both on Mac and on Windows, I just always just use the installer.

21:02 - Yeah, that's what I've been doing as well.

21:05 But with Homebrew, you just type upgrade, and you can have different versions and stuff.

21:09 I don't know.

21:09 to play with homebrew next time. But anyway, very cool.

21:12 It is also pyenv. So that that's sort of the other you do if you're going to go with homebrew, you could just go, you know, brew installed Python three, and you get sort of one, the latest version of Python three, or you could install something called pyenv first, and then that serve another layer of abstraction on top that allows you to switch between different versions of Python, including different versions of Python three. So you can just go, you know, I want Python 3.5 for testing and I'm going to run all of my latest stuff on the Python 3.7 beta version or something like that.

21:44 So that's super nice.

21:45 It's maybe a little bit more advanced.

21:47 So I feel like you're probably there, Mike, but for a complete beginner, I'm not sure if I would recommend it.

21:51 Yeah, yeah, yeah.

21:52 Sure.

21:53 Of course.

21:54 I don't think I'm there.

21:55 I've tried it several times and it hasn't worked for me.

21:56 So I don't want to go too much longer on this.

21:57 But what I've started doing on my servers is when I SSH in part of my my shell profile automatically configures the main virtual environment for whatever that purpose of that server is.

22:11 So when I SSH in, I'm actually running just a virtual environments just by default.

22:15 And I was considering doing even that for my Mac and just changing the shell back so it doesn't do something weird.

22:20 I don't know, I may get myself into trouble with that, but it's been working so far.

22:24 All right, so I wanna round this out with just a short little list of 30 amazing Python projects from 2018.

22:31 So there's this thing called MyBridge.

22:32 And MyBridge is a little bit like a readability or a little bit like a flipboard where they kind of keep track of different articles, but it's more technology focused than just say Flipboard or Zite, those types of things.

22:45 And the article starts with the MyBridge AI evaluates the quality by considering popularity, engagement, recency, and so on.

22:55 So apparently they have this AI, which is kind of cool that goes through and like looks at human interaction with all these articles, these tech articles in the Python space and then says, here's the articles that our community sort of interacted with that they really liked, or packages actually in this case.

23:10 So let me just give you a quick rundown on these just to kind of give you all some exposure and like, oh, hey, I hadn't heard of that package.

23:18 That's pretty cool.

23:19 And then you guys can jump in and give me some thoughts.

23:21 So I'll go from the least popular to the most popular.

23:25 So number 30 is PDF tab extract, which is a set of tools for getting tables out of PDF documents, which is pretty cool, and data mining on scan documents, pretty sweet.

23:36 There's number 28 is Surprise, which is a Scikit-learn extension for building and analyzing, building a recommender system.

23:46 So you can like say, you might also like this, which is kind of cool.

23:49 Number 27, we won't do all of them.

23:51 That's why I'm skipping number 29.

23:54 Number 27 is EEL, which is basically a simple equivalent of the Python's version of an electron JS system. What do you guys think about that? Interesting. How have we not covered that already? I think we might have mentioned it because we have been on a I think I think we've covered it but there's two variations and the the sort of story that seems to go along with this is like it's a simple library it's not really like fully there's my understanding you can build simple apps but not like full-on massive apps but if you could build full-on massive apps I'd be all over this that's awesome.

24:26 Number 25 clairvoyant, a Python program that identifies and monitors historical cues for short, short term stock movement and stuff. So I don't do really any stock trading. I mean, I put my I put money into mutual funds. So I don't really care that much about it. But the reason I bring this up is Python actually is pretty involved in the whole stock trading automation or real time stuff. There's actually a really good documentary called the Wall Street Code that goes into all these programmers that are building like AIs and stuff in Python.

24:58 It's pretty cool. So it's free on YouTube.

25:00 Nice.

25:00 Yeah. Brian, are you a fan of Mr. Robot or Dan? Either of you guys?

25:04 Yeah, I was just going to say.

25:05 No?

25:06 No.

25:06 Oh, man. Dan?

25:07 I like it. Yeah. It's a good show.

25:09 I think it went a little weird in episode two, or sorry, season two. But like the first year, I was just like blown away. So there's this thing called F Society, which is a hacking tools pack for penetration testing in Python, which of course, Python is very big in the cybersecurity space.

25:24 You might, if you want to like check your own stuff, run some of these tools against your things before someone else does.

25:31 We talked about Kenneth Wright's last time and number 18 was Maya, date time for humans, better exceptions.

25:37 I think we covered that as well. 16, API star, a really cool expressive Python 3.5 based API from Tom Christie, same guy that does Django rest framework, but this is like the re-envisioned Python 3 version, which is cool.

25:52 cool. MicroPython, very awesome for little projects of spacey industrial strength. Natural Language Processor is number six. Number two was PyTorch for machine learning that seems to be sort of becoming one of the main machine learning libraries. And number one, Home Assistant for open source home automation. Very cool. I keep dreaming of like creating some IoT thing with MicroPython and then plugging it into Home Assistant. But I just have to figure out what that thing is.

26:21 It's a solution looking for a problem, right?

26:23 Yeah, good, good solution.

26:25 I think.

26:26 Yeah, I think so.

26:27 It's a good solution.

26:28 If I could just find a problem to like, apply it to those that I read off there, those surprising any of those like super interesting to you guys.

26:35 I'm a huge fan of micro Python.

26:37 So I just learned a little bit more about it.

26:40 And so it's basically this like super small and lean re implementation of Python three, I guess that runs on these super low power, low computational power microcontrollers.

26:51 It's just so cool to be running Python on tiny machines that have very little RAM, and we're talking kilobytes and stuff.

27:00 >> Right, like a $5 chip.

27:02 >> It's just insane that you can program this with Python.

27:03 Yeah, so cool.

27:04 >> Yeah, and you got one of those little in your goodie bag at PyCon, right?

27:08 >> I did a video review of that on YouTube, and I was just all giddy about it, just playing with this thing.

27:14 just plugs into your USB and you can start running Python on this thing.

27:18 That's a really good implementation they did.

27:20 Brian, how about you?

27:21 Yeah, I guess I'd have to second that.

27:23 MicroPython is awesome and a whole bunch of the Adafruit products are able to run it.

27:29 And yeah, it's all fun.

27:32 API Store is something I've been meaning to try still.

27:35 I haven't done any projects with it, but it looks fun.

27:39 Yeah, it definitely looks fun.

27:40 Quite cool.

27:40 All right, there's one final thing I want to cover.

27:43 We had the GDPR stuff come out, basically come into effect at the end of last week.

27:48 So just quick point to an article from our friend Chris Medina at, sort of a take for developers.

27:58 And if you haven't got your stuff all in line yet, please consider doing so for your own good.

28:04 is all up and ready.

28:07 So yeah, Dan, you probably had to do the same for real Python, right?

28:11 - Yeah, some sleepless nights because it's, well, everything's up for interpretation, right, so it's kind of hard to, yeah, just to put it into concrete terms.

28:19 But I mean, it's just been nuts, you know, that now the deadline for that law to go into effect is passed, like we've seen some services shut down.

28:28 I think like Instapaper is a service that I really, I've been using it for a long time, and they just shut down in Europe.

28:34 They say it's temporary, but you know, who knows?

28:36 - Yeah, we'll see, it's temporary until it's not, but yeah, hopefully they get that figured out, but yeah, I saw that, that was quite the discussion on Hacker News.

28:43 The other thing I wanted to bring up, which I don't know, this is pretty cool to me.

28:48 I deal with an insane amount of large files and I use Dropbox mostly for that.

28:53 Like, to give you a sense, like I have the terabyte plan and it's like sometimes gets too full and I have to clean up my Dropbox storage.

29:00 But my hard drive doesn't really wanna sync that much stuff.

29:03 Did you guys know that Dropbox released this thing called Smart Sync?

29:06 - Yes, and I've been wanting to use it, but it installs a kernel module.

29:11 And so I was like, ah, right.

29:15 Cause it's gotta, it's gotta get into the file driver.

29:17 Yeah.

29:18 So if people have this problem, they have Dropbox came out with this thing called smart sync that will basically give you and your Explorer and your open dialogues and windows or Mac.

29:27 A view, which pretends as if the files are there.

29:30 And as soon as you try to interact with them, even from like the command line, they will automatically download if they're not, which is basically lets you sync nothing but what you interact with, which is really amazing.

29:41 It sounds super cool.

29:42 Like I have a lot of trust in Dropbox engineering team and like if it works that smoothly, I think it's an amazing feature.

29:49 I've sort of been hesitant about enabling it.

29:52 All right, when you enable it, you tell us how it goes.

29:56 I'll probably try it out.

29:57 I'll give you guys a report eventually.

29:59 Cool.

30:00 All right.

30:01 Well, I think that's it.

30:02 Unless Brian or Dan, you have extra stuff to share with everyone?

30:03 Yeah.

30:04 Right on.

30:05 Well.

30:06 I think I'm all good.

30:07 >> Yeah, definitely. Brian, thank you so much. And Dan, thanks for dropping in and adding some spice to the mix for our whole podcast here.

30:16 >> Awesome. Thanks, guys.

30:17 >> Yep. Bye, everyone.

30:18 >> Bye.

30:19 >> Bye.

30:20 >> Thank you for listening to Python Bytes. Follow the show on Twitter via @PythonBytes.

30:25 That's Python Bytes as in B-Y-T-E-S. And get the full show notes at If you have a news item you want featured, just visit and send it our way.

30:35 We're always on the lookout for sharing something cool.

30:38 On behalf of myself and Brian Okken, this is Michael Kennedy.

30:41 Thank you for listening and sharing this podcast with your friends and colleagues.

Back to show page