WEBVTT

00:00:00.001 --> 00:00:02.320
You often hear about architecture and software.

00:00:02.320 --> 00:00:08.080
This could be things like microservices, three-tier apps, or even the dreaded client-server mainframe app.

00:00:08.080 --> 00:00:10.480
But in this episode, we're turning this on its head.

00:00:10.480 --> 00:00:15.480
It's software and architecture and real-world construction projects with Mark Menendez.

00:00:15.480 --> 00:00:21.500
This is Talk Python To Me, episode 162, recorded April 23rd, 2018.

00:00:21.500 --> 00:00:41.880
Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.

00:00:41.880 --> 00:00:46.020
This is your host, Michael Kennedy. Follow me on Twitter, where I'm @mkennedy.

00:00:46.020 --> 00:00:49.900
Keep up with the show and listen to past episodes at talkpython.fm.

00:00:49.900 --> 00:00:52.480
And follow the show on Twitter via at Talk Python.

00:00:52.480 --> 00:00:56.820
This episode is brought to you by Linode and ActiveState.

00:00:56.820 --> 00:01:00.360
Check out what they're offering during their segments. It really helps support the show.

00:01:00.360 --> 00:01:02.160
Mark, welcome to Talk Python.

00:01:02.160 --> 00:01:03.560
Thanks, Michael. Thanks for having me.

00:01:03.560 --> 00:01:05.040
Yeah, it's really great to have you here.

00:01:05.040 --> 00:01:12.180
I'm super excited to have this conversation with you and explore an area that I really haven't spent a lot of time in,

00:01:12.180 --> 00:01:17.620
certainly in a software perspective anyway, in the whole architecture and construction building area.

00:01:17.620 --> 00:01:18.460
Should be fun, right?

00:01:18.640 --> 00:01:20.120
Yeah, definitely. Looking forward to it.

00:01:20.120 --> 00:01:21.020
Yeah, it'll be great.

00:01:21.020 --> 00:01:24.620
Of course, as usual, before we get to that, though, let's start with your story.

00:01:24.620 --> 00:01:26.100
How do you get into programming in Python?

00:01:26.100 --> 00:01:27.500
I have a background in physics.

00:01:27.500 --> 00:01:29.520
From Colorado School of Mines here in Golden, Colorado.

00:01:30.020 --> 00:01:38.960
And I just had an intro computer science course where I was taught by the venerable professor there of introductions.

00:01:38.960 --> 00:01:42.860
And he heavily pushed Python right off the bat to everybody.

00:01:42.860 --> 00:01:52.140
And it was kind of from there that I took a few more computer science courses and things like that and followed down the path to doing a lot of programming.

00:01:52.140 --> 00:01:53.020
Yeah, that's really cool.

00:01:53.020 --> 00:01:56.620
And the fact that you got to do it in Python is super nice.

00:01:56.620 --> 00:02:03.280
I mean, when I went to school, it was, you know, I had to plead to do stuff in C++.

00:02:03.280 --> 00:02:05.740
It was either you have to learn Fortran.

00:02:05.740 --> 00:02:07.580
It's the most important language you're ever going to learn.

00:02:07.580 --> 00:02:11.640
Or we think you should learn the foundations in a language that nobody knows.

00:02:11.780 --> 00:02:15.200
So it's, like, confusing to everybody equally, which was Lisp.

00:02:15.200 --> 00:02:18.140
And neither of those were, like, really amazing choices.

00:02:18.140 --> 00:02:20.680
And I never went on to, like, use too much of them, I guess.

00:02:20.680 --> 00:02:25.560
But, yeah, I think C++ and Python would have been a lot better choice.

00:02:25.560 --> 00:02:26.700
Yeah, definitely.

00:02:26.700 --> 00:02:29.440
So I had courses in both of those.

00:02:29.440 --> 00:02:34.120
So, you know, got a bit of statically typed things and got a bit of dynamically typed things.

00:02:34.120 --> 00:02:35.100
So it was good.

00:02:35.100 --> 00:02:35.800
Good background.

00:02:35.800 --> 00:02:36.720
Yeah, yeah, really nice.

00:02:36.720 --> 00:02:37.760
So what are you up to now?

00:02:37.760 --> 00:02:38.540
What do you do day to day?

00:02:38.540 --> 00:02:44.140
Yeah, so now I'm just, you know, supporting a lot of firms in architecture, engineering, and construction.

00:02:44.140 --> 00:02:51.940
And that consists of a lot of authoring requests for proposals and things like that.

00:02:51.940 --> 00:02:59.000
And trying to make sure that, you know, clients are otherwise provided for with respect to automation of workflows,

00:02:59.000 --> 00:03:04.800
more cutting-edge solutions in the AAC industry as it relates to building buildings.

00:03:05.400 --> 00:03:09.380
And how we can program to help that be done more efficiently.

00:03:09.380 --> 00:03:15.260
The company that you work for is basically, like, a software consultancy for architecture, building, industry?

00:03:15.260 --> 00:03:16.040
Yeah, that's right.

00:03:16.040 --> 00:03:19.020
So I guess I should, you know, provide some context into that a bit.

00:03:19.020 --> 00:03:21.840
So I work for, like, a firm called Evolve Lab.

00:03:21.840 --> 00:03:25.760
And so it's a building information management consulting firm.

00:03:25.760 --> 00:03:29.900
So anywhere where there's building information, that's kind of what we're consulting about.

00:03:30.260 --> 00:03:37.820
And so whether that's how people procure their building documents or how they draw buildings in three-dimensional space,

00:03:37.820 --> 00:03:41.420
how do they manage all of the data that's tied to all of those elements.

00:03:42.080 --> 00:03:46.680
And that will be the general context of anything that we consult in.

00:03:46.680 --> 00:03:50.800
And that can also relate to things outside of the building, such as, like, site.

00:03:50.800 --> 00:03:53.880
And so we'll do stuff with, like, GIS and things like that.

00:03:53.880 --> 00:03:58.440
And also related to, say, like, efficiency or, like, solar analysis.

00:03:58.440 --> 00:04:02.020
So, like, which directions the building is facing in, things like that.

00:04:02.140 --> 00:04:09.680
And it's kind of driven by two main things, which is, like, the building design and then kind of, like, the life cycle of the building.

00:04:09.680 --> 00:04:23.600
So it's, like, how do you manage all that data while building the building in electronic space to how do you design the best building possible such that you're not wasting a ton of energy after it's starting to operate in the field?

00:04:23.600 --> 00:04:23.900
I see.

00:04:23.900 --> 00:04:24.520
That's really cool.

00:04:24.520 --> 00:04:28.740
So working on, like, the LEED-certified type buildings and stuff like that.

00:04:28.740 --> 00:04:29.720
Yeah, definitely.

00:04:29.720 --> 00:04:31.120
All through that life cycle.

00:04:31.120 --> 00:04:32.760
LEED maybe is a U.S. thing.

00:04:32.760 --> 00:04:33.300
I don't know.

00:04:33.300 --> 00:04:37.140
Maybe tell – this is people from other countries might have no idea what LEED is.

00:04:37.140 --> 00:04:38.280
Maybe tell people what that is.

00:04:38.280 --> 00:04:39.720
And LEED might be international.

00:04:39.720 --> 00:04:41.940
And I'm sure it's internationally known.

00:04:41.940 --> 00:04:48.620
But it's something where you can get an accreditation stamp onto your building of, like, how energy efficient it is.

00:04:48.620 --> 00:04:53.580
So they have all these ranks of, like, gold and, you know, highest is, like, platinum, LEED platinum.

00:04:53.580 --> 00:05:01.000
And there's all these certifications behind it to making sure everyone knows what is required to get these accreditations and things like that.

00:05:01.000 --> 00:05:11.460
And so, yeah, to provide the context again, I guess as a consultancy, you're kind of saying, like, the firm will come to you and say, this is what they want to accomplish because this is what they would like.

00:05:11.600 --> 00:05:15.340
If they were, you know, searching for, like, a LEED accreditation of something in particular.

00:05:15.340 --> 00:05:26.280
And then we would go about helping them get to that point without wasting too much, like, manual hours just, like, tweaking their building design and stuff to get that stuff figured out.

00:05:26.340 --> 00:05:28.220
It can all come up a lot more organically.

00:05:28.220 --> 00:05:28.900
Yeah, that sounds cool.

00:05:28.900 --> 00:05:35.360
So you have to have maybe certain levels of efficiency for various, you know, energy retention or insulation or whatever.

00:05:35.360 --> 00:05:47.040
And do you run, like, simulations to say, here's how much we think, how much energy this building is going to use, how much sun energy it's going to capture, and how hot that'll get or how warm it'll keep it in the winter, things like that?

00:05:47.140 --> 00:05:47.800
Yeah, definitely.

00:05:47.800 --> 00:06:04.160
So there's, like, a whole bunch of different softwares that, and a lot of them will be, like, proprietary softwares that allow you to find all these different metrics through this process of just taking the building information model that you've created and then passing it over into the software and having it analyze it.

00:06:04.160 --> 00:06:24.520
And then kind of what's new in the industry and where everything's going and the reason why, like, we started talking about doing this show is that there's very much a push towards things called, like, generative design or, like, artificial intelligence in building information management where things can be possible now where you say, like, okay, let's make all these certain degrees of freedom.

00:06:24.520 --> 00:06:31.400
Like, we'll say this building can gain five levels or it can rotate on this site or, and this is what the site is.

00:06:31.540 --> 00:06:44.100
And then it's, like, how do you take those certain degrees of freedom and not only, like, move them through all those degrees of freedom but also start to analyze every single metric that can come from all of those different options.

00:06:44.100 --> 00:06:56.820
So, like, you know, to tie it back to lead, say, for one thing, for instance, is you'll have, like, for a lead accreditation, there could be something or you're this far away from, like, a light rail or something like that.

00:06:56.820 --> 00:07:08.320
And so then say your site has a bit more emphasis on it, but, like, the main entry point of the building has to be, you know, so close to this light rail that if it's rotated and the main entrance is opposite of where the light rail is, it'll be too far.

00:07:08.320 --> 00:07:10.400
And then if you move it the other way, it'll be closer.

00:07:10.400 --> 00:07:15.940
Well, like, that will be, like, one of the weighting metrics where, like, as it rotates, you see, oh, look at this.

