Learn Python with Talk Python's 270 hours of courses

#76: Renewable Python Transcript

Recorded on Monday, Sep 12, 2016.

00:00 Even with solar panels on your roof, it's possible that your home is still being powered by fossil fuels.

00:04 Climate innovator and Python developer Anna Schneider is trying to change that.

00:09 At her company Wattime, consumers can source the cleanest energy available on the grid.

00:13 In this episode of Talk Python to Me, I talk to Anna about how Python powers Wattime,

00:19 some popular open source projects focused on renewable energy, and a few other Python-based renewable energy startups.

00:26 This is Talk Python to Me, episode 76, recorded Monday, September 12, 2016.

00:53 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.

01:04 This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy.

01:08 Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via at Talk Python.

01:16 This episode is brought to you by Hired and SnapCI.

01:18 Thank them for supporting the show on Twitter via at Hired underscore HQ and at Snap underscore CI.

01:25 Anna, welcome to the show.

01:27 Hi, Michael. Thanks for having me.

01:29 Yeah, I'm really excited to have you on the show today and to talk about what you've been up to in Python

01:35 and fighting climate change and working on renewable energy and all that good stuff.

01:39 It's going to be great.

01:40 Yeah, I'm excited.

01:41 Yeah, it's very exciting.

01:43 But before we get to that story, let's just start at the beginning.

01:46 Like, how did you get into programming in the first place?

01:48 Yeah, so I was a scientist for a long time.

01:51 That's how I thought of myself.

01:53 But I used code to do science.

01:55 So in undergrad, I was working on protein folding and protein structure research.

02:00 And so I would, that was my very first exposure to programming was doing some really simple bash stuff just to access the data that we were working with.

02:08 And it progressed from there during grad school.

02:10 Was that like the folding at home types data or was that other data?

02:14 It was data that I collected from its method called NMR for figuring out what proteins look like.

02:20 Okay, cool.

02:21 Yeah.

02:22 So you started programming that way, which I think a lot of people get into programming if they don't just go straight down the computer science track.

02:30 They get into programming because they needed it to try to do what they were actually doing.

02:35 And, you know, a lot of times I think people are like, wait, this is actually really more fun than the actual problem I started to solve.

02:43 Exactly.

02:44 That was how it worked for me, too.

02:45 So I had thought about when I was deciding what to do during grad school, I did my PhD in biophysics.

02:51 And so I was like, do I want to work in a laser lab?

02:54 Do I want to work in a protein structure lab?

02:56 Or do I want to study those problems but use code to do it instead of fancy equipment?

03:01 And I ended up realizing that I'm just a lot more creative when I'm writing code than when I'm working with physical objects in the real world.

03:08 And so that ended up being how I did my PhD.

03:12 Cool.

03:12 That makes sense to me.

03:13 And so how did you get into Python then?

03:16 So that was during my PhD when I started using Python.

03:18 So I had been writing these big C++ simulations for how the molecules inside plants that do photosynthesis, how they move around.

03:27 But then I needed something to analyze that data.

03:30 And Python was way nicer for that.

03:32 So I wrote a bunch of really crappy C++ code and then started writing some actually kind of okay Python.

03:37 Oh, that's excellent.

03:39 So you were studying how plants basically did photosynthesis and things like that?

03:44 Yeah.

03:44 Yeah.

03:44 So the part of a plant that acts like a solar panel, I was studying the molecules inside that and how they move around to make plants more or less efficient.

03:51 Interesting.

03:52 So how did you go from studying nature photosynthesis to what we're trying to do with solar energy?

03:59 Yeah, yeah.

03:59 So I got into that project because I knew that I wanted to work on energy software and energy data long term.

04:07 So at the end of undergrad, all my friends were either like pre-med or going to Google or something like that.

04:13 And either of those paths felt right to me.

04:14 So I was like, what do I care about as much as my friends care about medicine?

04:18 And energy and sustainability ended up being the answer for me.

04:22 So I deferred going to grad school and took a year to work at a tiny energy efficiency nonprofit and then at a place that does climate modeling for renewable energy projects.

04:34 And so I've sort of been on this trajectory for a long time.

04:37 Yeah, yeah.

04:38 That's really cool.

04:39 So did you do programming at those places or what kind of work do you do at like a climate nonprofit?

04:45 At the climate modeling for renewable energy place, I was doing programming and data analysis there.

04:50 So I worked with a bunch of atmospheric science PhDs and they would run big climate models when a wind developer would come to us and say like, I own this hill where should I put the turbines?

05:00 And so we would figure out what the typical wind patterns are in that place and what's the most efficient way to build new turbines.

05:06 So I learned Ruby there.

05:09 Oh, okay.

05:09 Interesting.

05:09 Yeah.

05:10 Like an optimization problem more or less, huh?

05:12 Yeah.

05:12 Yeah.

05:13 Yeah.

05:13 It's cool.

05:14 I think, you know, a lot of us care about climate change and we think as programmers and technologists, there must be something we can do.

05:23 I think certainly as programmers, we are in a better place to help in some way than a lot of the general public, right?

05:30 We could actually write some of the technology that makes these things go.

05:34 But at the same time, it also feels very much like this kind of stuff is the realm of giant companies that have deep seated interests that are not necessarily good for the world, but are good for them.

05:46 Yep.

05:47 Yeah.

05:48 Yeah.

05:48 And so you shared an article with me that's pretty interesting titled, What Can a Technologist Do About Climate Change?

05:54 A Personal View?

05:55 And that's at worrydream.com slash climate change.

05:58 Yeah.

05:58 So this was something put together by a guy called Brett Victor.

06:02 And the idea is just exactly what he said going through and saying there's so many places within our global energy system where people who write code for a living can make a real contribution.

06:16 So some of it is, he breaks it down by like funding, how energy is produced, how it's consumed, just the general tooling and simulation software.

06:26 A lot of this is very research heavy.

06:29 And so there's some really cool simulation methods that you can use.

06:33 Okay.

06:33 Nice.

06:34 And would you say in the end it comes out more on the dream side or more on the worry side?

06:39 I think it's a very optimistic piece that there's a lot of opportunities for people to get involved right now.

06:47 And one reason that's the case is that around 2012, there was a sort of flip in our economics of renewable energy where wind and solar started being cheaper than coal or natural gas in a lot of parts of the country.

07:02 I mean, increasingly in a lot of parts of the world too.

