Python Bytes - #80 Dan Bader drops by and we found 30 new Python projects

Episode Date: May 29, 2018

Topics covered in this episode: Packaging Python Projects gidgethub — An async library for calling GitHub’s API pystemd PyCharm 2018.2 EAP 1 includes improved pytest support 30 amazing Python p...rojects (2018 edition) Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/80

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 80, recorded May 25th, 2018. I'm Michael Kennedy. And I'm Brian Hockett. And Brian, we have a special guest, don't we? Yes. Hey, hello Dan Bader. Hey guys, it's me, Dan. Good to be back on the show.
Starting point is 00:00:19 And it's always so nice to hear you do this intro live, Mike. Thank you. It's unreal. And you sound so smooth. I love it. 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.
Starting point is 00:00:35 And it's great to have you. For those of you who don't know Dan, Dan's well-known from RealPython and dbator.org and a bunch of Python goodness. 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 pythonbytes.fm slash DigitalOcean, get a $100 credit for new users. Pretty awesome.
Starting point is 00:01:01 Brian, I feel like there's a few themes that we touch on frequently in this podcast 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 how to package python packages and uh 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.
Starting point is 00:01:49 And that's a new feature, right? That's one of the things of them switching to Warehouse and the big release of the new PyPI.org. I think I remember the old examples for setup.py. They were either too small. They didn't include everything they needed. Or they were too big and kind of scary. And now this is a medium-sized example set up that is actually pretty nice. You know, I read through it and it looked like the same tool set that I used to push up.
Starting point is 00:02:15 So I think it's pretty accurate now. So that's nice. Nice. You didn't feel like you were super out of date. You're like, why am I not using this or using that? 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 very nice dan did you do much packaging yeah so i run a couple of open source
Starting point is 00:02:40 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. And so I think this is a pretty nice and pretty minimal write up. I like that. And I'm surprised that we're, you know, that the recommendation now seems to be to use a Markdown based readme files. Like I really like Markdown, I really, you know, warmed up to restructure text so much. And it's definitely cool that they're supporting that now. That's awesome. I think restructured text maybe predated Markdown. And it was, you know, it was the thing when the original PyPI was created.
Starting point is 00:03:16 And then just like that thing was, you know, calcified. And like, let's not touch this. Let's just not mess with this. Let's just keep it running, right? It's really good to see that getting a fresh update. Also, Brian, you talk about Twine in here. What's the story with Twine? I don't know if there's a story with it.
Starting point is 00:03:30 That's just the tool you use to push things up to PyPI. Oh, nice. I probably used it and didn't realize it or forgot that I used it. Maybe there's another way, but that's what I've always used. Yeah, cool. Actually, there's a cool project to throw in the mix here. it's called flit f-l-i-t and um it's well what's a good way to describe it it's sort of a minimal simple way to put python packages on pypi so they kind of completely done away with the setup.py instead you write an init file where you just put in you
Starting point is 00:04:02 know your author name and your home page or. And it generates all of that other stuff. And it might not be really necessary anymore now, you know, if you have like a really sort of short and sweet tutorial like the one that we were just talking about. But it is super, super beginner friendly, this flit thing. That's cool. Nice. It's FLIT? It's FLIT. Yeah.
Starting point is 00:04:22 Awesome. All right. And so that's probably on GitHub, isn't it, Dan? Yes, it is. Nice transition. So the next thing you have for us is an async library for calling GitHub's API. Yeah. Yeah. So I was going to talk about this thing called Gidget Hub, which is a Python wrapper around the GitHub API. So basically allows you to talk to GitHub and you can interact with all the different content types that GitHub provides or exposes. So you can add and modify issues. You can, you know, create pull requests. You can add comments to pull requests. You can download all the comments to pull
Starting point is 00:04:57 requests and all that stuff. So the other thing it does, it allows you to parse GitHub's webhooks. So you can configure GitHub so that every time a new pull request or something like that is created, it essentially calls an API callback on the web, like on some URL that you gave it. And so what you can use Gidget Hub for is a really nice and clean way to write GitHub bots with Python, essentially. And it's just a really cool library. And I think its API is super well designed. So we were recently using it on a workshop that we did in Vancouver, like Marietta, who's a CPython core developer, did a nicer T8 and was running around helping her. And so she wrote a really cool tutorial about how to use GitHub. I think it's just a really nice example from modern Python
Starting point is 00:05:46 web API library. It looks really great. And so you just go over here and you say like, I'd like to open a PR. So you get some PR data, then you say await GitHub.post. And you know, all your all your methods are async. Yeah, definitely nice and scalable. It looks like it's based on AIO HTTP, which is a really nice client-side async-enabled REST library. What's really, really cool about this Gidget Hub thing is that it's actually abstracting away from the actual backend, I want to say, what the actual library used to talk to or to handle those web requests, whether they're incoming or outbound.
Starting point is 00:06:27 So I just learned that this is referred to as a SANS IO library. So basically, it's just a protocol implementation that doesn't really specify how the IO is performed. So it allows you to plug in different backends, different concrete implementations that make this thing super reusable. Because, well, if there's a new async library, you know, flavor of the day kind of thing in a couple of months, then, well, you can probably just plug that in
Starting point is 00:06:53 and work with that. So it's kind of nice. It's really well designed. Yeah, so you can use AIO HTTP. You can use Tornado. Yeah, I was, recently we covered it on the show, this thing called Unsync instead of Async, UnSync. And it's a different implementation with a different thing,
Starting point is 00:07:11 a different event loop thing. Maybe you could use that here as well. That's pretty awesome. I like it. Nice pick. Nice, yeah. It's nice to use. Super friendly.
Starting point is 00:07:20 Yeah, Brian, do you guys do any GitHub automation? You just started with Git at your organization, right? We're doing it. We've got a private server, so we don't go through GitHub for work stuff. But I use GitHub all the time. Yeah, of course. Locally. Yeah, nice.
Starting point is 00: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 a big organization and you want to automate your company's interaction with github right 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 but i think it looks really cool and i love the way it works some uses where you could often use like travis or something like that. 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 repackage everything and run some tests against it, you could do that locally with something like this.
Starting point is 00:08:16 Yeah, that's pretty cool. 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. That's good. Harassment bot that just goes in and be careful. I think they use it on CPython. They moved all of the source for that to GitHub.
Starting point is 00:08:40 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. And so I think Marietta actually runs that bot. I might be mistaken here, but it's a bot that checks if that committer or that contributor already has given their permission. And if they didn't yet, then it's just going to ask them to do it and it sets a flag on the PR. 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. So I think it's great for that sort of use case. That is a great use case.
Starting point is 00:09:13 Yeah, that's really, really awesome. Okay, so the next one that I wanted to talk about actually was recommended to me and Brian because of some stuff that I had recently been doing. I think, you know, we were all at PyCon. I think maybe we were all at the same meeting or get together. And I had just decided, like, that's it. I'm writing a Python systemd daemon that will synchronize all of my course data, basically across the various servers in the different locations. So there's like eight or nine places in the world that serve up course content based on where you are.
Starting point is 00:09:48 And so I wrote a service in Python that is a system D service that will basically keep all those places in sync. Nothing too impressive, but it's kind of cool. You can do that in Python. So we got pointed at this thing called PySystemD, and this was actually presented at pycon 2018 so there's a whole talk and you go learn about what is system d why you care about it how is it used but the short version is this pi system d is an api into the system d whole api part of linux so you can create things that are daemons you can can say like, I would like to have my Python web app start
Starting point is 00:10:27 and I want it to start in this way, but I want it to not start before my MongoDB server starts. I don't want MongoDB to start in that way. You can configure these things to all just happen on boot or on demand, things like that. So I think this is really pretty awesome. So if anyone's doing any sort of automation with SystemD and they're already using Python,
Starting point is 00:10:46 here's a really great way to just 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? Let's start it. Let's create a new one. All sorts of stuff. Really, really nice.
Starting point is 00:10:59 That's cool. Yeah, also kind of cool how this was built. So this is based on Cython. So it's a wrapper and the C library that actually talks to systemd, right? Yeah, I think so. And actually, I'm going to cover in the next episode, this sort of article on using Cython as a way for a simple way to wrap C APIs. That's what surprised me. Yeah, I think that's why because it doesn't seem like a performance thing, right? 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. So pretty cool. Yeah, nice. I'd love to see that because I'm surprised they're using Cython for data, not just, you know, C types or C FFI or something like that. But I'm sure there's a reason for that.
Starting point is 00:11:43 The other thing I want to point out about this is this was created and presented by Alvaro Leiva. Sorry if I'm mispronouncing your last name there. But he's a production engineer at Instagram and Facebook. 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? Pretty sweet.
Starting point is 00:12:11 All right. So before we get to the next one, let me tell you guys about DigitalOcean. So DigitalOcean is definitely one of the best hosting frameworks or places out there. 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. 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 pythonbytes.fm slash digitalocean. If you're a new user, you'll get $100 credit. And, you know, check out what they have. It takes about 60 seconds to set up a new server,
Starting point is 00:12:58 and you'll be SSH'd in and doing all sorts of good stuff. Maybe you could even use PySystemD to, like, automate some cool stuff on it afterwards. So check them out. It helps support the show, and it's definitely of good stuff. Maybe you could even use Pi System D to automate some cool stuff on it afterwards. So check them out. It helps support the show, and it's definitely a good product worth checking out. Speaking of products, Brian, you're excited about one. You want to update one, right? Yeah, I am.
Starting point is 00:13:16 I usually, for a while, I was running the latest or the last 2017 release of PyCharm, but I don't know how recent this was, but not too long ago we had the early access program build one of 2018.2 is out for PyCharm. And the really exciting bit, and we got notified by this from Bruno Oliveira, who goes by Nicodermis on Twitter.
Starting point is 00:13:46 But it supports a whole bunch of new PyTest features. And I'm kind of a PyTest kind of nut. So the things that I'm really excited about. You could say you wrote the book on it. Yeah. Well, you could, because I did. Anyway, a couple of the features that I was really waiting for is PyCharm's really being an IDE has a lot of like, what do you call that? IntelliSense or something?
Starting point is 00:14:10 Yeah, autocomplete IntelliSense. Autocomplete. That didn't work for fixtures to a test. So if your test was using fixtures and it 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 of tests, and that's really cool. But the thing that I'm really excited about is parameterization now works seamlessly within PyCharm.
Starting point is 00:14:39 So if you've got a test that is parameterized so that you've got 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. If you wanted to rerun one or rerun the failing ones, it would just rerun all of them. I see. It treated it like a whole method in the decorator bit that had here's all the variations. That was just like a thing that it would just rerun all of them. I see. It treated it like a whole method in the decorator bit that had, here's all the variations. That was just like a thing that it would just rerun, right?
Starting point is 00:15:08 Yeah. So now you can run a test and in the left sidebar, you can right click on one of them and rerun just one of the parameterizations. Or you can, like for instance, if like only two or three or some of them failed, when you rerun failures, it only runs the parameterizations that failed. And this is a huge time saver for me. So I'm really excited about it. Yeah, that's nice.
Starting point is 00:15:31 I use that feature a lot where I just say rerun the failed tests. For people that are like really, and may not be too much of an issue for people that are running really quick tests, but a lot of my tests talk to hardware. So they're not really that fast. So this will save me like an hour a day, I'm sure. That's talk to hardware, so they're not really that fast. So this will save me
Starting point is 00:15:45 like an hour a day, I'm sure. That's awesome. Yeah, very, very cool. Dan, do you use PyTest? Yeah, I do. Yeah, I actually just, you know, used it. We wrote the backend for realpython.com. So we've got PyTest powered tests and integration tests for that. And yeah, it's just been a joy to use, like especially the parameterization stuff. It's just so nice when you can reuse a lot of test code, you don't have to like copy paste it around so much. So Dan, one thing I was going to cover, but you put it in here before, before I could get to it. So you're faster is basically why is installing Python 3.6 so hard? And so sort of confusing, right? Like, you talked about this workshop that you recently did.
Starting point is 00:16:28 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. But then you if you actually go teach a workshop to beginners, you're like, why are those four people over there not ready yet? Like, it's been 10 minutes, what could they have possibly been doing? And it's because it's like, there's all these edge cases, right? 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. But for people getting into Python, it is definitely a barrier. And we were teaching this workshop. So Marietta was teaching it. I was just running around kind of supporting people.
Starting point is 00:16:59 And for some people, we spend almost like two hours to get them to a working Python 3.6 install. And, you know, there were some really, like you hit all of these interesting, but obviously kind of frustrating edge cases. Like some people were running, they were running a Windows host. And then they were also running the Linux subsystem for Windows. So now you can, you know, can essentially boot up a VM that is integrated into Windows. And it boots Ubuntu or Debian or some other Linux distribution, I think. I think it defaults to Ubuntu, I'm not sure. I think it's Ubuntu as well. Yeah, that's nice. So basically you have this like really tightly integrated Linux environment
Starting point is 00:17:33 that you can just work from your Windows host environment. The problem is that people maybe accidentally installed Python in the Linux environment and they try and access it from the Windows environment because it's a little bit unclear if you're a beginner what actually the difference is between these two different terminal windows. Right, and you also might open PowerShell, which is like a third still. Exactly, things like that.
Starting point is 00:17:56 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. 1604 so it doesn't ship with python 3.6 and so for this tutorial we specifically needed 3.6 and so you know people started googling and just copying a bunch of stuff from stack overflow to install python 3.6 on ubuntu well it turns out there's like two different ppas so like third-party packages that you can install this from and one of them is broken or was broken during that time.
Starting point is 00:18:28 So, you know, people would have Python 3, but it had broken SSL and no PIP. So it was essentially useless for the purposes of this tutorial. And it's kind of crazy just into, you know, all of the edge cases you can encounter with this. 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 if you try to set it up and you're just sitting there. Well, okay, I just wanted to try this. It doesn't work. For sure.
Starting point is 00:18:55 Well, so you guys are writing this up at realpython.com slash installing-python as sort of an ongoing guide, right? Yeah. So we decided to do something about it. So shout out to John Sturtz and Jim Anderson. And we got together and put together this sort of the ultimate Python 3 install guide. And we're going to keep it maintained. And it tells you how to install Python
Starting point is 00:19:17 in very specific steps in all kinds of different configurations. So Linux, macOS, different Linux distributions, how to compile it from source. And we're just going to add to it and improve it based on feedback. And hopefully that's something we can just use in the next workshop and then tell people what to do. 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. So just throw that in there. I'm still trying to make that a thing.
Starting point is 00:19:43 I don't think we even mentioned it in that particular piece this is python 3 only yeah and then my mac is about ready for a format because you know it's time it's been like it's been bad so anyway it's about time for a format what would you like after going through this whole experience we could do homebrew you could do anaconda you could do download the pkg file from python.org etc etc what would you do if you were setting up a new computer like on mac yeah on mac yeah i so i'm a big homebrew fan because it makes it makes upgrading very easy and um it's just something that i personally use for other purposes as well so one of the things i usually do, you know, when I set up a new macOS development environment, I upgrade Bash.
Starting point is 00:20:28 So I use Bash as my preferred shell and macOS ships with a super old version of Bash. And with Homebrew, it's super easy just to get the latest version of Bash and then, you know, a bunch of other command line tools that I use. And so I just use that to install Python as well. So I kind of like that.
Starting point is 00:20:44 I mean, Python org version, it works as well. So I kind of like that. I mean, Python org version, it works as well. But if you're going to use homebrew anyway, which I think you want to use, if you're on a Mac, then I would just keep everything in homebrew. Yeah, that's what I'm thinking as well. It makes a lot of sense. Awesome. Both on Mac and on Windows. I just always just use the python.org installer. Yeah, that's what I've been doing as well. But with Homebrew, you just type upgrade, you know, and you can have different versions and stuff. I don't know. I'm thinking of playing with Homebrew next time.
Starting point is 00:21:11 But anyway, very cool. Yeah, there's also PyEnf. So that's sort of the other. If you're going to go with Homebrew, you could just go, you know, brew installed Python 3 and you get sort of one, the latest version of Python 3. Or you could install something called pyenv first and then that's sort of another layer of abstraction on top that allows you to switch between different versions of python including different versions of python 3 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
Starting point is 00:21:41 3 7 beta version or something like that so that's super nice it's maybe a little bit more advanced so i feel like you're probably there mike but for a complete beginner i'm not sure if i would recommend it yeah yeah yeah sure of course i don't think i'm there i've tried it several times and it hasn't worked for me so i don't want to go too much longer this but uh 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. So when I SSH in, I'm actually running just a virtual environment just by default. And I was considering doing even that for my Mac and just changing the shell back so it doesn't do something weird.
Starting point is 00:22:20 I don't know. I may get myself into trouble with that, but it's been working so far. All right. So I want to round this out with just a short little list of 30 amazing Python projects from 2018. So there's this thing called MyBridge. 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. And the article starts with the MyBridge AI evaluates the quality by considering popularity, engagement, recency, and so on. 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.
Starting point is 00: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. That's pretty cool. And then you guys can jump in and give me some thoughts. So I'll go from the least popular to the most popular. 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. There's number 28 is surprise, which is a scikit learn extension for building and analyzing, building a recommender system. So you can like say, you might also like this, which is kind of cool.
Starting point is 00:23:49 Number 27, we won't do all of them. That's why I'm skipping number 29. Number 27 is EEL, which is basically a simple equivalent of the Python's version of an ElectronJS system. What do you guys think of that? How have we not covered that already i think we might have mentioned it because we have been on a i think i
Starting point is 00:24:09 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 that you can build simple apps but not like full-on apps. But if you could build full on massive apps, I'd be all over this. That's awesome. 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, and real-time stuff. There's actually a really good documentary called
Starting point is 00:24:53 The Wall Street Code that goes into all these programmers that are building like AIs and stuff in Python. And it's pretty cool. So it's free on YouTube. Nice. Yeah. Brian, are you a fan of Mr. Robot or Dan? Either of you guys? Yeah, I was just going to say. No? No. Oh, man. Dan? I like it. Yeah. Good show. I think it went a little weird in episode two. I'm 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. You might, if you want to like check your own stuff, run some of these tools against your things before someone else does. We talked about Kenneth Wright's last time and number 18 was Maya,
Starting point is 00:25:35 DateTime for Humans, Better Exceptions. 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. 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
Starting point is 00:26:11 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 going to be. It's a solution looking for a problem, right? But it's a good, good solution, I think. Yeah, yeah, I think so. it's a solution looking for a problem right but it's a good good solution i think yeah yeah i think so it's a good solution 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 i'm a huge fan of micro python so i just learned a little bit more about it and so it's basically this like super small and lean re-implementation of Python 3, I guess, that runs on these super low-power, low-computational-power microcontrollers. And it's just so cool to be running Python on tiny, tiny machines that have very little RAM.
Starting point is 00:26:58 And we're talking kilobytes and stuff. Right, like a $5 chip. Yeah, so cool. Yeah, and you got one of those little bat in your your goodie bag at pycon right they did like a video review of that on youtube and i was just you know all giddy about it just playing with this thing just plugs into your usb and you can you know start running python on this thing that's a really good implementation they did brian how about you yeah i guess i'd have to second that micro python is awesome and a bunch
Starting point is 00:27:25 of the adafruit products run are able to run it and uh yeah it's all fun api store something i've been meaning to try still i haven't done any projects with it but it looks fun yeah it definitely looks fun quite cool all right there's one one final thing I want to cover. We had the GDPR stuff come out, basically come into effect at the end of last week. So just a quick point to an article from our friend Chris Medina at tryexceptpass.org slash article slash GDPR, sort of a take for developers. And if you haven't got your stuff all in line yet, please consider doing so for your own own good pythonbytes.fm is all up and ready so yeah dan you probably had to do the same for uh real python right yeah some sleepless nights because it's well it's everything is up for interpretation right so it's it's kind of hard to yeah just to put it into concrete terms but um i mean it's just been nuts you know that now that the deadline for that law to go into effect is passed. Like we've seen some services shut down.
Starting point is 00:28:27 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. They say it's temporary, but who knows? 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. The other thing I wanted to bring up, which I't know this is this is pretty cool to me i deal with an insane amount of large files
Starting point is 00:28:50 and i use dropbox mostly for that 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 but my hard drive doesn't really want to sync that much stuff did you guys know that dropbox released this thing called smart sync yes and i've been wanting to use it but it installs a kernel module and so i was like ah right because it's gotta it's gotta get into the file driver yes so if people have this problem they have dropbox came out this thing called smart sync that will basically give you and your Explorer and your Open Dialogs and Windows or Mac a view which pretends as if the files are there.
Starting point is 00:29:30 And as soon as you try to interact with them, even from the command line, they will automatically download if they're not, which basically lets you sync nothing but what you interact with, which is really amazing. It sounds super cool. I have a lot of trust in the Dropbox engineering team. And if it works that smoothly, I think it's an amazing feature.
Starting point is 00:29:49 I've sort of been hesitant about enabling it. All right. When you enable it, you tell us how it goes. I'll probably try it out. I'll give you guys a report eventually. Cool. All right. Well, I think that's it.
Starting point is 00:30:01 Unless Brian or Dan, you have extra stuff to share with everyone? No. Right on. Well. I think I'm all good. Yeah. Great to be back. Well, I think that's it. Unless Brian or Dan, you have extra stuff to share with everyone? No. Right on. Well. I think I'm all good. Yeah. Great to be back. 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. Awesome. Thanks, guys.
Starting point is 00:30:17 Yep. Bye, everyone. Bye. Bye. Thank you for listening to Python Bytes. Follow the show on Twitter via at Python Bytes. That's Python Bytes as in B-Y-T-E-S. And get the full show notes at PythonBytes.fm. If you have a news item you want featured, just visit PythonBytes.fm and send it our way. We're always on the lookout for sharing something cool. On behalf of myself and Brian Auchin, this is Michael Kennedy. Thank you for listening and sharing this podcast with your friends and colleagues.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.