00:07:15.940 --> 00:07:18.300
We just lost a point or two on our accreditation.

00:07:18.520 --> 00:07:20.040
But maybe you gain it somewhere else.

00:07:20.040 --> 00:07:26.160
And it's for somebody to go through and, like, rotate their building or, like, to manually draw things is just totally impossible.

00:07:26.160 --> 00:07:40.800
So you go through this, and the industry is going through this now where we're starting to manipulate models on this more abstracted level and saying, how do we generatively design these things such that a lot of these things are just taken out of the box just based on whatever you want.

00:07:40.800 --> 00:07:48.340
That makes perfect sense, but I had never thought of machine learning and AI being applied to buildings.

00:07:48.340 --> 00:07:52.000
I mean, certainly not in the building of buildings.

00:07:52.000 --> 00:07:54.260
I guess it makes a lot of sense, though, right?

00:07:54.260 --> 00:07:55.900
There's so many things you're trying to optimize.

00:07:55.900 --> 00:07:57.280
There's so many different factors.

00:07:57.280 --> 00:08:06.300
And, of course, it makes sense to just apply some kind of algorithm that can, you know, smartly answer what's the best way to arrange all these things, right?

00:08:06.300 --> 00:08:13.040
To be very specific about this, it's, like, one thing that you can apply, like, you know, AI or machine learning to in building.

00:08:13.040 --> 00:08:21.780
I mean, so machine learning and AI, like, so for machine learning, we're going to have way bigger data sets and all of this stuff, which I think is going to be in, like, a second part of what we're talking about here.

00:08:21.780 --> 00:08:27.820
But so, like, for artificial intelligence, if you take something even as simple as, like, A star algorithm, it's like, well, how could you use that?

00:08:27.960 --> 00:08:30.980
Like, and, you know, like, pathfinding algorithms and things like that.

00:08:30.980 --> 00:08:37.640
Well, so if you, like, you know, you look above your head, like, anywhere you are in a building, there's, like, ducks and there's all these supplies and stuff.

00:08:37.640 --> 00:08:39.400
There's air coming out of the ceiling, you know?

00:08:39.400 --> 00:08:40.880
It's like the building is breathing.

00:08:40.880 --> 00:08:44.540
But there's also, like, water and all of this stuff being supplied to sinks and things.

00:08:44.540 --> 00:08:48.540
So it's like all of these pipes and all of these ducks and stuff are all going through the ceiling.

00:08:48.540 --> 00:08:50.300
They're all flying around all over the place.

00:08:50.300 --> 00:08:59.160
And so if you have a pathfinding algorithm and you have all of your ducks modeled already, then, and you want to say, hey, I want to model this pipe and I want to start it here and I want it to end over here.

00:08:59.160 --> 00:09:08.360
Well, you know, you can manually, like, go through and you can rotate your model, like, 50 times and, like, look and say, okay, I got to go up a little bit over here to get over this duct.

00:09:08.360 --> 00:09:17.700
Because if it's clashing through it, and so, like, yeah, to take a step back even, it's, like, buildings are being built before they're actually built in the real world now.

00:09:17.800 --> 00:09:22.440
Like, almost fully, that's what every big general contractor is on it.

00:09:22.440 --> 00:09:30.800
It's, like, the whole building to, like, a T, you know, to, like, within inches is completely modeled out on the computer before you're even in the field at all.

00:09:30.800 --> 00:09:33.080
And so this is called clash detection.

00:09:33.080 --> 00:09:42.260
And so anytime there's, like, a pipe that's clashing with a duct, it alerts you and you say, okay, well, hey, we have to move this pipe up or down so that it's not going to be in the way of the duct.

00:09:42.260 --> 00:09:50.700
And so that before you get out into the field, you know that you have to model or you have to order these extra pieces of pipe because you know you're elevating over this certain duct.

00:09:50.700 --> 00:10:02.860
And so to bring AI back into it, it's, like, well, you know, you can have more, like, AI routines that are modeling out your pipe and making sure you can get most efficiently from one point to the next while avoiding all these certain obstacles.

00:10:02.860 --> 00:10:12.600
Right, maybe, like, going down an entirely different wall and completely doing something different down at the bottom, like, actually opens up something in the rest of the building that makes it way more efficient or something, right?

00:10:12.600 --> 00:10:15.760
Yeah, and for humans to do it, it's, like, so difficult.

00:10:15.760 --> 00:10:19.360
Like, to model all of it's just so time-consuming.

00:10:19.360 --> 00:10:20.860
That's really fascinating.

00:10:20.860 --> 00:10:23.560
I mean, just, I could totally see how it just all applies now.

00:10:23.560 --> 00:10:29.240
But when I think of buildings being built, I think of, I do think of, like, CAD software and stuff.

00:10:29.240 --> 00:10:34.980
But I feel like, I just imagine, like, draftsmen sort of sitting there just doing it, right?

00:10:34.980 --> 00:10:37.100
No, we've got to move this here and draw that line there.

00:10:37.100 --> 00:10:39.620
And, yeah, it's quite fascinating.

00:10:39.620 --> 00:10:45.360
So it's probably a good time to start talking about some of the Python code that you guys use.

00:10:45.360 --> 00:10:48.400
So maybe give us a quick flyover of the type of software you're using for this.

00:10:48.620 --> 00:10:52.360
There's a certain amount of it that's now being done on the web development side.

00:10:52.360 --> 00:11:01.880
And so this is going to entail, like, I don't know, just some framework, you know, like Flask or Django or something, where we can quickly and easily set up databases and dashboards.

00:11:01.880 --> 00:11:15.120
Because as you start to develop all of these models, there's a lot of things where, say, like, for even one wall, for instance, you have all of this, like, just, you know, you have insulation, you have, like, the paint that's going to be applied to all this data.

00:11:15.120 --> 00:11:18.960
And so all this data wants to be saved now back to a database.

00:11:18.960 --> 00:11:22.960
And originally, it was just kind of dumped at the end of every project.

00:11:22.960 --> 00:11:23.580
You just save it.

00:11:23.580 --> 00:11:24.540
It's just, you know, gone.

00:11:24.540 --> 00:11:25.940
And then you move to your next project.

00:11:25.940 --> 00:11:28.980
And really, no, there's no hysteresis about it all.

00:11:28.980 --> 00:11:30.180
You know, there's no learning at all.

00:11:30.180 --> 00:11:30.860
People just come.

00:11:30.860 --> 00:11:31.660
They build the building.

00:11:31.660 --> 00:11:39.880
And if the owner approves and the city approves, who needs to keep track of what paint was used or what, you know, material was used here, right?

00:11:39.880 --> 00:11:42.000
Other than for, like, the main structural bits, right?

00:11:42.000 --> 00:11:43.020
Yeah, more or less.

00:11:43.020 --> 00:11:44.140
You know, it's just like that.

00:11:44.140 --> 00:11:46.340
But now if it's in software, right, you can just save it.

00:11:46.340 --> 00:11:47.160
It's easy.

00:11:47.160 --> 00:11:47.500
Yes.

00:11:47.500 --> 00:11:49.620
And so it's about moving to the cloud now.

00:11:49.620 --> 00:11:53.540
You know, it's doing all of these things that the software development industry has been doing.

00:11:53.540 --> 00:11:55.700
But now AEC is now catching up.

00:11:55.700 --> 00:12:06.680
And so it's about building dashboards, building just ways of analyzing your data in the cloud to harness, you know, the power of cloud computing, essentially, and things like this.

00:12:06.680 --> 00:12:21.440
So the biggest firms we've sent out, personally, like RFP or proposals and things for things such as building out big frameworks and decide making decisions on if you want to use Azure or something or like if you want to just have all of your own hardware.

00:12:21.700 --> 00:12:26.740
But essentially, just providing value through building out like a Flask app or a Django.

00:12:26.740 --> 00:12:31.480
Yeah, mostly like, you know, something that's going to be more minimal that you'll be able to keep using.

00:12:31.480 --> 00:12:39.320
And on one side, that's what the Python looks like is very much just web development kind of stuff, you know, setting up all your database, doing all this stuff.

00:12:39.320 --> 00:12:45.340
And then on the other side is more related to in-process information management.

00:12:45.340 --> 00:12:57.760
So as you're building the building, you have to do certain things, you know, you have to like create views on certain angles and things like that where people want to see like all the people who are the building inspectors and whoever's giving you your permits.

00:12:57.760 --> 00:13:07.540
They want to see and make sure that you're doing all of your like requirements for, you know, making sure maybe you have like a handicap stall in the bathroom or something, you know, like they want to make sure you have all of this stuff.

00:13:07.540 --> 00:13:11.540
And so on this side of it, the Python begins to look very different.

00:13:11.540 --> 00:13:16.460
And in some ways, it's very script like and then other ways, it can be more of like a whole program.

00:13:16.460 --> 00:13:33.700
I think this is a good spot to kind of say like that recently there's been these things in the AC industry that have led to the ability to grow and to gain like, you know, computational designers or computational specialists where they'll be using things like Python all the time.

00:13:33.700 --> 00:13:40.240
And so there's like visual programming languages and stuff where you can kind of drop nodes on the canvas, connect them together and do all this stuff.

00:13:40.240 --> 00:13:42.360
And that's all well and good right off the bat.

00:13:42.360 --> 00:13:50.540
But you'll very quickly need to like move to textual programming because it'll just they can't wrap everything for you for use in visual programming.

00:13:50.540 --> 00:13:52.720
You really got to harness like that API yourself.

00:13:52.840 --> 00:13:59.640
And so the Python there is in a couple different avenues and it's related to managing your building information.

00:13:59.640 --> 00:14:10.520
And so it's going to be like rename all of these walls like something, you know, or automatically tell me all of the room dimensions of all of the rooms that are in this whole entire building and print it out to a report.

00:14:10.760 --> 00:14:19.160
You know, all these kinds of things, they'll give you very small like you'll develop these very small like Python scripts where you'll be able to like run them and they'll be able to do this stuff.

00:14:19.160 --> 00:14:19.560
That's cool.

00:14:19.560 --> 00:14:24.500
Like what is the surface area of all the interior walls or something like that possibly.

00:14:24.500 --> 00:14:25.060
Right.