07:04 And so it's actually better business to be working on renewables right now.

07:08 And so funnily enough, there's a whole lot more companies working on it now that it's actually a really profitable business.

07:15 Yeah.

07:15 Surprise.

07:15 Once it's purely a good choice just from a business side, then all of a sudden, yeah, absolutely.

07:20 Yeah.

07:21 So that's part of why renewables is such an exciting place to be right now is it's not a choice between like, oh, fantasy and like, oh, feeling guilty about it.

07:30 It's actually like good business and good for the world and good for your technology career to move into this field.

07:38 Yeah.

07:39 I suspect the next 10 to 15 years are really going to transform a lot of the ways we think about energy and electricity and all sorts of second level effects of that as that really kicks into effect.

07:52 Yeah.

07:52 Yeah.

07:53 Yeah.

07:53 For sure.

07:53 Nice.

07:53 So when you think about like what, what can you do as a technologist?

07:57 Some people can buy carbon offsets.

08:00 I have in Portland, our electric company has this thing called Green Source where you can pay like extra for your bill.

08:08 It will basically guarantee 100% of your energy comes from renewable energy.

08:12 That probably offsets somebody who wouldn't pay that.

08:15 And so maybe it's not that great of a deal.

08:16 So we can make these little changes.

08:18 Or you could do something like you've done, like start a whole company.

08:23 Tell us about your company.

08:24 Yeah.

08:24 So I am the co-founder and CTO of a clean tech nonprofit called Watt Time.

08:30 It's watt like energy, time like times.

08:33 There's three T's in that.

08:34 And so what we do is we figure out when energy is clean or dirty coming from the grid in real time.

08:40 So if you think about flipping a light switch, is that turning on a coal plant right now or a windmill or solar or natural gas or something else?

08:49 And that answer actually changes every five minutes as different power plants come on and off the grid.

08:53 So we figure out that data in real time.

08:55 And then we use it to control smart devices.

08:58 So things like smart thermostats or electric vehicles or whole building automation systems so that they can turn on when electricity is a little bit cleaner and off when it's a little bit dirtier and save carbon from the grid overall.

09:11 Yeah, that's really a great idea.

09:14 So imagine I have some kind of thermostat and an air conditioner at my house.

09:18 And I want to say I would much prefer to cool my house with renewable energy.

09:22 And that thermostat could subscribe to your service and decide if I were to turn on now, what kind of source would this energy come from, basically?

09:33 Exactly.

09:33 Okay.

09:34 Yeah.

09:34 And so our algorithms try to do it.

09:38 So your house will see more or less the same temperature all the time.

09:42 But it's like if the air conditioner needs to fire for like 10 minutes out of the hour to keep your house the temperature you want it, it would choose the cleanest 10 minutes.

09:50 Yeah.

09:51 Oh, that's excellent.

09:52 And what's the uptake like?

09:55 Are there a lot of companies reaching out to you to work on this?

09:58 Is this, how's it going?

09:59 We have some pretty good partners in the pipeline right now.

10:02 Yeah, it's pretty exciting.

10:04 Part of the trick is that a lot of smart device companies like IoT, Internet of Things, is this like big business.

10:11 It's really exciting, but it's not very standardized yet.

10:14 And so a lot of what we're also coming up against is just the fact like, well, do we have to write a separate integration for every company?

10:22 And as a nonprofit, it takes a lot of funding to get to the point where you have the manpower for that.

10:27 I bet it does.

10:28 I bet it does.

10:29 Yeah, like there's not that many residential places that have that kind of connectivity, right?

10:34 Like I have some crummy little twisty thermostat on my wall and, you know, I doubt that it, I know it doesn't care about any of those sorts of things and it has no capability.

10:44 But so you're focusing more on large scale stuff, maybe like electric vehicle charging stations that are super intensive or a hospital air conditioner, things like that?

10:56 Exactly.

10:56 Although home thermostats is a really good market too.

10:59 There's a 40% of US power demand comes from homes.

11:04 And a lot of that is from heating and cooling.

11:06 Sure.

11:06 Absolutely.

11:07 So could I go buy a thermostat that would integrate with you guys and plug it into my house?

11:11 Yeah.

11:12 So you can go to our website and we have a waiting list right now to sign up for our very first smart thermostat from our partner, Energate.

11:20 How exciting.

11:21 Yeah.

11:21 Awesome.

11:22 So tell us about your company.

11:23 Where did it get started?

11:24 So I met my co-founder when we were doing our PhDs at UC Berkeley.

11:28 So like I said, I was doing biophysics, but I knew I wanted to do energy stuff.

11:32 And he was doing energy economics and behavioral economics.

11:35 And so he actually came up with the algorithms that are the foundation of lot time, sort of as an extension of his PhD.

11:43 And so we just met at a hackathon, just a regular weekend thing.

11:47 It was like, hey, you want to work on this thing?

11:49 This sounds awesome.

11:50 Cool.

11:51 Let's do it.

11:52 And then he's such an amazing volunteer organizer that he kept me around for the next few weeks, a month, and then years.

12:00 And then ongoing, huh?

12:03 Very cool.

12:03 Yeah.

12:04 What kind of hackathon was it?

12:05 What was the theme?

12:06 Or where was it hosted?

12:07 Things like that.

12:07 It was called the Berkeley Clean Web Hackathon.

12:10 So there's a clean web initiative is an international network that hosts energy focused hackathons.

12:17 Okay.

12:18 So it was specifically energy focused to start with.

12:21 I see.

12:21 Yeah.

12:23 Very nice.

12:23 Now, you said it's actually pretty hard to predict whether this energy is going to be clean or not.

12:32 And there's a lot of data science problems going on there, right?

12:35 Yeah.

12:35 Yeah.

12:35 So part of the fundamental challenge with getting to 100% renewables on the grid is that wind and solar are completely dependent on the weather when they're actually produced.

12:47 And so better prediction of that and better just use of that stochastic information is really interesting for data science.

12:56 Now, one of the things that maybe not everyone knows is the older energy sources like coal, which is especially bad, are very hard to change their capacity, right?

13:07 Yeah.

13:07 Yeah.

13:08 So the wind might blow hard for 10 minutes and then stop.

13:11 And that'll generate way more energy.

13:13 But you can't just necessarily pour that energy into the grid, right?

13:16 That's another reason why this is such a hard problem is exactly what you said.

13:19 That phenomenon is called curtailment.