00:14:25.060 --> 00:14:25.520
Yeah.

00:14:25.520 --> 00:14:25.860
Yeah.

00:14:25.860 --> 00:14:27.200
Like how much paint do I need?

00:14:27.200 --> 00:14:27.520
Right.

00:14:27.520 --> 00:14:29.040
Well, what how many walls you have?

00:14:29.040 --> 00:14:29.980
Totally, man.

00:14:29.980 --> 00:14:31.440
And they're called like takeoffs.

00:14:31.440 --> 00:14:32.700
You know, it's called a takeoff.

00:14:32.700 --> 00:14:39.680
It's just like the GC is going to get a model from like the architect because the architect designs it and then he passes it over to the guys who are going to build it.

00:14:39.680 --> 00:14:44.020
And those guys that are going to build it are like this is very real cost to us.

00:14:44.020 --> 00:14:50.220
You know, we can switch from to the next and save, you know, thousands of dollars and it barely changes anything.

00:14:50.220 --> 00:14:51.140
We want to know that.

00:14:51.140 --> 00:14:59.920
And in order to find all of those surface areas of all those interior walls, you can't go clicking on every single wall and see what the material is in the area and like write it down.

00:14:59.920 --> 00:15:06.300
And people do that, you know, and that's the scary thing is people do manual takeoffs.

00:15:06.300 --> 00:15:08.280
And that's what we're here for.

00:15:08.280 --> 00:15:10.960
You know, we are like going to support that.

00:15:10.960 --> 00:15:11.300
Yeah.

00:15:11.300 --> 00:15:19.440
It reminds me of a company I worked for a long time ago that had a bunch of scientists working there, PhD, master's type folks.

00:15:19.440 --> 00:15:25.700
And they had a lot of these grad students that would come and do a bunch of manual things, really like quite manual.

00:15:25.880 --> 00:15:34.640
And it's like, you know, over time, we would take some major thing that they were doing and we'd re-implement that in software and go, I know it took you a day.

00:15:34.640 --> 00:15:38.700
Now you push the button and it's like 10 minutes or one minute or something like that.

00:15:38.700 --> 00:15:39.640
And then you have your answer.

00:15:39.640 --> 00:15:48.260
And they always said, if you do this again, you may be like programming us out of a job, but they just got more interesting jobs every single time.

00:15:48.260 --> 00:15:48.520
Right.

00:15:48.520 --> 00:15:51.760
It was just like these sort of super tedious manual things.

00:15:51.760 --> 00:15:55.620
Like you'll find a better use for your time if you don't have to do them.

00:15:55.620 --> 00:15:55.860
Right.

00:15:55.860 --> 00:15:56.360
Oh, yeah.

00:15:56.360 --> 00:15:59.800
It kind of blows my mind that people like will suffer through it, though.

00:15:59.800 --> 00:16:00.060
Right.

00:16:00.060 --> 00:16:01.900
They'll be like, I can't really script Excel.

00:16:02.060 --> 00:16:06.380
So I'm just going to count these up, all 2,000 of them, you know?

00:16:06.380 --> 00:16:07.520
Yeah.

00:16:07.520 --> 00:16:08.460
Pretty interesting.

00:16:08.460 --> 00:16:09.140
All right.

00:16:09.140 --> 00:16:17.220
So one of my first questions that I want to ask is how many gigabytes, let's suppose I have a 30-story building, standard office sort of thing.

00:16:17.220 --> 00:16:19.300
How many gigabytes is that?

00:16:19.300 --> 00:16:24.500
And like all of this data you're collecting and like all the different things that's going on, like, is it pretty huge?

00:16:24.900 --> 00:16:31.500
Sometimes you have things like that where you have like a 30-story building and sometimes the 30-story buildings are able to be compressed a lot better.

00:16:31.500 --> 00:16:33.520
So your file size isn't really that big.

00:16:33.520 --> 00:16:44.040
But you can almost have like, I don't even know, like it's such a crazy question because there's like all of this data that you never really see like in the background that if you actually harvest it.

00:16:44.040 --> 00:16:47.540
Like you sort of all the stuff that you really kind of could put together about it.

00:16:47.540 --> 00:16:49.820
You could go into terabytes, like definitely, you know?

00:16:49.820 --> 00:16:55.360
Because if someone models – because like one project we're working on, for instance, is like a theme park in China.

00:16:55.360 --> 00:16:59.140
And so there's like these crazy slides and mountains and stuff.

00:16:59.140 --> 00:17:04.300
And it's like if you store all of those – like all of that data, you're storing every like vertex of the mountain.

00:17:04.300 --> 00:17:06.340
You're storing like everything, you know?

00:17:06.400 --> 00:17:13.240
Like every time and it can easily – but then, you know, even like the interior wall example that we had earlier, it's like you're storing the paint.

00:17:13.240 --> 00:17:18.040
But, you know, whatever, the paint's like one small fraction of like what is that wall, you know?

00:17:18.040 --> 00:17:19.760
You're not even doing half of it.

00:17:19.760 --> 00:17:22.640
So it can stretch from very, very small shops.

00:17:22.640 --> 00:17:28.320
Like one-person firms can have like a database of, say, 50 megabytes or something like that.

00:17:28.320 --> 00:17:32.280
And then you can have like these big, big, big shops that are doing massive projects.

00:17:32.280 --> 00:17:36.040
And there can be like campuses and things like that.

00:17:36.120 --> 00:17:41.300
So like they'll have like six or seven different buildings and they all link together in a model and things like that.

00:17:41.300 --> 00:17:49.400
And that can easily stretch to, you know, a terabyte or more where you're – and it just all depends on how much data you really want from it too, you know?

00:17:49.400 --> 00:17:53.620
If it's something where it's just geometry, it'll be like much less than that.

00:17:53.620 --> 00:17:56.260
But if you want all of the info, it can be more.

00:17:56.260 --> 00:17:57.240
Pretty interesting.

00:17:57.240 --> 00:18:00.440
You talked about Azure and the cloud a little bit.

00:18:00.440 --> 00:18:03.100
So where are you storing this data?

00:18:03.100 --> 00:18:04.280
Like how do you store it?

00:18:04.640 --> 00:18:06.800
Is it in like a relational database?

00:18:06.800 --> 00:18:08.440
Is it flat files and blob storage?

00:18:08.440 --> 00:18:09.600
Some combination?

00:18:09.600 --> 00:18:10.760
Definitely a combination.

00:18:10.760 --> 00:18:11.520
Yeah, yeah.

00:18:11.520 --> 00:18:15.640
Because with, you know, with the blob storage, you're going to definitely need it.

00:18:15.880 --> 00:18:25.060
Because a lot of times there's all sorts of documentation that's held about the building outside of just like a single file or something like that.

00:18:25.060 --> 00:18:34.760
And so – and this could be information related to like warranty information for equipment that the building owner is going to want like 10 years down the road or, you know, something like that.

00:18:35.000 --> 00:18:38.400
But then there could also be information that can be easily stored in a database.

00:18:38.400 --> 00:18:46.940
Like if you're tracking – like so an architecture firm came to us and said we want to see what our users are clicking and picking when they're using this software.

00:18:47.440 --> 00:18:53.260
Because if you have everyone using – and all of their charts show that they're using all of these same keyboard shortcuts and stuff.

00:18:53.260 --> 00:18:57.980
And then you have one person who's always using like some random ones that no one else is ever using.

00:18:57.980 --> 00:19:05.280
Then you – it's very easy to say, well, this guy's probably spending a lot of time fiddling around like just being confused.

00:19:05.280 --> 00:19:08.500
You know, so you can be like, okay, let's get him like someone to go in there and train him.

00:19:08.500 --> 00:19:13.080
And so there's data like that where it's very much can be tied to like Postgres or something.

00:19:13.080 --> 00:19:16.700
And you can just set up like your user and, you know, some SQL database.

00:19:16.700 --> 00:19:20.920
And it says user and, you know, there's these functions you want to track.

00:19:20.920 --> 00:19:23.820
And it just updates that database a bunch.

00:19:24.020 --> 00:19:33.020
So a bunch of everything like you can do SQL databases and obviously there's a lot in terms of blob storage that you could need down the road.

00:19:33.020 --> 00:19:33.720
I can imagine.

00:19:33.720 --> 00:19:36.500
So that's some of it.

00:19:36.500 --> 00:19:39.600
The other part is the actual creation of the building.

00:19:39.600 --> 00:19:46.560
Like you talked about the computational stuff, people helping actually the design of the building, right?

00:19:46.560 --> 00:19:48.540
Like these ML models and stuff.

00:19:48.540 --> 00:19:49.760
What's the story of that?

00:19:49.920 --> 00:19:54.380
It is awfully related to this like whole degrees of freedom that I was talking about earlier.

00:19:54.380 --> 00:19:59.460
How like you can have just a couple things that have a lot of degrees or that have just like a couple degrees of freedom.

00:19:59.460 --> 00:20:06.020
And that quickly just like compounds to just something, you know, exponentially difficult for you to do manually at all.

00:20:06.020 --> 00:20:12.940
And so, for instance, there is like we did a project where it was like a stadium kind of design.

00:20:12.940 --> 00:20:20.880
And there's just like this facade or just exterior of the building that had all of these like panels on them that had like aperture.

00:20:20.880 --> 00:20:25.500
So if the aperture was greater, you know, like a camera, it would let more sun in.

00:20:25.500 --> 00:20:27.480
And if it was less, it would let less sun in.

00:20:27.480 --> 00:20:36.540
And so you take like just the surface of the building and you can map like a heat map across it of like where the sun is in some part of the day.

00:20:36.540 --> 00:20:44.540
And then you know how all of those apertures need to be opened and closed such that you can still achieve this certain sunlight percentage that you want.

00:20:44.540 --> 00:20:49.160
And so, you know, you can kind of visualize it in your mind as the sun crosses the sky.

00:20:49.160 --> 00:20:51.180
All of these apertures are going to shift there.

00:20:51.180 --> 00:20:52.320
Some of them are going to open.

00:20:52.320 --> 00:20:53.160
Some are going to close.

00:20:53.160 --> 00:20:56.680
And it's going to happen across the building like over the entire course of the day.

00:20:56.680 --> 00:21:00.060
So that's something where it's like the combinations are endless.

00:21:00.060 --> 00:21:02.020
Like you can never do it manually.

00:21:02.020 --> 00:21:10.300
But to talk directly more about like the machine learning aspect of it, like things have been being done where you can take everything from like this abstracted sense.

00:21:10.300 --> 00:21:19.300
So if you think of like an electrical system of a building, you have like these big transformers outside of the building that really they receive all of the power and then they'll send the power to the building.

00:21:19.300 --> 00:21:22.760
So they get it straight from the utility plant and then that goes straight to the building.

00:21:23.060 --> 00:21:31.160
And so you can think of everything as just in terms of these trees or these are hierarchies where it's like the first part of the tree is just the transformer.

00:21:31.160 --> 00:21:34.600
And then that breaks off into these and that breaks off into this and that breaks off in this.

00:21:34.600 --> 00:21:39.980
So every building has a tree behind it, just some hierarchy of electrical systems.

00:21:39.980 --> 00:21:42.840
And so now you can start to analyze these trees.

00:21:42.840 --> 00:21:44.000
Probably has that for water.

00:21:44.000 --> 00:21:45.600
It has that for ducks.

00:21:45.600 --> 00:21:47.060
It has that for all sorts of stuff, right?

00:21:47.060 --> 00:21:48.400
Totally for everything.

00:21:48.400 --> 00:21:54.960
And in architecture, even there's stuff where it's like there is a level and then within that level, there are departments.

00:21:54.960 --> 00:21:57.140
And then within that department, there are rooms.

00:21:57.140 --> 00:22:02.580
And then within those rooms, there's like, you know, something else, maybe like cubicles or something like that.

00:22:02.860 --> 00:22:04.540
And so there's trees for everything.

00:22:04.540 --> 00:22:22.900
And trees are very well studied for mathematicians and stuff like that and computer scientists that we think that's really the gateway to harnessing fully like machine learning or something is how do you start to just develop these trees, study these trees and get useful results from them through a machine learning model.

00:22:22.900 --> 00:22:23.540
Yeah.

00:22:23.640 --> 00:22:26.400
What machine learning frameworks do you guys have in play?

00:22:26.400 --> 00:22:29.300
Us, ourselves, we just mess around with scikit-learn quite a bit.

00:22:29.300 --> 00:22:32.600
But other than that, we're not really doing that much with it.

00:22:32.600 --> 00:22:38.880
But we have, you know, friendly competitors and things like that that are, you know, taking that research to a next level for sure.

00:22:38.880 --> 00:22:40.100
It sounds really fascinating.

00:22:40.100 --> 00:22:45.340
So I'm sure that in 10 years, we'll see this in an entirely different place.

00:22:47.420 --> 00:22:50.260
This portion of Talk Python To Me is brought to you by Linode.

00:22:50.260 --> 00:22:54.200
Are you looking for bulletproof hosting that's fast, simple, and incredibly affordable?

00:22:54.200 --> 00:22:59.140
Look past that bookstore and check out Linode at talkpython.fm/Linode.

00:22:59.140 --> 00:23:01.040
That's L-I-N-O-D-E.

00:23:01.040 --> 00:23:05.520
Plans start at just $5 a month for a dedicated server with a gig of RAM.

00:23:05.520 --> 00:23:08.040
They have 10 data centers across the globe.

00:23:08.040 --> 00:23:10.560
So no matter where you are, there's a data center near you.

00:23:10.560 --> 00:23:15.800
Whether you want to run your Python web app, host a private Git server or file server,

00:23:15.800 --> 00:23:21.620
you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network,

00:23:21.620 --> 00:23:25.920
24-7 friendly support, even on holidays, and a seven-day money-back guarantee.

00:23:25.920 --> 00:23:28.240
Do you need a little help with your infrastructure?

00:23:28.240 --> 00:23:34.480
They even offer professional services to help you get started with architecture, migrations, and more.

00:23:34.480 --> 00:23:37.580
Get a dedicated server for free for the next four months.

00:23:37.580 --> 00:23:40.400
Just visit talkpython.fm/Linode.

00:23:42.020 --> 00:23:48.380
One of the things that I want to touch on is maybe digging into specifically some of the Python packages and stuff that you're using.

00:23:48.900 --> 00:23:54.200
But before I do, one of the questions I kind of want to more broadly touch on is, you know,

00:23:54.200 --> 00:24:02.660
in certainly the other sort of data analysis, creational spaces, Python has been really moving in on it in the last five years,

00:24:02.660 --> 00:24:04.720
you know, since 2010, 2012, and so on.

00:24:04.720 --> 00:24:07.180
Is that sort of the same in the industry here?

00:24:07.180 --> 00:24:12.600
Like, is Python kind of a relative newcomer, or has it been around from almost the beginning of Python?

00:24:12.600 --> 00:24:18.200
So originally, like, AutoCAD, like all this 2D drafting where you're just drawing lines and stuff,

00:24:18.200 --> 00:24:22.040
a lot of the routines were in Lisp.

00:24:22.040 --> 00:24:24.160
And so everything was, like, done in Lisp.

00:24:24.160 --> 00:24:26.280
And, you know, very few people did it and things like that.

00:24:26.280 --> 00:24:30.660
And then as it transitioned to a new software and had new API calls and everything like that,

00:24:30.660 --> 00:24:32.220
it was mainly C# bent.

00:24:32.220 --> 00:24:35.320
And so all of the C#, you know, was done like that.

00:24:35.320 --> 00:24:40.380
And then, lastly, all of these C# API calls were just abstracted to Iron Python.

00:24:40.980 --> 00:24:46.020
And so everyone was able to then just use Python instead of having to use C#.

00:24:46.020 --> 00:24:47.340
You know, they could use all of these.

00:24:47.340 --> 00:24:48.740
They don't have to worry about compiling.

00:24:48.740 --> 00:24:49.960
They don't have to worry about any of that.

00:24:49.960 --> 00:24:54.260
They can just write up these little scripts and quickly, quickly test them over and over again

00:24:54.260 --> 00:24:56.380
and making sure they work good, yeah.

00:24:56.380 --> 00:24:57.160
That's pretty interesting.

00:24:57.160 --> 00:25:03.660
So the extension, the primary extension API or whatever for the Autodesk tooling was in .NET and C#?

00:25:03.660 --> 00:25:04.100
That's right.

00:25:04.100 --> 00:25:04.380
Right.

00:25:04.380 --> 00:25:11.640
And then either Autodesk or someone outside it somehow integrated Iron Python into this mix.

00:25:11.640 --> 00:25:14.580
And now that just sort of cracked it open for the Python space, huh?

00:25:14.580 --> 00:25:15.440
Yeah, definitely.

00:25:15.440 --> 00:25:20.700
And it's called like the, I mean, the Autodesk software is called Revit, just in case anyone wants to know.

00:25:20.700 --> 00:25:21.800
And it's free for students.

00:25:21.800 --> 00:25:24.440
And there's the Revit Python shell.

00:25:25.220 --> 00:25:32.420
And that's kind of like the first thing where, you know, you can get this little terminal and you can start to do little shell-based things with Python.

00:25:32.420 --> 00:25:32.840
That's cool.

00:25:32.840 --> 00:25:37.260
Do you have like a GUI window up and then as you type in it, it like is interacting with it, that type of thing?

00:25:37.260 --> 00:25:38.140
Oh, yeah, for sure.

00:25:38.140 --> 00:25:39.820
And it's got all the cool stuff, right?

00:25:39.820 --> 00:25:44.340
Like autocomplete and all these things and syntax highlighting and stuff like that.

00:25:44.540 --> 00:25:49.600
So now where it kind of is, is I use like Visual Studio Code and I can just have that up.

00:25:49.600 --> 00:25:56.340
And then I'll have kind of, you know, Revit on the other side and I can edit my code and I just save it and I can run it.

00:25:56.340 --> 00:25:59.880
And then I could just keep doing that over and over again in that kind of iterative way.

00:25:59.880 --> 00:26:00.840
Yeah, that's pretty fascinating.

00:26:00.840 --> 00:26:07.880
I haven't seen a ton of uses of Iron Python, mostly because I think a lot of the folks I talk to are doing like web development stuff.

00:26:07.880 --> 00:26:13.180
And at that level, you're just kind of like, you're not really adapting some other massive application that's got an API.

00:26:13.440 --> 00:26:15.440
You're just like writing from scratch or whatever.

00:26:15.440 --> 00:26:16.980
But that's cool.

00:26:16.980 --> 00:26:18.280
So how do you find it works?

00:26:18.280 --> 00:26:19.620
Does it work pretty seamless for you?

00:26:19.620 --> 00:26:20.360
Yeah, definitely.

00:26:20.360 --> 00:26:25.960
I mean, there's a couple things where like you wish were better supported, but it's kind of, you know, Iron Python stuff.

00:26:25.960 --> 00:26:31.900
Like, so like if you want to use NumPy, either it's like really difficult or, you know, it's just not supported at all.

00:26:31.900 --> 00:26:37.640
And things like that, you know, are kind of like you got to make sure that you're working within the Iron Python ecosystem,

00:26:37.640 --> 00:26:41.600
which is obviously like a lot different than the Python ecosystem in some ways,

00:26:42.100 --> 00:26:45.260
especially how it integrates into these sort of API calls.

00:26:45.260 --> 00:26:46.340
It sounds pretty interesting, though.

00:26:46.340 --> 00:26:53.060
Have you looked at Python.net, which is like a newer project that's sort of trying to achieve the same goals,

00:26:53.060 --> 00:27:00.560
but I think possibly reverses the situation where like Python is sort of controlling .net rather than Python embedded into .net?

00:27:00.660 --> 00:27:01.180
I haven't.

00:27:01.180 --> 00:27:01.460
No.

00:27:01.460 --> 00:27:02.720
Thanks for the recommendation, though.

00:27:02.720 --> 00:27:03.500
It sounds interesting.

00:27:03.500 --> 00:27:04.000
Yeah.

00:27:04.160 --> 00:27:11.040
I don't know if it works in terms of the integration, but it certainly is a pretty, it looks like a pretty interesting thing.

00:27:11.040 --> 00:27:18.120
And I think it's sort of a, not a competitor, but sort of inspired by Iron Python not getting as much love as it could have.