13:22 So the idea that if there is way too much wind being produced right now, maybe the utility would prefer to use that instead of coal.

13:29 But it's so expensive to shut down a coal plant for just a few minutes.

13:33 And so they'll actually call the wind farm and be like, dudes, you have to turn off your clean, free, renewable energy.

13:39 That has to get wasted right now.

13:41 Yeah.

13:41 And what I think it's really especially unfortunate about that is that happens at the time when the most energy is being created, right?

13:48 Exactly.

13:48 Exactly.

13:49 Yeah.

13:49 It's like the, yeah, it gets punished for doing too well.

13:52 Yeah.

13:53 Exactly.

13:54 Whereas coal gets rewarded for not doing as well.

13:56 Wonderful.

13:57 Yeah.

13:58 You said you actually have.

14:00 Optimistic.

14:01 Really.

14:04 Well, you know, maybe it's a sign of something like coal.

14:08 It's, it's just doesn't really fit so well into the modern world where we have so many better answers, right?

14:13 So in, in the longterm, maybe it's a, another negative for coal, but still in the short term, it's a problem that you guys, that, that is a challenge for you.

14:20 Cause you can't just say, oh, it's a windy.

14:21 So it must be good.

14:22 Right.

14:23 It could have actually been the worst case scenario.

14:25 And you have two kinds of challenges that you're solving with Python.

14:30 One is right now, what is the energy?

14:34 Story for my air conditioner, right?

14:36 If I turn on my air conditioner, it comes on immediately and it does its air conditioning and then it turns back off shortly.

14:42 But if I had an electric car and I had it plugged in and I just said, look, I would like to drive to work at seven in the morning.

14:49 It's 10 PM.

14:50 You get my car charged as, you know, efficiently with renewable energy as possible.

14:55 That's a different kind of problem.

14:57 It's like a forecasting problem, right?

14:58 Yeah.

14:59 Yeah.

15:00 So for both of those kinds of problems, how our model works right now is that we get open data about what's going on on the power grid.

15:08 So there's entities called balancing authorities that make sure that supply and demand are matched in real time for what's on the power grid.

15:15 And they actually put a fair bit of open data online, which is the foundation of what we're able to do.

15:21 So we pull in that open data both for what's happening in real time and what they think is going to happen for the next few hours.

15:26 So it's interesting.

15:28 Their forecasts have some systematic bias, which we're working to correct also.

15:32 But as a start, like there, it's the forecast that the actual power grids are running on themselves.

15:38 So it's a good starting point for our algorithms.

15:40 Yeah, sure.

15:41 Oh, it's nice that you have that to start with.

15:43 You don't have to completely come up with the forecasting.

15:45 Exactly.

15:46 But the open data that we're based on isn't exactly the kind of data that we want to be using.

15:53 It tells us like overall what's happening on the grid, but it doesn't tell us exactly what your personal effect would be.

16:00 So if you think about like if you use a little bit more power right now, what power plant are you affecting most?

16:07 That's where our sort of special sauce comes in.

16:10 Yeah, sure.

16:11 Now you can't talk about your special sauce, but we could talk a little bit about the architecture.

16:15 So what technology do you use to build your API that these devices integrate with?

16:21 So we are Python top to bottom.

16:23 So it's a Django REST framework API that is pulling from the data from Postgres database and then serving it up.

16:32 So it looks sort of like a weather API, just time series data.

16:36 Yeah, it's got to be a lot of time series.

16:39 You know, all this data of Internet of Things you're collecting and serving.

16:44 You also use Panda for data analysis, right?

16:47 Yeah.

16:48 So on the back end, in order to collect all the open data about what's going on and then analyze it, Pandas is really big for that.

16:55 And then we use Celery for all the periodic task management of scraping the data from the sources and then sending those on off control signals to all the smart devices that we're working with.

17:07 You actually outlined this in a talk you gave at DjangoCon this year called Django for IoT from hackathon to production.

17:15 Yeah, that was a cool talk.

17:17 Really nicely done.

17:18 Thank you.

17:18 Yeah, it was such a treat to be able to speak at DjangoCon.

17:22 Yeah, I'm sure.

17:22 That's cool.

17:23 So one of the things you talked about were design patterns and anti-patterns for building Internet of Things services.

17:32 Yeah, so part of the basic premise of the talk was that you can, like, normally when we think of a Django, like, starter project, it might be a blog or a polls app or something.

17:45 But I think that an IoT project can be just as good a starter project for people to get started on with Django and with Python.

17:52 So one of the patterns there is that it really is all about time series data.

17:58 And so some of your data management, you have to think a little bit more carefully about your indices and things like that because your data gets so huge so quickly when you're dealing with Internet of Things data.

18:08 Yeah, if you have a thousand users and they have Internet of Things data putting time series in, that could be, you know, millions of records instead of thousands.

18:16 Very interesting.

18:17 Exactly.

18:18 Yeah.

18:18 So even just at a hackathon scale, like, if you're just doing a weekend project, you can still have a lot more data than you know what to do with, which is pretty fun.

18:25 Sure.

18:25 So one of the things I thought was interesting you talked about was you said normal Django apps are built around views and maybe a better way to think about it for APIs that work with Internet of Things devices.

18:38 is to think about tasks instead of views necessarily because everything is more or less asynchronous, right?

18:45 Right.

18:46 Yeah.

18:46 So that's the other big design pattern with IoT is that if you think about this is specifically for the use case where, say, you've bought some smart device and the company that made that thing has a server and they have an API.

19:02 And all you can do is send, get, or post requests to that API.

19:07 They won't send you anything unless you ask for it.

19:10 And so it has to be all about the machine communication and you have to do the work of initiating everything.

19:17 And so you can't wait for their server to send you a request.

19:21 You have to be able to initiate those.

19:23 And so that's a big part of where we use Celery for is running those periodic tasks.

19:27 And so that means all your, like, the code that really matters can't be looking inside your views.

19:33 It has to be in a similar kind of structure, but for machine-to-machine communication.

19:37 You can't really just, like, make a call to some server that's going to go out to a thermostat and wait for the thermostat to respond, right?

19:47 Your system would just lock up.

19:48 So a lot of it is, you know, begin sending this message asynchronously, throw it onto a queue of some sort, and then say the message was sent and just wait for some kind of response later, right?

19:59 Exactly.

19:59 Yeah.

20:00 So there's the whole other part of the architecture where the devices have to communicate with their maker's server and then their server has to communicate with yours.