00:27:18.120 --> 00:27:19.080
So that's pretty cool.

00:27:19.080 --> 00:27:20.060
All right.

00:27:20.060 --> 00:27:25.140
So what are some of the other pieces of software there that you're working with in terms of the Python ones?

00:27:25.140 --> 00:27:27.360
You have something called, what is it called?

00:27:27.360 --> 00:27:28.580
Py OCC.

00:27:28.580 --> 00:27:30.540
What does Py OCC stand for?

00:27:30.540 --> 00:27:31.600
Python OCC.

00:27:31.600 --> 00:27:37.060
Python OCC is a wrapper on top of geometry library.

00:27:37.220 --> 00:27:39.360
That's, I think, the easiest way to say it.

00:27:39.360 --> 00:27:45.880
And so there, so essentially like within the building space, you know, you need lots of different ways of generating geometric objects.

00:27:45.880 --> 00:27:48.260
Because at the end of the day, that's what buildings are.

00:27:48.260 --> 00:27:50.220
Just a whole bunch of geometric objects.

00:27:50.220 --> 00:27:59.340
And so with things like Python OCC, there is a good initiative set there for taking a lot of these open source building formats.

00:27:59.620 --> 00:28:06.760
And so that will be things like, so it's called like IFC, like interchanging, you know, file format, something like that.

00:28:06.760 --> 00:28:18.100
And essentially Python OCC and, you know, what the initiative was, was allowing people to easily take these traditionally proprietary models and to bring them into an open source space.

00:28:18.100 --> 00:28:29.020
And so Python OCC gives you the ability to, you know, a lot like 3.js or something where you're going to be able to generate geometric objects, you know, with these certain high level abstracted calls.

00:28:29.600 --> 00:28:32.540
And right, Python OCC is one and then Shapely is the other.

00:28:32.540 --> 00:28:53.380
And these are kind of both packages where they're just, they're really bent on not only giving you the geometry primitives, but also giving you more high level access to selecting things and storing information onto them and things like that through, you know, like different attribute API calls and stuff like that.

00:28:53.380 --> 00:29:01.380
So one thing with Python OCC that was recently done, not by Evolve Lab, but another firm is like a tower generator tool.

00:29:01.380 --> 00:29:10.540
And so you're able to quickly like generate all of these towers like through a web dashboard and just, you know, kind of like what we were talking about earlier, but on a very, very basic level.

00:29:10.820 --> 00:29:13.200
And so this stuff is all done through Python OCC.

00:29:13.200 --> 00:29:32.380
And if people want to get into the AAC space in a very Python driven way, this could be a very good entry point because it does already have some initiative in it that allows you to start working with building information models and to start harnessing that data through the Python ecosystem.

00:29:32.760 --> 00:29:33.320
Yeah, it's really cool.

00:29:33.320 --> 00:29:40.720
So you can create these 3D meshes or 2D splines or whatever, depending on Shapely or Python OCC.

00:29:40.720 --> 00:29:49.960
One thing that's pretty interesting about Python OCC is it is sort of, it'll look at what GUI platform is available and adapt to it.

00:29:50.140 --> 00:30:06.000
So it says, if you use the GUI part, the library automatically detects whether Qt via PyQt or WXPython or WX or Python XLib are installed and it'll just render to the right one, which is, that's, that's pretty wild.

00:30:06.000 --> 00:30:08.800
That'd be written against three GUI platforms and just work.

00:30:08.800 --> 00:30:16.520
It probably attributes a lot to like people that will really harness 3D CAD from like, they're not really that strong of a technical background.

00:30:17.260 --> 00:30:26.040
Things like that, they probably had a big obstacle themselves when developing Python OCC that required them to try to push something out to handle that for people.

00:30:26.040 --> 00:30:26.780
That's pretty cool.

00:30:26.780 --> 00:30:31.100
It's just a neat example of like, well, you don't have to have this framework, I always can have that one.

00:30:31.100 --> 00:30:35.240
So another thing that you talked about is this visual programming story.

00:30:35.240 --> 00:30:37.500
There's something called Grasshopper.

00:30:37.500 --> 00:30:39.160
What's the story with Grasshopper?

00:30:39.160 --> 00:30:40.040
What is that used for?

00:30:40.040 --> 00:30:41.280
What is it first?

00:30:41.280 --> 00:30:44.220
Yeah, so Grasshopper is a visual programming language.

00:30:44.220 --> 00:30:55.160
So, you know, similar to things like LabVIEW, you know, you drop all these little nodes on the canvas and then you can tie them together with little strings and you say, you know, this is the way that the data flows.

00:30:55.160 --> 00:30:57.920
You know, it always typically flows like left to right or something like that.

00:30:57.920 --> 00:31:02.720
But so you can take like this list and you can send it across and you can add to it all these other things.

00:31:02.720 --> 00:31:08.560
And all you do is you put down like a list generator node and a plus node, you know, and it gives you that option.

00:31:08.560 --> 00:31:11.100
Like you don't need to know textual programming to do it.

00:31:11.100 --> 00:31:16.520
And so for Grasshopper, Grasshopper is written on top of a 3D modeling program called Rhino.

00:31:16.520 --> 00:31:20.240
What's cool about these programs is they're free for students.

00:31:20.240 --> 00:31:24.140
And Rhino has like a very generous like trial thing, too.

00:31:24.140 --> 00:31:26.360
So everyone can kind of dig into it a little bit.

00:31:26.360 --> 00:31:31.240
But it's a visual programming environment that's very bent on computational design.

00:31:31.240 --> 00:31:40.380
And so this is kind of a big thing now is like how do you start to computationally design these buildings where before, you know, like we said, everything was a lot more manual.

00:31:40.380 --> 00:31:43.120
Now it's a lot more driven by computation.

00:31:43.120 --> 00:31:44.980
Is that for like the surface of the building?

00:31:44.980 --> 00:31:50.800
I want it like rounded like this or whatever or what kind of part would you be computing that you're talking about?

00:31:50.800 --> 00:31:51.400
Definitely.

00:31:51.400 --> 00:31:57.400
So this is, again, like what I'm talking about where it says like computational design versus computational like information management.

00:31:58.060 --> 00:32:05.980
And so the design part is going to be like the exterior of the building, how it's all like shaped and how it looks and all this stuff to achieve all these cool things.

00:32:05.980 --> 00:32:14.160
You know, you can't it's hard to kind of like rotate your camera in the modeling program to like this certain angle and then like draw this line like in this certain way.

00:32:14.160 --> 00:32:17.980
And then like, you know, like everything's like all like really weirdly bent.

00:32:17.980 --> 00:32:26.180
And so through computation, you can kind of just drag a couple of nodes on the canvas and say, like, this is my start point, this is my end point, draw a spline through it.

00:32:26.180 --> 00:32:30.540
Or, you know, these are all the weighted points in the middle and draw a spline through it as best you can.

00:32:30.540 --> 00:32:36.660
And then and then now you have just like these slider bars that you can just shift left and right and it moves your points back and forth.

00:32:36.660 --> 00:32:41.880
And now your spline's kind of adapting in these cool ways to make like a cool building design.

00:32:41.880 --> 00:32:42.220
Right.

00:32:42.220 --> 00:32:50.720
So that doesn't sound like there's any Python involved or any other textual programming language, but they seem to have the grasshopper Python enhancement.

00:32:50.720 --> 00:32:52.700
So what's the tie in with Python to this?

00:32:52.700 --> 00:32:56.440
They do have some textual programming because, again, these things are going to be really limited.

00:32:56.440 --> 00:33:05.120
Like they're not really limited, but essentially anytime you want to just drag and drop a node, like there has to be someone making that node for you.

00:33:05.120 --> 00:33:10.960
Like there has to be someone that like takes that API call or whatever it happens to be and abstracting it for you.

00:33:10.960 --> 00:33:15.020
And so that's where APIs yourself.

00:33:15.020 --> 00:33:18.880
And so, you know, some of it's with Visual Basic, actually, and then some of it's with Python.

00:33:18.880 --> 00:33:24.820
And so you can go ahead and drop a node on the canvas and this is your Python node and you double click it or you otherwise open it.

00:33:24.820 --> 00:33:29.920
And then now you just have like this embedded editor or IDE.

00:33:29.920 --> 00:33:30.360
I see.

00:33:30.360 --> 00:33:33.380
You just plug in a function somewhere visually and call this function.

00:33:33.380 --> 00:33:35.160
A little block won't do it, huh?

00:33:35.160 --> 00:33:35.460
Yeah.

00:33:35.460 --> 00:33:37.140
At the end of the day, it's still a little block.

00:33:37.140 --> 00:33:44.740
But if you double click this block, it can be like this massive, you know, program within it that gets a bunch of data and spits a bunch of data out.

00:33:44.740 --> 00:33:47.880
And so that's going to be the Python plugin or the Python enhancement.

00:33:47.880 --> 00:33:48.340
I see.

00:33:48.340 --> 00:33:53.280
So that's pretty interesting that it could really empower people who are not really programmers,

00:33:53.660 --> 00:33:59.060
but maybe need just a little bit of logic, a little bit of something that's a little more than the app provides.

00:33:59.060 --> 00:33:59.860
And you can do that in Python.

00:33:59.860 --> 00:34:00.840
Yes, definitely.

00:34:00.840 --> 00:34:01.620
That's pretty cool.

00:34:01.620 --> 00:34:06.520
So one of the things that I've been thinking about as you're going through this, you talked about energy.

00:34:07.200 --> 00:34:13.760
So how much does things like renewable energy, solar, wind energy, things like that factor in?

00:34:13.760 --> 00:34:16.660
Do you guys like do modeling of that type of stuff as well?

00:34:16.660 --> 00:34:24.640
We had a big project with a general contractor called Mortensen, who's like, I think, number one solar in the world or US.

00:34:24.640 --> 00:34:29.400
So they build these massive solar farms and they're like ridiculous.

00:34:29.400 --> 00:34:34.240
Like they can like give power to the city of San Diego, like and things like that.

00:34:34.240 --> 00:34:36.820
And so they have just like huge, huge solar farms.

00:34:36.820 --> 00:34:40.360
And so this thing is so much different than, say, like solar panels on a roof.

00:34:40.360 --> 00:34:47.160
So like the problem of fitting, like how do you most efficiently fit solar panels on some certain roof is quite solved.