20:10 So everything's sort of set up in its own very special way.

20:14 Sure.

20:15 So every device that you play with is going to have a slightly different setup.

20:18 Yeah.

20:18 And they may be responsive.

20:19 They may be high latency.

20:21 They may be flaky.

20:22 All right.

20:22 You never know about these cheap little devices.

20:25 Interesting.

20:26 The other thing you talked about was that you maybe don't build just one application, but you might have a family of applications around some kind of project.

20:36 So you might have one that talks to devices, one that receives observations, one for like a vendor portal, things like that, right?

20:45 It might be a suite of web apps, if you will.

20:47 Yeah.

20:48 So every kind of application that you're doing, since there are so many users of an app like this, there is the human like in their home doing whatever.

20:58 There is the company that you're working with.

21:01 There is the physical devices.

21:03 Each of these needs its own kind of user interface.

21:06 So it's kind of fun thinking of thermostats as the user of your application.

21:11 And what's a good user experience for the thermostat.

21:13 Yeah.

21:14 That is a funky visualization to think of the thermostats as your user.

21:17 But yeah.

21:18 Yeah.

21:18 I guess that's the UX problem I spend a lot of my time solving.

21:21 The thermostats are much happier if we implement it this way.

21:25 It's kind of true.

21:27 Oh, sure.

21:29 The other thing you said is one of the challenges you can run into is you might have a, if you're trying to spin up a quick prototype, like at a hackathon, for your example, or just, you know, some quick proof of concept, you might have one way of implementing things, like especially the like the background tasks and stuff.

21:48 And then if you're doing a production, it probably needs a lot more careful attention.

21:52 I'm a big fan of Heroku, especially for hackathons.

21:56 And so Heroku has one really nice feature called the Heroku scheduler.

22:01 And that allows you to, for free, run periodic tasks every 10 minutes or every hour or once a day.

22:09 And so that can be a really good first pass option.

22:12 And if you want to do something really quick and easy at a hackathon where, like you've written the code to say, okay, I want to hit the thermostat API every 10 minutes.

22:21 That's a free way to do it where you don't need all the pain and sort of extra structure of setting up Celery.

22:28 But as soon as you need more reliability or more flexibility in terms of when you're running the tasks, then Celery is definitely the right option there.

22:39 So if people aren't familiar with Celery, this is a distributed message queue framework for Python.

22:45 So it's great for either running asynchronous tasks.

22:49 So something like if someone signs up for your service and you want to send them a user signup email, you can send the email in the background while you return a view to them.

22:58 But you can also use it for scheduling periodic tasks.

23:01 So something like every five or 10 minutes.

23:03 Sure.

23:04 Yeah, I think it's thought of more often for long running things.

23:08 I'm going to do some kind of report and it's going to take too long for the request.

23:11 So we'll initiate it as a task and then pull for the response or something like this.

23:17 But the scheduling aspect of it is cool too.

23:20 Yeah.

23:21 So it's like if you would normally do something with Cron on your laptop, this is the way that you can use a similar kind of way of thinking about things.

23:31 But in a distributed environment, like where you're actually running your web apps.

23:37 This portion of Talk Python is brought to you by Hired.

23:50 Hired is the platform for top Python developer jobs.

23:53 Create your profile and instantly get access to 3,500 companies who will work to compete with you.

23:57 Take it from one of Hired's users who recently got a job and said, I had my first offer on Thursday after going live on Monday and I ended up getting eight offers in total.

24:06 I've worked with recruiters in the past, but they've always been pretty hit and miss.

24:09 I tried LinkedIn, but I found Hired to be the best.

24:12 I really like knowing the salary up front.

24:14 Privacy was also a huge seller for me.

24:16 Sounds awesome, doesn't it?

24:18 Well, wait until you hear about the sign-in bonus.

24:20 Everyone who accepts a job from Hired gets $1,000 sign-in bonus.

24:24 And as Talk Python listeners, it gets way sweeter.

24:26 Use the link Hired.com slash Talk Python to me and Hired will double the signing bonus to $2,000.

24:31 Opportunities knocking.

24:33 Visit Hired.com slash Talk Python to me and answer the door.

24:44 So one of the things that you talked about a lot is IoT and your service, your company is more focused around providing data for other people's things on the internet.

24:56 But you said you end up building some every now and then as proof of concepts yourself because someone's got to show that this works before someone else will buy into it, right?

25:07 Exactly.

25:07 Yeah.

25:09 So starting as just one step above a student project when we were just getting started, one of our first partnerships was University of California at Merced has all of these electric golf carts that the maintenance people use to drive around.

25:25 So this is the simplest thing that's approximation of an electric vehicle charging system we could use.

25:31 So we got these smart plugs.

25:34 It's like something you plug into the wall and then you can plug anything else into that.

25:37 And then we had all of the electric golf carts plug into those and then we would manage the charging from there.

25:43 So there's a brand called ThinkEco that has an API that you can use to control these smart plugs.

25:50 So we got those and we were able to write an app that does the full end-to-end integrations, everything from figuring out the best times to be charging, forecasting that for the next few hours,

26:01 and then sending the signals all the way down to the charging system to say, okay, turn on now.

26:08 Okay, turn off now.

26:09 How interesting.

26:10 So talk to me about the architecture a little bit.

26:12 Did you have a Linux server on the same network as the smart plugs and something like this and they just kind of watch that?

26:21 Or how did you put it together?

26:22 Yeah, so for that part of the communication, there's a couple different models.

26:28 So the one that we used for that project, there was a hub, so sort of like a local gateway.

26:34 So there's a protocol called ZigBee.

26:37 That's pretty common for Internet of Things communication between the device and then some central hub.

26:42 And then you plug the hub into Ethernet and that's able to talk back out to a real server.

26:48 Okay.

26:49 Yeah, so the smart plugs could get out and check on what they're supposed to do.

26:52 Exactly.

26:52 Okay.

26:53 Very cool.

26:54 How much did one of those little plugs cost if like listeners are like, I'm going to build one of those?

26:58 Is it a cheap thing that you can put in your house or is it kind of pricey?

27:02 Different brands are anywhere between like 30 bucks and 100 bucks.

27:06 Okay.

27:07 There's a range of prices and there's some pretty cool things you can do with them.

27:11 So one called BelkinWemo is on If This Then That.

27:16 And so that's something where you barely have to write any code at all to start hacking around with it.

27:20 Oh, wow.

27:21 That is pretty cool that it's built on that.

27:23 Yeah.

27:24 Interesting.

27:25 So you guys are writing a lot of Python code around renewable energy and whatnot.

27:33 You've got some open source projects at github.com slash watttime.

27:39 And your most, I guess, generally applicable one, like you have your API code there and stuff like that.

27:45 But one of them that's kind of general purpose is this thing called PyISO, P-Y-I-S-O.

27:52 Want to tell us about that?

27:53 PySO is a set of Python client libraries that we use for scraping data from different online sources about what's happening at the power grid.

28:04 So one thing that we think is really cool and that other people like playing with, too, is what is the mix of generation sources that's on the grid at any given time?

28:14 So maybe in California, we have some number of megawatts of natural wind, some number of coal, some number of solar, some number of wind.

28:23 And that's going to be different in five minutes.

28:26 And it's going to be different in the Midwest.

28:28 And it's going to be different in New York.

28:30 And so PySO is a set of libraries that anyone can use to start scraping some of that data and playing around with it yourself so that you can understand where your power comes from.

28:41 So if you wanted to build a business like yours, this is some of the foundational data that you might need.

28:47 Exactly.

28:48 And it's been really fun to get open source requests from people at solar companies or people doing research on these systems.

28:56 So there's a lot of users out there and very open to contributors.

29:00 Yeah.

29:01 Oh, excellent.

29:02 Yeah.

29:02 So if you want to help, check it out.

29:04 I'll be sure to link to it in the show notes.

29:06 Cool.

29:06 Yeah.

29:07 One specific thing that would be really cool to get help with is we have coverage for a lot of the United States right now.

29:13 But there's also similar open data available in Canada and in Europe and Australia and other parts of the world.

29:20 So if you're listening to this show and you're like, oh, everything she's talking about is in the U.S., like there's opportunities in the rest of the world to chip into.

29:28 Okay.

29:29 So you're taking this from some kind of governmental source in the U.S. or regulatory place that gets this data.

29:36 What are the data sources of this library?

29:38 So that's the annoying part.

29:40 That's why they need a whole library for it is that I mentioned the balancing authorities a few minutes ago.

29:46 So that's where we get the data from.

29:48 But each balancing authority publishes data in a totally different format.

29:51 So some are like zipped CSVs.

29:55 Some are XML.

29:56 Some is a nice JSON API.

29:59 And so that's a big part of the point of PySO is to hide all that ugly stuff in the background and make it easy for you to just write one little Python line and have everything else to get taken care of.

30:12 So that's a lot of pandas and beautiful soup in the background of that.

30:15 Okay.

30:15 And requests.

30:16 Oh, yeah.

30:16 That's a good combination.

30:18 Yep.

30:18 Pandas, beautiful soup, and requests.

30:20 Yeah.

30:21 So I've heard of a lot of variation in APIs.

30:24 You know, maybe this is an HTTP JSON service.

30:28 Maybe that's a SOAP web service.

30:31 But I've never heard of it being so broad as we've got zipped CSV mixed with like some probably the beautiful soup is for like some kind of web scraping on some other service.

30:45 Yeah.

30:45 And then you've got like an actual API, right?

30:49 Yeah.

30:49 So different balancing authorities in different parts of the U.S. have just put their data online in different formats.

30:56 So there hasn't been any real reason for them to standardize it.

31:00 And a lot of them don't employ nice fancy Python developers to write a good service.

31:06 So it's just whatever people have been able to throw together.

31:09 I think of one of the challenges of getting renewable energy really working has to do with having a better power grid.

31:17 Yes.

31:17 But maybe that is obviously like an important physics problem.

31:24 But I think maybe, you know, it sounds like there's even more fundamental things.

31:28 Like if there's not some kind of standard API for even discussing what kind of energy is being used and so on.

31:36 Like if it's down to a zipped CSV, that's probably not a system that in its mind is about real time.

31:42 No.

31:43 Yeah.

31:44 I completely agree.

31:46 And that's something that there's a lot of rhetoric in the community about like we're moving towards real time and everything's going to be real time.

31:52 The future is going to be amazing.

31:54 But it's we're still pretty early in the process of building that future.

31:58 So there's a lot of opportunities.

32:00 Sure.

32:01 But it's cool at least that you have a library that means people don't have to live in that past.

32:06 They can work in the future.

32:07 And if that balancing authority comes up and says, all right, we actually have a real API now, they won't have to change their code, right?

32:14 You guys just fix that open source library to use the new format and it's good to go.

32:18 That's the idea.

32:19 Yeah.

32:20 And so keeping it up to date has been another fun challenge.

32:22 At every daylight savings time transition, I have to wake up early on a Sunday and fix whatever bugs came up because there's also no standardized way of handling the daylight savings time of these data sets.

32:33 Oh, yeah.

32:35 So you said that there were actually quite a number of other open source projects and startups that were either open source projects focused on renewable energy or maybe they're even written in Python, as well as a number of renewable energy startups using Django and other Python web frameworks.

32:55 Yeah.

32:55 I sort of like to break down the field of what's happening in renewables into a few different categories.

33:03 So sort of the lowest level is to just build more renewables.

33:07 It doesn't matter what we build.

33:08 We just want as much as possible.

33:09 The next layer is to build the right renewables that produce energy at the right times.

33:15 So like we were talking about before, if there is like too much wind, where there's also too much other kinds of energy being produced, it can't be useful.

33:21 So getting that next level of optimization right matters.

33:25 And then sort of the highest level is, okay, we have the constraint of what energy has been produced.

33:30 How can we use it in the best way?

33:32 Right.

33:32 And that's kind of where you live a little bit.

33:34 Exactly.

33:34 But there is really cool work happening at all three of those levels.

33:37 Well, and there's also efficiency, right?

33:40 Just like build more efficient buildings.

33:42 Use less energy, right?

33:44 Use less.

33:44 Yeah.

33:45 So efficiency is sort of like step zero.

33:48 Yeah, exactly.

33:49 It's not as fun to talk about, but it matters at least as much as anything else.

33:54 So turn off your lights.

33:55 Yeah.

33:56 I talk to my kids all the time.

33:57 I'll go into their bathroom, my daughters, and we have like this, I don't know, like this lighting thing for the mirror.

34:02 There's like six lights and they're all on while they're at school.

34:05 I'm like, kids, how many lights you just left on when you left?