00:34:47.160 --> 00:34:48.940
Like, you know, it's already there.

00:34:48.940 --> 00:34:50.040
There's probably like a website.

00:34:50.040 --> 00:34:52.400
If you just Google it, you can like do it for your own house or something.

00:34:52.600 --> 00:35:02.560
Right. Google even has Project Sunroof, I think it's called, where you can put in your address and it'll light up your house and show you like how much efficiency you would get based on their like own models.

00:35:02.560 --> 00:35:03.820
Oh, yeah. So definitely.

00:35:03.820 --> 00:35:06.660
And so, you know, there's not a whole lot of Python going on in that space.

00:35:06.660 --> 00:35:08.500
Like there's not a whole lot of programming anymore.

00:35:08.500 --> 00:35:09.780
Like it's all kind of done.

00:35:09.780 --> 00:35:14.120
And, you know, obviously, like I work for a professor that did a lot in solar research.

00:35:14.120 --> 00:35:16.980
And so, you know, by no means is that whole field done at all.

00:35:16.980 --> 00:35:19.540
Like it's so nascent in a lot of ways.

00:35:19.540 --> 00:35:31.620
But for these massive, massive solar farms, you can kind of think that like if you take just a small, small subsystem of a very small fraction and you just shift all the solar panels like one inch away from each other.

00:35:31.620 --> 00:35:36.360
Well, all the wires that are connecting all those solar panels just got one inch further apart.

00:35:36.360 --> 00:35:49.300
And so now it's like spread across this whole entire thing is like you just put like a thousand feet of wire added to your project because you shifted these one solar panels in this very small fraction, like a fraction of an inch.

00:35:49.300 --> 00:35:58.760
And so something like that is like back to like generative design and things like that, where it's like you need a computational way of solving this problem.

00:35:58.760 --> 00:36:02.080
You know, you need to know like how much how close should they be?

00:36:02.080 --> 00:36:05.980
You know, it's called like there's just some ratio is involved and stuff like that.

00:36:05.980 --> 00:36:10.380
And so you can just shift them slightly and things like that.

00:36:10.380 --> 00:36:15.660
And so what you can do is there's like something called SAM, the system advisor model.

00:36:15.660 --> 00:36:17.100
This is done by NREL.

00:36:17.100 --> 00:36:19.280
They just came out with a new release of it, too.

00:36:19.280 --> 00:36:20.000
That's pretty cool.

00:36:20.000 --> 00:36:21.660
And they have like a Python wrapper.

00:36:21.660 --> 00:36:32.700
And so you can essentially make all the SAM API calls, which you give it the solar system, all the panels, however much panels you're using, all of that stuff and latitude, longitude, all of that stuff.

00:36:32.780 --> 00:36:37.560
And SAM will give you back how much annual energy will be generated from that system.

00:36:37.560 --> 00:36:49.600
And so now, like you're not only building out a framework for building all of these farms of solar and kind of shifting all of their metrics and figuring out how everything happens.

00:36:49.600 --> 00:36:58.760
But you're also tying it into something that was, you know, developed by NREL that's very, very like systematic and will give you like true results on solar analysis.

00:36:58.760 --> 00:37:12.260
And so to answer your question now is that like, yes, it's very much even beyond the building space and into things like solar, into things like wind and stuff like that, where you're pushing stuff out.

00:37:12.260 --> 00:37:15.300
And if it's done computationally, you can see so much more.

00:37:15.300 --> 00:37:15.680
That's cool.

00:37:15.800 --> 00:37:22.420
So almost in the industrial, like the architecture of industrial things and plants and solar farms and whatnot.

00:37:22.420 --> 00:37:23.340
Yes, definitely.

00:37:23.340 --> 00:37:24.940
You talked about changing the wires.

00:37:24.940 --> 00:37:34.300
Would that, do you know whether that would actually change the efficiency because the electricity goes through more wires and loses more energy or more of a construction cost sort of thing?

00:37:34.300 --> 00:37:35.360
Probably a bit of both.

00:37:35.360 --> 00:37:41.740
I mean, so definitely construction costs, like without a doubt, like that was the metric that we kind of tuned to was like,

00:37:41.860 --> 00:37:48.080
there is a certain amount of like cost per foot, linear foot cost and stuff like that of the wire.

00:37:48.080 --> 00:38:00.200
And that's directly tied to manual labor of like setting that wire up and even purchasing the wire because it's like you can buy the wire one day and copper costs you this much.

00:38:00.340 --> 00:38:02.380
And then you can buy the wire the next day.

00:38:02.380 --> 00:38:11.820
And when you're buying so much of it, like that small increase in the stock market or whatever of how much wire, how much the copper costs for that wire is going to increase dramatically.

00:38:12.100 --> 00:38:16.040
So, you know, you want to be able to type in a number of how much the wire costs today.

00:38:16.040 --> 00:38:23.000
And then that will also feed back into your system of what's the best thing to do today and how that investment will look.

00:38:23.000 --> 00:38:32.980
Maybe in the future we'll have some sort of AIs predicting the price of the various construction materials over time and then suggesting the order in which we build it.

00:38:32.980 --> 00:38:35.480
So you can like delay buying something for three weeks.

00:38:35.480 --> 00:38:36.320
So it costs less.

00:38:36.320 --> 00:38:37.380
Who knows?

00:38:39.040 --> 00:38:39.980
Just do it, dude.

00:38:39.980 --> 00:38:43.880
If you do it, like we'll just tell everyone, you know, in the industry.

00:38:43.880 --> 00:38:44.960
There you go.

00:38:44.960 --> 00:38:46.520
Like that would be amazing.

00:38:46.520 --> 00:38:50.680
Sounds like a cool science project that people could do something fun with if they really wanted.

00:38:50.680 --> 00:38:55.540
This portion of Talk Python To Me is brought to you by ActiveState.

00:38:55.540 --> 00:39:01.520
ActiveState gives you a faster way to build and secure open source runtimes from your first line of code through to production.

00:39:01.520 --> 00:39:08.280
Every second you spend building your Python distro or trying to secure your Python programs is less time spent doing the work you love.

00:39:08.600 --> 00:39:14.500
You've got better things to do than trying to resolve dependencies or making sure that you tick off all security boxes when you ship to production.

00:39:14.500 --> 00:39:20.860
Standardize on your Python builds so you can have less friction in the development cycle and you can deliver apps faster.

00:39:20.860 --> 00:39:25.340
You can also get a unique server-side way to verify your Python applications at runtime.

00:39:25.340 --> 00:39:28.780
Bake security right into your code without impacting performance.

00:39:28.940 --> 00:39:34.160
Go faster, spend more time doing the work you love, and comply with your enterprise security needs.

00:39:34.160 --> 00:39:39.800
Try ActiveState and see why it was chosen by IBM, Microsoft, NSA, Siemens, PepsiCo, and more.

00:39:39.800 --> 00:39:43.880
Join millions of developers who trust ActiveState to build their open source language distros.

00:39:43.880 --> 00:39:48.040
Visit talkpython.fm/ActiveState for a special offer.

00:39:48.040 --> 00:39:50.460
That's talkpython.fm/ActiveState.

00:39:50.460 --> 00:40:01.940
So one thing that really seems like it could sort of fit into this space is not exactly what you guys are doing, but you have some visibility into it, I'm sure,

00:40:02.460 --> 00:40:13.040
is the Internet of Things and smart devices and smart homes, smart buildings, are definitely sort of catching on in a lot of ways, but not entirely.

00:40:13.040 --> 00:40:25.000
And I feel like in these larger construction projects, there have to be awesome opportunities for like Raspberry Pi and other fun little devices that people can build with.

00:40:25.000 --> 00:40:26.300
What do you think?

00:40:26.300 --> 00:40:26.960
Oh, yeah.

00:40:26.960 --> 00:40:30.880
I mean, without a doubt, like Internet of Things is huge in the building space.

00:40:30.880 --> 00:40:34.020
Like it's just continuously growing.

00:40:34.020 --> 00:40:45.160
And I feel like anyone who's like really interested in like some Internet of Things space, you know, like Raspberry Pi or like Onion Omega or something is like they should definitely contact us.

00:40:45.160 --> 00:40:46.640
Because, yeah, I mean, you're right.

00:40:46.640 --> 00:40:48.220
It's not moving as fast as it could.

00:40:48.220 --> 00:40:53.220
But, you know, things like that and things like drones are like huge for the space.

00:40:53.220 --> 00:41:07.460
Like if you're doing like historical renovation or something like that, you want to like scan the whole building to make sure you have everything exactly the way it is in your model on the computer when you go to like start your renovation drawings and things like that.

00:41:07.460 --> 00:41:09.260
Where, you know, it's like it's huge.

00:41:09.260 --> 00:41:13.320
Definitely like through drones, through microcontrollers, all of it.

00:41:13.320 --> 00:41:18.960
Yeah, the little tiny, you know, $5 microchip things with MicroPython on it.

00:41:18.960 --> 00:41:20.620
Oh, man, you could do some great stuff.

00:41:20.620 --> 00:41:21.820
Yeah, definitely.

00:41:21.820 --> 00:41:28.820
That's one of the – I have lots of ideas for lots of different projects and software and other things in lots of spaces.

00:41:29.380 --> 00:41:31.360
But I'm really fascinated with Internet of Things.

00:41:31.360 --> 00:41:37.080
But I cannot think of something that's not just like a trinket toy thing for my house or for some other thing.

00:41:37.080 --> 00:41:39.920
I mean they look really fun to build but I don't know.

00:41:39.920 --> 00:41:42.380
It seems like there should be something really amazing.

00:41:42.380 --> 00:41:45.420
But I just can't think of something great to build that doesn't kind of already exist.

00:41:45.420 --> 00:41:46.060
Oh, yeah.

00:41:46.060 --> 00:41:48.740
Well, that last piece there is the hard one.

00:41:48.740 --> 00:41:50.540
Like what doesn't already exist.

00:41:50.540 --> 00:41:53.100
I mean everything exists a little bit.

00:41:53.100 --> 00:42:01.660
But not a lot of things exist like through an enterprise level and through something where they're going to, you know, warranty this for an owner for 15 years or something.