34:09 So yeah, that definitely makes sense.

34:11 And there's actually an open source project for that that you pointed out, right?

34:15 Called what?

34:16 Energy Plus?

34:17 Yeah.

34:17 So Energy Plus is a simulation program that's used by architects and engineers for building new energy efficient buildings.

34:26 So doing some of that design work.

34:28 So there's a lot of cool simulation work that's a part of that for like thermal modeling and energy flow and how like sunlight is hitting a building to make sure that part's efficient.

34:38 So that project is mostly in C++ and Fortran, actually.

34:42 I'm not sure if there's Python bindings for it, but that's a very active open source project maintained by the National Renewable Energy Lab in Colorado, NREL.

34:52 Sure.

34:52 So let's talk about some of the build more ones.

34:56 Some of the Python startups are in that area, right?

34:59 Yeah.

34:59 Yeah.

35:00 So that's an area where there's a lot of startups right now because the biggest challenge for building more renewables right now, especially in solar,

35:08 is not the cost of the equipment itself, which is amazing that that's so cheap now.

35:12 But so the bigger part of the cost that people are trying to work on is sort of the soft costs.

35:19 So things like marketing and customer acquisition and making it easy to design systems quickly and get them installed quickly.

35:29 So there's a whole bunch of Python based startups that are working in the sector.

35:34 Sure.

35:35 So one of them is utility API.

35:37 Another one is Sighton, Fossum Labs, and EnergySage.

35:43 So what are those guys doing with Python?

35:45 What's their business model, each one of them?

35:47 Yeah.

35:47 So utility API is one of our friends in Oakland.

35:51 There's a lot of this in California.

35:52 And what they do is they do sort of the flip side of what PISO does, but for utility build data.

36:00 So they say, like, utility builds are also in these, like, it'll be a PDF or some sort of, like, horrible, unscrapable format.

36:07 And so they've written scrapers for a bunch of different utilities that either individuals can use, but really other solar companies can use to say, okay, this is what someone's power bill has looked like in the past.

36:20 Maybe they're going to be a good solar customer.

36:22 Maybe they're going to be not as good a solar customer.

36:24 And so simply opening up that data access is a really foundational part of the pipeline.

36:30 Right.

36:30 Because our API is zipped CSV files.

36:34 Gives you a sense of accessibility of the data, right?

36:36 Yeah.

36:37 It's like PDFs in this case.

36:39 Exactly.

36:40 Yeah.

36:41 So they have a pretty hard problem.

36:44 Yes, they do.

36:44 Wow.

36:45 So if, like, for example, if I want to add solar energy to my house or some kind of renewable energy and I went to some solar energy company and I said, hey, what could you guys do for me?

36:57 They have this huge problem of, like, well, go and download the last year of your data and zip it up and send it to us or something crazy like that.

37:06 And this utility API basically reverses that and makes it possible to go have a look at what my actual data is in an API form.

37:15 Exactly.

37:16 Yeah.

37:17 Okay.

37:18 So they've been growing really quickly.

37:19 Nice.

37:20 And they're using Django as well?

37:22 Yeah.

37:22 So they have Django and they're more Python on the back end, too.

37:25 So lots of regular expressions and other scraping packages.

37:28 Yeah.

37:29 I can imagine.

37:29 Cool.

37:30 And then Citan.io?

37:32 Citan and Folsom Labs are two of the Python-based energy startups that focus on designing the systems for actually getting the solar panels on roofs.

37:47 So another challenge that solar developers want to be solving quickly is what's the angle of your rooftop?

37:54 What is the right number of panels to put on your roof?

37:58 What's the best way to hook all the modules up together?

38:01 And so Citan and Folsom Labs both handle different parts of that problem.

38:06 Yeah, because otherwise you're using something like AutoCAD and you're just starting entirely from scratch and there's nothing about solar energy or any of these types of things, right?

38:15 So this is a much quicker, like a rad design tool for your physical deployment of solar.

38:20 Interesting.

38:21 Exactly.

38:21 Yeah.

38:22 And so those are kind of fun because there is both the physics modeling to make sure that the electrons are flowing in all the right places.

38:29 And also some of the financial modeling to see, like, is this going to produce the right cash flow both for the customer and for the company who's actually installing the panels?

38:40 Sure.

38:41 Sure.

38:41 And then Energy Sage is about getting quotes.

38:45 It's like Expedia for renewable energy, right?

38:49 Yeah.

38:49 So there's several of these different services where you can go and say, like, there's so many tiny solar companies in different parts of the country, just mom and pop shops.

39:00 And so it can be really hard as, like, if you're just a regular person and you want to put solar on your roof, you don't know who to call.

39:07 And so Energy Sage is one of the startups that is trying to make it easy for, not for companies to find you, but for you to find companies.

39:14 So there's people going both ways.

39:16 We all want to ship our software faster, respond to user requests quicker, and build an edge on the competition.

39:36 But the faster you go, the more likely a bug or issue will slip by and cause your users grief.

39:41 I have the same trade-offs with my Talk Python websites and infrastructure.

39:45 That's why I use SnapCI.

39:46 Every time I check in at GitHub, SnapCI springs into action.

39:50 A clean copy of code is pulled from GitHub.

39:52 A Python 3 virtual environment is created.

39:54 All the packages and dependencies are installed.

39:56 The unit tests are run.

39:58 Finally, I'm notified in Slack and a menu bar on my Mac about the outcome.

40:02 That way, I know it's safe to ship a shiny new version of my web app.

40:05 Ship your software faster with a 30-day free trial at snap.ci slash Talk Python.

40:11 Let's talk about building the right renewables.

40:22 So right amount of energy, right time, that kind of thing.

40:25 In this space, there's this problem called the duck curve.

40:28 What's the duck curve?

40:30 It's a kind of weird name for a kind of cool graph.

40:33 So if you Google duck curve, you will find these graphs that show right now in some parts of the world, the amount of renewables that's being put on the grid is sort of balancing the other things that's being produced.

40:49 So there is not really a problem.

40:52 But as more and more solar in particular is put on the grid, that will mean that sometimes there can actually be more solar production in the middle of the day than there is demand.

41:04 So this is a huge problem because that means that if we're just spending money on building new solar panels willy-nilly, that's not actually solving the real problem.

41:16 And so there's a problem with how to...

41:18 Right.

41:19 Because like the coal plants have to stay online, so you just have to dump that energy anyway.

41:24 Exactly.

41:25 Or like even if we were able to turn off the coal plants, there might still be too much solar, which is a kind of fun problem to have.

41:32 But that really is the future that we're moving towards.

41:35 And so building the right mix of energy in the right places is something that is mostly a sort of research and policy problem at this point.

41:45 So there's a lot of cool work going on at research labs, including some of the national DOE labs on this part of the work.

41:55 Excellent.

41:55 Yeah.

41:56 And that was kind of your first job, right?

41:58 Yeah.

41:58 So there's also some work going on at like consulting companies like what I was at.

42:02 And also the big solar and wind companies will have in-house groups that do some of this work to be like, okay, we need to get this project permitted to put on the grid.

42:12 How can we simulate exactly how much energy our wind farms or solar farms are going to be producing in 10 years?

42:19 Okay.

42:19 Yeah.

42:20 So there's a lot of interesting open source.

42:22 There's a couple of popular open source Python related projects trying to help answer this question, right?

42:30 Mm-hmm.

42:30 Yeah.

42:31 So there's one for wind called wind ML, ML like machine learning.

42:37 And there's a similar one called PVLib, and that has a Python binding.

42:42 So both of these are Python projects that for the first one, it can help you collect data about what your wind farm might do and analyze that data.

42:52 And for the second one, it does the same thing for, but for calculating a solar PV output.

42:57 So if you have solar, like photovoltaic panels, what kind of power are they going to be producing when?

43:04 And so you can plan around that.

43:05 Mm-hmm.

43:05 And if you wanted to treat this like a data science problem, are there like cool data sets and stuff that you can use?

43:12 Yeah.

43:13 So both of those will give you access to data sets.

43:16 And then the National Renewable Energy Lab also hosts a similar data set called PVWants.

43:21 So that's something that like there's been a lot of effort put into developing these data sets.

43:27 But that one's kind of interesting is that I wasn't able to find good Python bindings for it or a good Python client.

43:32 So that's an opportunity for someone to start a new open source project and see if it catches on.

43:37 And then the last part, the third category you said was using the right energy when it's available.

43:45 And that's what Wattime works on.

43:47 That's what PyISO, your project works on.

43:50 What else is going on around there?

43:52 Part of why this is so hard is that this isn't something that the good operators can really just do by themselves.

43:57 You can't just plan for it and then have it work.

44:01 Because at the end of the day, it's a behavioral problem.

44:03 It's happening at the user's side of the equation.

44:06 So almost every energy hackathon that I've been at, someone is super excited to be like, oh, if people could just see where their energy is coming from, then they'll take all the right actions.

44:20 And you can make some really fun graphs that way.

44:22 But unfortunately, none of them have ever really caught on.

44:24 Like Google and Apple and Microsoft have all tried these two.

44:29 And unfortunately, it's just like a really hard behavioral problem to get people to pay attention to where their energy comes from.

44:34 Yeah, they don't really seem to catch on.

44:36 Yeah.

44:37 You put an interesting factoid up here that says people spend less than 10 minutes a year thinking about their power bill.

44:43 Yeah.

44:44 Yeah.

44:45 So it's true.

44:47 Like people don't really care even though they think they do and even though they want to.

44:50 And so that's why technology can be so impactful in this part of the problem is because it's all about automation and smart devices and the Internet of Things in order to really solve the problem in a way that sticks.

45:02 Yeah.

45:02 You almost have to take the person out of the loop, right?

45:05 If the thing that controls the house is connected back to another place that cares about how this works and the person still spends maybe 12 minutes now because they have some blinky lights to look at thinking about this per year, it's still like if it does the right thing, that's way better.

45:19 Yeah, exactly.

45:20 So what we do at WattTime is part of that.

45:22 Another project that is in some ways related is the sort of category of ways of dealing with the energy problem is called demand response.

45:34 Making the power demand be responsive to what's happening on the power grid.

45:38 And so one open source project is there's something called the OpenADR, which is Open Automated Demand Response.

45:45 And so this is a standard or like a protocol for developing implementations for smart devices that will actually turn on and off at the right times.

45:54 Oh, that's pretty neat.

45:55 Yeah.

45:55 Yeah.

45:55 So there's a few different open source implementations of this protocol.

46:00 And those are something that are a real opportunity for people to get involved and develop those more fully because it's sort of a pain if the first thing you have to do in order to be able to work with a bunch of different devices is to re-implement a standard every time.

46:15 Yeah, absolutely.

46:16 So that's a really impactful place where people could jump in.

46:20 And then another area around here, it seems to me, is if you know there's excess energy, if you could somehow store it.

46:27 And there's a lot of interesting ways that I learned that you can store energy.

46:31 Like you could pump water uphill and then let it back out and use it almost as like water power when there's less energy and things like that.

46:40 But probably the biggest one that's affecting residential areas, at least, I would say, is probably the Tesla Powerwall, right?

46:47 Yeah.

46:47 Yeah.

46:48 So that's definitely the sort of sexiest option out there right now.

46:52 Yeah, for sure.

46:53 And maybe not everyone knows what it is.

46:55 Maybe you could just tell us what is the Powerwall.

46:56 Yeah.

46:57 So that is battery that you can stick on the wall in your garage and you can buy it from Tesla and you can feel fancy because you bought the thing from Tesla even though you couldn't afford a car.

47:06 Essentially.

47:10 And it can talk to Tesla servers and turn on and off at different times that you can be.

47:15 I'm not sure exactly what features they've built out so far in terms of what different kinds of grid events it can respond to.

47:24 Right.

47:25 Maybe it is paying attention to price or maybe it's paying attention to renewable energy or not.

47:31 Something like that.

47:32 Who knows?

47:32 Yeah.

47:33 I don't have one either.

47:34 But there's a lot of possibilities it could trigger on you.

47:37 Yeah.

47:38 And so there is also other similar things where like you can get used electric vehicle batteries and use those for the same thing.

47:47 So it doesn't it's like recycling electric vehicle batteries.

47:50 There's a secondary market where you can stick them in your garage and have them be useful.

47:53 Oh, that's really interesting.

47:55 That I had not heard of.

47:56 Yeah.

47:56 Cool.

47:57 You'll have to give us some links to something like that so I can put on the show notes.

48:01 Sure.

48:01 You know, maybe some people out there listening are getting excited about like, hey, maybe I could participate in this.

48:08 There actually are a bunch of energy focused startup incubators.