00:42:01.660 --> 00:42:15.180
But, I mean, if you can do something where you're just handling like occupancy of a room, it's like if you can smart turn off your lights like right when you need to and smart turn them on right when you need to, you're going to save a ton of energy.

00:42:15.180 --> 00:42:18.660
Like, you know, it's just Google Earth Day like yesterday, I think.

00:42:18.780 --> 00:42:26.560
And if you go to that Google link, it's just going to tell you all about how much energy everybody's wasting like in your zip code is what they said.

00:42:26.560 --> 00:42:31.340
And so it's very much something where, you know, even that is like you can handle that.

00:42:31.340 --> 00:42:38.880
But it goes even further, you know, like even so in a residential sense, here's something that here's something that can be very useful for people.

00:42:38.880 --> 00:42:42.720
You know, I was hesitating if I'm like privy to share it, but I'm sure I am.

00:42:42.720 --> 00:42:48.080
And so it's like, you know, it's something where like everyone in a lot of houses only have a single zone.

00:42:48.260 --> 00:42:54.380
So say you have a two story house, it's going to get a lot hotter upstairs during the winter than it is downstairs.

00:42:54.380 --> 00:42:58.220
And the opposite will happen during the summer is with the cold.

00:42:58.220 --> 00:43:04.780
And so it's very expensive to add another zone to your house to say like, OK, well, I want to be able to shut these off separately.

00:43:05.240 --> 00:43:13.460
And so you can take like a micro control and you can rotate your your register, your diffuser, and then it can turn it off.

00:43:13.460 --> 00:43:14.980
And that can be done so much more cheap.

00:43:14.980 --> 00:43:27.560
So if someone is able to like do it on an enterprise level, you know, with a certain amount of like warranty and certain amount of installation expertise and stuff like that, then they'll very easily be able to like move into every single home and save a ton of energy.

00:43:27.700 --> 00:43:32.520
By doing this, because right now, if you want to multi zone your house, it's going to be like thousands of dollars.

00:43:32.780 --> 00:43:40.840
And if you can do it with a micro controller in like very easily, then you're going to save people like their money back for sure.

00:43:40.840 --> 00:43:43.040
Like within like the first year or something.

00:43:43.040 --> 00:43:43.440
That's cool.

00:43:43.440 --> 00:43:51.060
One of the things that I've seen that's sort of in that same scope is new vent covers that you can buy.

00:43:51.160 --> 00:43:57.040
Like so your heating vent or cooling vent in your house, every one of those could be they basically have a little sensor on them.

00:43:57.040 --> 00:43:57.740
What's the temperature?

00:43:57.740 --> 00:44:03.200
And then they could partially open and close to sort of even out the temperatures of your house.

00:44:03.200 --> 00:44:03.600
Right.

00:44:03.600 --> 00:44:05.780
So you talked about like upstairs being hotter or colder.

00:44:05.780 --> 00:44:06.040
Right.

00:44:06.040 --> 00:44:10.100
Like it would dramatically shut the sort of vents upstairs just automatically.

00:44:10.100 --> 00:44:12.040
So I want the whole house to be 72 or this room.

00:44:12.040 --> 00:44:12.620
I want it colder.

00:44:12.620 --> 00:44:13.380
This one out warmer.

00:44:13.380 --> 00:44:14.440
It could like make that happen.

00:44:14.440 --> 00:44:16.620
Oh, man, that's exactly what I was talking about.

00:44:16.620 --> 00:44:19.340
You know, obviously, like you said, it already exists.

00:44:19.340 --> 00:44:20.620
I know, but it's not the same.

00:44:20.740 --> 00:44:24.860
Like I feel like a lot of these are big, clunky solutions.

00:44:24.860 --> 00:44:29.580
And we're down to like $5 pieces of hardware, free software.

00:44:29.580 --> 00:44:34.600
Like you could do amazing things in 2018 compared to what people did five years ago.

00:44:34.600 --> 00:44:35.500
So I don't know.

00:44:35.500 --> 00:44:42.980
I feel like there must like on the building scale, there must be even more sort of connected devices going on there.

00:44:42.980 --> 00:44:44.300
There are for sure.

00:44:44.300 --> 00:44:50.320
And it's something where this is like the reason why people from the development space

00:44:50.320 --> 00:44:55.500
are moving into the AAC industry is because it is still pretty new.

00:44:55.500 --> 00:45:01.960
You think there's a lot of opportunity for like really good software developers to come in and go, here's 10 unsolved problems.

00:45:01.960 --> 00:45:04.380
I'm going to pick these two and go after them or something like that.

00:45:04.380 --> 00:45:04.840
Definitely.

00:45:04.840 --> 00:45:07.400
Like 100% that is the case.

00:45:07.620 --> 00:45:15.280
And some of the problems I'd say are like, you know, things to solve could be prototyped out like at a hackathon or something.

00:45:15.280 --> 00:45:21.740
And some of them are very large scale projects that require huge teams and stuff.

00:45:21.740 --> 00:45:27.920
And so for instance, like a lot of the software is either like proprietary or open source.

00:45:27.920 --> 00:45:30.820
And it's like this combating things.

00:45:30.820 --> 00:45:32.600
And so that's one huge thing.

00:45:32.600 --> 00:45:33.880
It's called interoperability.

00:45:33.880 --> 00:45:37.540
It's like, how do I take my model from this program to this program?

00:45:37.540 --> 00:45:40.440
You know, because right now they'll just dump it.

00:45:40.440 --> 00:45:43.220
They'll just say, you know, they call it like the model drop chasm.

00:45:43.220 --> 00:45:54.520
And so for instance, you know, this is one space where it's like if you come in and you're a very good software developer, you can just solve all these little micro problems, you know, and it can lead to this really huge solution.

00:45:54.520 --> 00:46:09.340
But there's plenty of other things as well, like in, you know, revolving around like big data, artificial intelligence and machine learning where people who are much, much smarter than me could come in and can see the possibilities.

00:46:09.340 --> 00:46:22.440
If shown how everything is like hierarchical or how it can be abstracted a bit for them, maybe they can transfer it over to a similar problem that they've had and solve that problem in like a good way.

00:46:22.440 --> 00:46:22.760
Nice.

00:46:23.440 --> 00:46:23.800
All right.

00:46:23.800 --> 00:46:27.340
So maybe the final thing we will have time to touch on is the future of the industry.

00:46:27.340 --> 00:46:32.980
So we've already touched quite a bit on machine learning and IOT type of stuff.

00:46:32.980 --> 00:46:38.280
Another area in at least standard factories is robotics.

00:46:38.280 --> 00:46:42.440
But I haven't seen too many robotics building actual buildings.

00:46:42.440 --> 00:46:43.780
Maybe I just haven't paid attention.

00:46:43.780 --> 00:46:45.100
But is that also coming there?

00:46:45.100 --> 00:46:45.660
For sure.

00:46:45.660 --> 00:46:48.060
You said it with the factories and stuff like that.

00:46:48.060 --> 00:46:50.820
Like automotive industry is always what everybody points to.

00:46:50.820 --> 00:46:53.240
And in our industry now is like, look what they did.

00:46:53.360 --> 00:46:54.860
You know, and look what we're doing.

00:46:54.860 --> 00:47:01.380
And one thing in particular that's very much catching on and spreading fire right now is like called modular construction.

00:47:01.580 --> 00:47:10.040
So it's like how do you just prefab a building like and you just push out all of these like wall panels and then when you get in the field, you just put them all up, you know.

00:47:10.040 --> 00:47:16.420
And I have like some really good friend that's University of Stuttgart Institute of Computational Design.

00:47:16.560 --> 00:47:19.840
And he's showing me some of his research projects and they're just amazing.

00:47:19.840 --> 00:47:28.160
And one of the things that he showed me was that there's like these robots that can climb across the walls and work together and they create these strands and stuff.

00:47:28.320 --> 00:47:37.800
And we could put a link in the show notes, you know, and you can create like these really wicked like computational like just pieces, you know, in your building and things like that.

00:47:37.800 --> 00:47:41.320
But they also have robots that are like brick laying robots.

00:47:41.320 --> 00:47:42.420
You know, you can Google that.

00:47:42.480 --> 00:47:50.140
And they just throw a ton of bricks into the top and then out the bottom is just like sheets of bricks like being thrown down paving this road.

00:47:50.140 --> 00:47:57.500
And if you can take one that just grabs that like piece of wall that you prefabbed and it just picks it up and it places it where it's supposed to go.

00:47:57.500 --> 00:48:00.300
And then it goes to the next one and places it where it's supposed to go.

00:48:00.300 --> 00:48:02.260
Like everything is coming together where the.

00:48:02.260 --> 00:48:05.080
Or like glass, glass, like glass on office building.

00:48:05.080 --> 00:48:09.400
It all takes off of like this quality control, quality assurance stuff.

00:48:09.460 --> 00:48:16.980
Like if you could get a robot that just does it over and over, you don't need to invest in like the coffee that's going to keep everyone alert enough to catching everything, you know.

00:48:16.980 --> 00:48:19.460
And robotics is coming.

00:48:19.460 --> 00:48:21.300
Like robotics is very, very huge.

00:48:21.300 --> 00:48:23.440
And the automotive industry paved the way.

00:48:23.440 --> 00:48:26.120
And it's just on the doorstep of construction.

00:48:26.120 --> 00:48:27.180
I definitely see that.

00:48:27.180 --> 00:48:28.060
That sounds pretty awesome.

00:48:28.060 --> 00:48:29.100
I don't know.

00:48:29.100 --> 00:48:33.280
It takes so long to build buildings and other construction projects now.

00:48:33.280 --> 00:48:39.520
It seems like they could get knocked out really quick for at least certain parts of what's happening to them.

00:48:39.520 --> 00:48:40.020
Definitely.

00:48:40.020 --> 00:48:42.080
Like disruption, I think is.

00:48:42.080 --> 00:48:42.500
Yeah.

00:48:42.500 --> 00:48:43.560
More or less, right?

00:48:43.560 --> 00:48:48.480
I mean, I'm thinking of like there's this creek that's not too far from my house that had to have a new bridge put over.

00:48:48.480 --> 00:48:50.820
And it's like a two lane bridge.

00:48:50.820 --> 00:48:53.760
You could probably jump across a creek if you got a good run at it.

00:48:53.760 --> 00:48:54.480
It's not a big creek.

00:48:54.560 --> 00:48:57.020
And it took like six to eight months to build it.

00:48:57.020 --> 00:49:05.160
I'm like, does it really take eight months to build a building across like a 30-foot gap or bridge across 30-foot gap when it's only like 10 feet down?

00:49:05.160 --> 00:49:05.580
It's not.

00:49:05.580 --> 00:49:06.660
It can't be that hard.

00:49:06.660 --> 00:49:06.960
Really?

00:49:06.960 --> 00:49:09.780
Anyway, maybe robots will build the bridges.

00:49:09.780 --> 00:49:11.200
The road won't be closed so long.

00:49:11.200 --> 00:49:11.760
All right.

00:49:11.760 --> 00:49:12.680
So final thought.

00:49:12.680 --> 00:49:20.440
Maybe we've definitely seen the migration of people from an agrarian society of farms and stuff into cities.

00:49:20.700 --> 00:49:26.220
And I think at least in the U.S., like 2% of the population does farm work, whereas it used to be way more.

00:49:26.220 --> 00:49:29.240
And people are just packing tighter and tighter into cities.

00:49:29.240 --> 00:49:33.640
We need more interesting buildings to solve that problem, don't we?

00:49:33.640 --> 00:49:34.160
Definitely.

00:49:34.160 --> 00:49:34.580
Yeah.

00:49:34.580 --> 00:49:44.200
So I think there's got to be a lot of opportunity to build not just more buildings but to build them better in a way that like makes these larger, more compact cities nicer.

00:49:44.200 --> 00:49:44.380
Yeah.

00:49:44.380 --> 00:49:45.360
I definitely agree.

00:49:45.360 --> 00:49:51.300
I spent some time in Hong Kong and, you know, Hong Kong's thing is like they just keep building higher and higher and higher.

00:49:51.300 --> 00:49:55.120
And it's just how could that be better achieved, you know?

00:49:55.120 --> 00:49:58.360
And it's like who knows, you know, cities of the future.

00:49:58.360 --> 00:50:04.040
They have like, you know, maybe different little pathways and stuff between buildings or something, you know?

00:50:04.040 --> 00:50:07.380
Like you can harness the space above your head in a better way.

00:50:07.380 --> 00:50:12.780
You almost create like three-dimensional like sidewalks instead of just always walking to the ground level.

00:50:12.780 --> 00:50:17.260
You have these different layers at which you can like exist in like sort of connect to the buildings, huh?

00:50:17.260 --> 00:50:17.760
Yeah, yeah.

00:50:17.760 --> 00:50:21.000
Because right now it's all wasted space like above your head between the buildings.

00:50:21.000 --> 00:50:22.600
There's like nothing going on there.

00:50:22.600 --> 00:50:24.060
Nobody flies there, you know?

00:50:24.060 --> 00:50:26.340
It's all just wasted space right above you.

00:50:26.340 --> 00:50:26.840
Yeah.

00:50:26.840 --> 00:50:29.620
If we had flying cars, it would be a different story.

00:50:29.620 --> 00:50:34.200
But we don't have flying cars, so let's use that space for walking, I guess, or biking.

00:50:34.200 --> 00:50:36.160
Nice.

00:50:36.160 --> 00:50:36.640
All right.

00:50:36.640 --> 00:50:41.560
Well, that's a really interesting look inside the architectural building space.

00:50:41.560 --> 00:50:42.560
Thanks for that, Mark.

00:50:42.560 --> 00:50:45.900
So let me hit you with the final two questions before we get out of here.

00:50:45.900 --> 00:50:50.360
If you're going to write some code, you already said VS Code is where you like to live.

00:50:50.360 --> 00:50:51.120
Yeah, I love it there.

00:50:51.120 --> 00:50:51.600
Yeah, nice.

00:50:51.600 --> 00:50:55.240
And you use, of course, the Python plugin that Microsoft now put out.

00:50:55.240 --> 00:50:59.360
It used to be by Don, but now he started working for Microsoft.

00:50:59.360 --> 00:51:03.420
I listened to an interview about him, all about it, because it was really interesting.

00:51:03.420 --> 00:51:06.480
And I also use Code Runner, which is an extension.

00:51:06.480 --> 00:51:07.760
It's an amazing extension.

00:51:07.760 --> 00:51:08.580
I don't know Code Runner.

00:51:08.580 --> 00:51:09.020
What's that?

00:51:09.020 --> 00:51:09.500
Yeah.

00:51:09.500 --> 00:51:10.360
So it's called Code Runner.

00:51:10.360 --> 00:51:11.120
You should check it out.

00:51:11.120 --> 00:51:14.820
And it just lets you run your script.

00:51:14.820 --> 00:51:16.780
It's with lots of different languages.

00:51:16.780 --> 00:51:20.960
I know it's for Ruby, Python, probably JavaScript and stuff like that, too.

00:51:21.060 --> 00:51:25.800
And you don't have to put the little shebang on the top of the script or anything like that.

00:51:25.800 --> 00:51:29.260
And it's just all kind of IntelliSensed in a way.

00:51:29.260 --> 00:51:31.340
And then you can just easily run your code.

00:51:31.340 --> 00:51:36.340
And so you don't need to go to a terminal and type in .slash or anything like that.

00:51:36.340 --> 00:51:39.460
It's just all Control-Alt-N or something like that.

00:51:39.460 --> 00:51:41.840
And so it just gets you off and running right away.

00:51:41.940 --> 00:51:46.720
So that's an extension, I'd say, to go a bit further into VS Code of what I'd recommend.

00:51:46.720 --> 00:51:47.160
Yeah.

00:51:47.160 --> 00:51:47.740
And a linter.

00:51:47.740 --> 00:51:48.940
I use a linter, I think.

00:51:48.940 --> 00:51:49.600
Very cool.

00:51:49.600 --> 00:51:50.040
That's good.

00:51:50.040 --> 00:51:50.340
All right.

00:51:50.340 --> 00:51:52.340
And then notable PyPI package?

00:51:52.480 --> 00:51:55.240
I'd say Python OCC for that one.

00:51:55.240 --> 00:51:59.500
And like I said earlier, it's a wrapper of a C++ package.

00:51:59.500 --> 00:52:04.080
And it gives you the ability to start to harness geometry in certain spaces.

00:52:04.080 --> 00:52:07.580
And so you can build little cubes and circles and pyramids.

00:52:07.580 --> 00:52:12.880
And you can take that much further into splines and all different types of objects,

00:52:12.880 --> 00:52:19.660
which is very important in the building industry to be able to 3D model and to generively 3D model.

00:52:19.660 --> 00:52:20.340
Very, very cool.

00:52:20.340 --> 00:52:21.180
All right.

00:52:21.180 --> 00:52:24.900
So it sounds like there's a lot of opportunity for people who might listen to this show,

00:52:24.900 --> 00:52:27.940
who are programmers or at least technically minded,

00:52:27.940 --> 00:52:33.840
to sort of break into the AC space and do some pretty cool things on the ML space,

00:52:33.840 --> 00:52:35.820
IoT space, lots of different things, huh?

00:52:35.820 --> 00:52:36.760
Highly recommended.

00:52:36.760 --> 00:52:37.200
Awesome.

00:52:37.200 --> 00:52:37.920
All right.

00:52:37.920 --> 00:52:39.940
So thank you so much for being here.

00:52:39.940 --> 00:52:42.980
Everyone who's listening, if they're interested in this kind of stuff,

00:52:42.980 --> 00:52:44.340
where do they get started, do you think?

00:52:44.340 --> 00:52:45.840
They're happy to reach out to us.

00:52:45.840 --> 00:52:49.760
But they can also go to Autodesk's website.

00:52:49.760 --> 00:52:55.780
And there'll be tons of information there with respect to different softwares to choose from,

00:52:55.780 --> 00:53:00.960
if they're interested in doing all kinds of different things, or tutorials, training videos, everything like that.

00:53:00.960 --> 00:53:01.240
All right.

00:53:01.240 --> 00:53:01.540
Awesome.

00:53:01.540 --> 00:53:02.760
Well, thanks for being on the show.

00:53:02.760 --> 00:53:03.500
It's great to chat with you.

00:53:03.500 --> 00:53:04.060
Thanks, Michael.

00:53:04.060 --> 00:53:04.540
Bye.

00:53:05.480 --> 00:53:08.700
This has been another episode of Talk Python To Me.

00:53:08.700 --> 00:53:11.400
Our guest has been Mark Menendez.

00:53:11.400 --> 00:53:14.600
And this episode has been brought to you by Linode and ActiveState.

00:53:14.600 --> 00:53:18.520
Linode is bulletproof hosting for whatever you're building with Python.

00:53:18.520 --> 00:53:22.840
Get four months free at talkpython.fm/linode.

00:53:22.840 --> 00:53:24.620
That's L-I-N-O-D-E.

00:53:25.680 --> 00:53:30.380
ActiveState gives you a faster way to build and secure open source runtimes.

00:53:30.380 --> 00:53:37.400
From your first line of code through to production, check it out at talkpython.fm/ActiveState.

00:53:37.400 --> 00:53:39.280
Want to level up your Python?

00:53:39.280 --> 00:53:46.320
If you're just getting started, try my Python jumpstart by building 10 apps or our brand new 100 days of code in Python.

00:53:46.700 --> 00:53:50.120
And if you're interested in more than one course, be sure to check out the Everything Bundle.

00:53:50.120 --> 00:53:52.360
It's like a subscription that never expires.

00:53:52.360 --> 00:53:54.560
Be sure to subscribe to the show.

00:53:54.560 --> 00:53:56.760
Open your favorite podcatcher and search for Python.

00:53:56.760 --> 00:53:58.000
We should be right at the top.

00:53:58.000 --> 00:54:07.300
You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm.

00:54:07.300 --> 00:54:09.180
This is your host, Michael Kennedy.

00:54:09.180 --> 00:54:10.560
Thanks so much for listening.

00:54:10.560 --> 00:54:11.600
I really appreciate it.

00:54:11.600 --> 00:54:13.600
Now get out there and write some Python code.

00:54:13.600 --> 00:54:34.400
I'll see you next time.

00:54:34.400 --> 00:55:04.380
Thank you.