48:13 Kind of like YC, but for energy, right?

48:16 Yeah.

48:16 So that's a these are great places to start if you have your own idea for an energy project or you just want to meet people who are involved and maybe get hired at an existing startup.

48:27 So there's a bunch of these in different cities.

48:29 One, two blocks from my office in Oakland, California is called Powerhouse.

48:33 There's another called Acre in New York City.

48:36 Greentown Labs in Boston.

48:38 Energy Foundry in Chicago.

48:41 1976 in D.C.

48:42 So there's ones all over the U.S. and I'm sure some in other countries, too.

48:46 Is the process pretty similar to going to Y Combinator?

48:49 You come in with an idea.

48:50 They help you grow it, turn it into a company.

48:53 But it's really just got this mission around energy.

48:56 Exactly.

48:56 Yeah.

48:57 So each one has a slightly different model, but a lot of them also have meetups.

49:01 So even if you aren't ready to make this your full time job yet, you can still go to some of their public community events and learn more about what's going on.

49:09 Okay.

49:10 That's great.

49:11 Yeah.

49:11 Too bad there's not a Portland one.

49:12 Maybe someday.

49:13 Oh, someone could start one.

49:15 That's true.

49:17 They sure could.

49:18 All right.

49:19 Well, this has been a really interesting conversation.

49:22 And before we wrap it up, let me ask you two questions I always ask of all my guests.

49:27 One is, if you're going to write some code, Python code in particular, what editor do you open up?

49:32 I like Sublime these days.

49:34 Sublime.

49:35 Very nice.

49:36 Yep.

49:37 Although in grad school, there's something called Spider with a Y.

49:40 And that's sort of like an R studio or a MATLAB clone, but for Python.

49:44 Yeah.

49:45 That one comes with the Anaconda distribution, right?

49:49 I think from the Continuum guys.

49:51 So you can get it that way.

49:52 That's cool.

49:52 Yeah.

49:52 But if I'm writing Django, I like Sublime.

49:54 Yeah.

49:55 Right.

49:55 Yeah.

49:55 If you're doing data science, maybe Spider is pretty awesome.

49:58 But if you're doing Django, yeah, Sublime.

49:59 Okay, cool.

50:01 I saw the other day there's 88,000 plus packages on PyPI.io.

50:05 Whoa.

50:06 It's crazy.

50:08 I mean, that's why it's so great to work in Python, right?

50:09 Just mostly what you need is already out there.

50:12 What one's your favorite these days?

50:14 One I heard about recently is called retrying.

50:18 So since a lot of what we've talked about is like all these different IoT data sources

50:22 and grid data sources are really flaky.

50:24 So retrying is something that makes it a lot easier to be like, okay, this rub request,

50:30 this HTTP request failed, but let's try it again.

50:32 So there's a nice little decorator that just retry.

50:35 Wow.

50:36 Can you say like retry like 10 times with some kind of like backup level or like what's it

50:41 look like?

50:41 Yeah.

50:41 Nice.

50:42 Yeah.

50:42 So you can figure out all of that.

50:43 Awesome.

50:44 If people want to get involved, what can they do?

50:47 How do they work with Wattime or what other advice or call to action can you give them?

50:52 Yeah.

50:52 So if you want to get involved in helping with PYSO, that's P-Y-I-S-O.

50:57 And you can check out our GitHub page and or just email me or chat me up on Twitter and

51:04 we can find a way to start working together.

51:06 So my personal Twitter is windsupanna and Wattime is on Twitter at Wattime.

51:12 Excellent.

51:12 Yeah.

51:13 And I'll put those in the links, of course.

51:14 Great.

51:14 And if you want to get on the waiting list for some of our smart devices, there's a

51:20 smart thermostat that you can sign up for or an electric vehicle charging station.

51:24 Or if you have like if you actually manage commercial building, we have a lot of other services that

51:29 we can hook you up with also.

51:30 That's awesome.

51:31 And it won't be just renewable energy doing good, but you'll have the warm feeling that

51:36 Python is in the back end making it go, right?

51:39 Exactly.

51:40 The real positive motivation there.

51:42 Not saving the world, just saving Python.

51:44 That's right.

51:45 Saving the world with Python.

51:46 Yep.

51:47 All right.

51:47 Well, let's leave it at that.

51:48 Anna, thanks so much for being on the show and sharing the story about what you're doing

51:53 around renewable energy.

51:54 It's inspiring.

51:55 Thank you.

51:55 This is really fun.

51:56 Yep.

51:57 You bet.

51:57 Talk to you later.

51:57 Talk to you.

51:58 Bye.

51:59 This has been another episode of Talk Python to Me.

52:03 Today's guest has been Anna Schneider, and this episode has been sponsored by Hired and

52:08 SnapCI.

52:09 Thank you both for supporting the show.

52:11 Hired wants to help you find your next big thing.

52:14 Visit Hired.com slash Talk Python to Me to get five or more offers with salary and equity

52:19 presented right up front and a special listener signing bonus of $2,000.

52:23 SnapCI is modern, continuous integration and delivery.

52:27 Build, test, and deploy your code directly from GitHub, all in your browser with debugging,

52:31 Docker, and parallels included.

52:33 Try them for free at snap.ci slash Talk Python.

52:36 Are you or a colleague trying to learn Python?

52:39 Have you tried books and videos that just left you bored by covering topics point by point?

52:44 Well, check out my online course, Python Jumpstart by Building 10 Apps at talkpython.fm

52:49 slash course to experience a more engaging way to learn Python.

52:52 And if you're looking for something a little more advanced, try my Write Pythonic Code course

52:57 at talkpython.fm/Pythonic.

53:00 You can find the links from this episode at talkpython.fm/episodes slash show slash 76.

53:07 Be sure to subscribe to the show.

53:10 Open your favorite podcatcher and search for Python.

53:12 We should be right at the top.

53:13 You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm.

53:22 Our theme music is Developers, Developers, Developers by Corey Smith, who goes by Smix.

53:28 Corey just recently started selling his tracks on iTunes, so I recommend you check it out at talkpython.fm/music.

53:34 You can browse his tracks he has for sale on iTunes and listen to the full-length version of the theme song.

53:40 This is your host, Michael Kennedy.

53:42 Thanks so much for listening.

53:43 I really appreciate it.

53:44 Smix, let's get out of here.

53:46 Outro Music.

54:08 Don't forget.

54:09 Thank you.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon