The Programming Journey of pyRevit Dad (Ehsan Iran-Nejad) | pyRevit Podcast #3
Transcript
oh my God I had no idea that thing existed and that's how you're supposed to ride your program why is that button 16 pixels to the left don't worry about me and software I'll pick it up I can see how Engineers work and I can see how us architect SL designers work and what I've realized is that all programming languages have a holy smokes I this is not something that I ever thought about and it's the art of programming really designing the right data structure that represents your state I'm like oh wow I didn't really need to change anything that's this is interest I've never been here before which is amazing like that's what I love about software all right guys today I have a very exciting episode and we have a p dad himself on the show his name is Essen EET and welcome to the show how are you thank you thanks for inviting me pretty good so you've created pit around like 10 years ago right yeah yeah this year was the 10th well 2024 was the 10th year anniversary of P Revit such a long time yeah I wish we had like had enough money to throw a big event and invite everybody there and stuff but a that would be cool I think nobody really knew that it's like 10th year anniversary I didn't know it existed for this long until I heard it in one of the podcasts I was like wow no way yeah it was it was a personal project for many years like 20 2014 was the year that I started it but it didn't really didn't really catch any sort of like momentum until end of 2015 maybe or like 2016 no but even still it's so many years since then this is amazing listen I'm really excited to talk about by RIT but first of all I really want to focus on your programming journey and see where you actually got started so I thought that we maybe go back to the moment where you just typed your first hello world statement can you just take us there tell where you are how old are you so I think I was about 11 years old 10 11 years old all right uh we used to live in southeast of Iran and I remember that when I got 12 we moved to Northeast to a much much bigger city but in that smaller City in southeast of Iran at the school that I was at they decided that they want to create a computer class um so they bought this old ass um olivetti uh computers from somewhere else I think it was like a university or something like that that they didn't need them they wanted to upgrade they bought all these machines and it was like I want to say like five six of them and that was the first time I actually sat in front of a computer and uh I'd seen him before here and there like inside Banks and stuff like that but that was the first time I sat in front of him I was like first of all oh my God this is cool um because my dad was a telecommunication engineer and since I was a kid like I was around electronics and you know uh machines and things like that um so I was like oh my God this is cool and then the best part was that they started us with a programming language called GW basic which is a graphical version of Bas uh basic if you remember the basic language you had to type the line numbers like 10 you would do this line 20 you would do this line 30 you would do this um GW basic was a graphical version of that so you had commands to draw lines and circles and all sorts of shapes and whatnot which fascinated me and it was still like a terminal back then oh yeah this is yeah yeah this is all uh text based um sort of like terminal environment um the Q the the basic environment is pretty well known for its like blue screen with the little menus on top and stuff like that uh GW basic had the shortcuts at the bottom and it was all black you would just write your U commands on the side uh your program on the side and then you hit uh run and it would draw the things and then you escape out and you change it and stuff like that and how far could you push it was it just to kind of draw shapes or what was the kind of the end goal of this no it had full basic uh support but um it had those extra um sort of like commands for drawing shapes and colors and Fields and those kind of things um and I remember there was a book that the my computer teacher um that class uh had sort of like shared with us and it was all this like different star shapes drawn algorithmically so you would write few lines and it would draw this like complex star shape out of all these lines and circles and stuff and like changing colors and it's beautiful patterns and that's where my uh Fascination kind of started and moving forward from there how did you pick up your Basics as you mentioned so you started reading books because back then you couldn't really go like to on the internet yeah so that was that was the first time I touched computers and we halfway through that class we moved to North of uran so I didn't have access to the computers until like a couple of years later where I was in uh High School in the high school they have we had a computer class that we would go to outside of school and um again it was GW basic I was like give me the GW basic so I can draw shapes and do graphical things so I started playing with that and kind of created a very preliminary U graphics program that you could just you know point to places and draw lines and that kind of things MH and then that class ended High School ended and I went to University well the study year for university the the year before and stuff like that didn't have access to computers again until I was at the second year of University second year of architecture school where I was like I kind of need my own computer and I need AutoCAD and a whole bunch of other stuff and that's where I that's was the first time I was like I think it was like 19 or 20 that was the first time that I got my own computer mhm what year was it you said you 1920 but this is 1999 20 actually 2000 okay 2000 all right yeah it was around like 2000ish that I got my own computer and I remember it had a decent graphic card at the time it was a Savage card and uh most other computers didn't really have a graphics card and I had a modem um things like this that was like super cool at the time and at this point you still kind of played a little bit with code but you were not like coding some projects all the time or something like this right you just had little understanding at this point yeah so one of the things that I did was that the when we moved to Northeast of Iran to the bigger city in that second computer class that I was at I was like I like this enough and I can see how fascinated I am with this so I started I knew basic at the time through that class but I was like I need to learn something better so there was this uh computer like technology bookstore in the city and I went there and I saw a book that says C programming language by Dennis and Brian kigan and that's a very famous book it's like a Bible for program it's called a k&r book um this was a translation in Far SE and I was like oh this seems interesting and I looked at the writing I was like this reads easily I can understand this so I started reading that book and that's I taught myself how to learn c um but I didn't have a computer so I would like write all these programs on pieces of paper and go through them in my head imagining that they would work the first first time that I actually got to experience all of this was when I had my own computer to kind of sit down and after C I started ring a little bit of assembly and but here and there like I would go work for companies and they would have a computer and like after work I would try a few things out um to kind of test out my programs and stuff like that but it was really when I got my own computer that I had a programming environment in front of me and at this point you haven't still started with python I think python didn't exist yet oh no no no this is way before yeah this is before all right and when does the python come into the picture so you started with this graphical language then assembly basic c yeah so um so I went to architecture school second year got my own computer started programming um very quickly realize I like the more technical side of architecture and I'm more I'm not on the very artistic side I'm more like on a little bit of a technical side so I spent a lot of time with the computers and learning different softwares and working for different companies like I work for publishing graphic design like all sorts of stuff Electronics with my friend all sorts of things around the computer computer was always in the center of all of this MH and then we moved and like throughout this time I learned C programming language for embedded microcontrollers so um I was writing C for chips like arm chips or admail chips and then uh we would uh I had a friend that he was a he was an electrical engineer so I taught him C and he taught me how to use Electronics Digital Electronics mostly and we would kind of like start doing projects and stuff together which was a lot of fun um I still haven't P touched python at this point I knew it existed but I really didn't touch it and then I moved to the US and while I was working here as an architect again I kind of realized that spending time writing scene stuff takes a lot of time so I kind of needed something that's a little faster that I can use it as a scripting language and by this point python was was pretty famous Python 3 was already out um so I started picking up python so this is sort of like around like 2011 is which I started learning Python and what kind of problems have you tried to solve with the programming language so what was your why reason learning programming was there like specific problem why you decided like okay this is the python or well part of part of it was always that I loved computer so much that I was like I anything I can do to spend more time with these machines and then the other side was that I have a lot to do in my day like for example I remember one of the things that I automated with python was that sending emails to my BS because I would supposed to every morning when I come to the office I would uh go through all these like government websites looking for jobs and they come with a pretty standard format like there's an RFQ and says like you know what kind of job it is and blah blah blah so I would go through and pick out the ones that I thought it would be interesting to him but then as I would download all these PDFs I needed the standard format to to send emails to him so I wrote a Python program and I would grab this PDF and throw it in this P Python program and it would automatically send email uh emails to him which he hated because like he would get like 20 very well formatted emails right after each other really quickly look like spam right yeah was spaming the inbox with valuable information arguably but um like I started doing that like renaming files python started really quickly becoming the Swiss Army knif thing yeah see right and you said that you started python you were already in the University right or it was already after it was after the university when mov to the US yeah I was working as an architect at this point 2011 is primarily in AutoCAD um doing stuff on the side at home like learning python I knew Maya a little bit of Maya so I was writing like C++ programs plugins for Maya exploring an environment because I touched grasshopper before uh inside of rhino but I didn't have a rhino license I had uh the version and I was exploring like writing plugins for it to create like geometry generatively things like that and where does ravit come into the picture because so far it sounds like you haven't been working or studying using rivit right yeah this is all before rivit um when I moved to inside of the US I moved to uh Portland where I live now and when I started working here there was this company that I got a job with and they used breit uh heavily and on the interview they asked me do you know Revit and I was like I've done a little tiny project but I I'll don't worry about it I'll learn it don't you know don't worry about me and Sofer I'll pick it up MH um and they're like sure so to that's started 2014 and it was RIT 20 2014 is the first one that I started working I by the end of that year I had the first version of P rabbit because like I couldn't work coming from AutoCat and all the others programs that had scripting languages it was really hard for me to work in Revit and do anything all right so started in ravit and by the end of the first year you hated so much you started creating by RIT to make it better it was like it was like mid mid through 2024 and I'm like this is not going to work so I found uh RevitPythonShell and I started writing Python scripts and kind of learning the Revit API I was like okay this this is great I can I can it's bringing my sanity back to me U so I would like run uh area calculations in my own scripts automatically and my like my boss would sit beside me and we would go through the plans and I keep running this and he loved it so so much cuz he didn't he couldn't do this with anybody else like he I was showing him live information that was hard to get from like Revit schedules um and those scripts that I wrote basically became the first draft of pyRevit tools uh they went into I figured out a way to put them in the ribbon um and um the first version of PIR it had U monsters for the icons for all these different tools and each one of the monsters was specialized in an aspect of the like sheets and blah BL blah which those later became the panels and you know that kind of stuff you have like a screenshot or something from your first pyit toolbar I really try to find stuff but I I can't you you can go back like in the repo is there you can go back all the way to the oh yeah actually to the original commits and all the icons are are still there somewhere in the history I need to check what's going on there it's actually quite interesting so and by this point was Dynamo even in the picture for you have you used Dynamo with python node no not at all I was sort of like I was a lot more interested I'm the if I want to simplify it I'm sort of like Frameworks kind of person I like to make tools that other people use to make tools MH um so I would I saw grasshopper I was like this is fascinating and I learned how it worked and I'm like okay I know what it does now I can move on to other things um and then when Dynamo came out I looked at it I'm like I've seen this before like this is not even as good as uh grasshopper so there's no reason for me to spend time here when I started working with Revit a little more I was like maybe this could be the platform that I could you know make things with in but it was missing so much that I was like I'd rather just do them in the Revit API and have a cleaner simpler environment with no plugins and stuff like that versus like a lot of dependencies so I have a question so you're already familiar with so many languages especially C why have you decided to create pyit instead of just using C# and making it natively like native ravit plugins um the biggest drawback for me was that um first of all I absolutely love python I think it's like for me it's like the perfect programming language it's there's no such thing but like you know it works for me the um C I don't like that language I don't like programming languages that are very complicated there are many ways of doing things um you python is very simple very simple for to just write a bunch of functions and write a bunch of data structures that's all you need it's very much like C in that sense so I had an aversion to like that's what never really learned C++ I learned it but I was like I'm fine with C I don't really need to deal with this cuz it's like all the templating systems and it's it gets very complicated and I know it has powers does c also have memory allocation like C++ yeah yeah see you're in C you're basically in charge of everything there's nothing there's no runtime in C um it's just a standard library and it's you but it's such a simple programming language that with like a bunch of a couple patterns like how you would deal with the memory and how you with with the file IO and stuff like that you'll you'll be pretty pretty fine um I wouldn't suggest like writing programs in C these days it's a you know pretty complicated language like if you want to use I don't know send an HTTP request it's going to take considerably more time in writing that in C versus python so you're not going to be as productive but um so python was kind of like that for me it was simple it I didn't have to think about the how I want to structure the program I could just write a bunch of functions throw in a module and have a couple of different data structures and start working with them um C I had a hard time doing this with in object oriented environments in C I kept like I to this day I still fall into this um uh sort of like uh loophole of trying to structure all this nesting of the classes and which function overrides the other one and there's you know that kind of stuff so I spend more time WR figuring this out rather than actually writing the code mhm um so the problem with me with C was that I need to have RIT open and I have a project that takes about 15 minutes to open um because it's so big and I want to write some tools to make stuff you know in this to automate things in this project but then if there's a bug I need to close Revit make some changes compile the plugin again load Revenue again open the project run the tool that cycle was too time consuming python completely remove that cycle if I had a script in a empty script in a place and I would run rev it that script will show up as a button in the Revit UI and I could keep just changing that same script while Revit is running and just clicking and you know getting different results yeah this is what's so amazing about py RIT that you instantly like you run it you get an error you go change one line back and forth that's Prett much how I also develop constantly getting errors fixing back and forth oh now it works and I'm happy yeah working as an architect then that sort of like time consuming software development cycle kind of didn't work python solved that problem python inside of python inside of Revit I'm not so familiar with CP but I keep hearing that many people say ah C is still faster than writing in Python do you have any thoughts on that yeah so like over the years I've looked at a lot of like different comparisons between programing languages and a lot of it comes around like performance and uh memory efficiency and those kind of stuff and and what I've realized is that all programming languages have a have a sort of like a mind um have a sort of thinking way of thinking about them and if that way of thinking aligns with your way of thinking about writing a program it's going to be a good programming language for you so like there people that love the love C love objectoriented programming languages the people that don't like I'm not a huge fan of it if I try to stop myself actively try to stop myself not going more than like two levels that deep inside in class hierarchy so if I have a base abstract class I only do like one derivative of that so that creates like these two levels for me two layers obviously you know I fall into this pattern all the time that I'm like I end up having like really deep nests and you can't figure out where where something's happening so it kind of it's It's hard to really compare programming languages but in terms of just performance like raw performance python is written in C so and it's an interpreted language so it's it as it's running is interpreting the instructions that you have written in the python file and execute them then one by one in a loop that we call the python interpreter Loop so there's a loop running inside of this CPython that runs these instructions uh C it's sort of similar it reads your instructions which is your C code it translates them into this uh Intermediate Language and then saves that in a dll which is your program but when it's actually running those it takes those interated language uh the IL code and translates it into machine code which we call jit compiling just in time compiling so when it actually runs your code it doesn't go through an interpreted Loop it runs the compiled code for the machine that you're running on so it runs on CPU read so when it runs it runs as fast as any other program that runs on CPU python has this Duality to it the right that you the code that you write in Python runs in that interpreter Loop but if you write CPython modules like NPI and scipi and all that kind of stuff that are using the python cap API that interpreter Loop calls into that module and that module is free to do anything on the CPU that's why napai is so fast because it's not inside Python's interpreter Loop um scipi is so fast you see tensor flow you see all these really um sort of like complicated extremely fast numerical libraries show up in Python first yeah because it had this connection to it that you could write on the surface you can write this simple code that goes through The Interpreter Loop executes very easily error handling is great but when it needs power it control it passes the control to that module and says go do your computation let me know when you're ready this was the beauty of python this duality of python that it's scripting language but it has a plugin that makes it as powerful for like scientific languages and all that kind of stuff yeah I see you could do the same in C if you have a very good mathematical Library um so they I would say they run as fast as each other in majority of the cases thing is just that Autodesk has C more optimized because they don't really do anything for Python and python pyit also needs a lot of work right now to kind of get it up to date recently spoke with jark they want to make a lot of changes to make it faster but it's all about the menpower yeah when you run a compiled program using like languages like C++ and C sharpen stuff like that shipping that language is a little bit easier because you don't need a run time in theory like if you write a Revit plug-in Revit guarantees that the runtime theet runtime is available right MH but when you write a program in Python you with the python application needs to be on the target machine to be able to run that that's sort of what pyRevit started guaranteeing it's like I guarantee that IronPython is going to be there when you if you share your scripts with other people that's the that has to be the general problem around Python and it's still to this day is a little bit of a problem deploying part-time python application is not as easy as um compiling a c application into an installer and send it to somebody how hard would it be to create kind of python plugin and ship it as the C plugin you know like with this installer like you're talking about is it even viable in ravit or you need like completely rewrite py as your own thing first if you want to run that python code you need to have the python runtime available so like this is kind of what I do right now with rhino in the new sort of like Rhino 8 I created this uh new script editor we decided that you know the all the script editorials have been around for too long we needed something that's a little more modern so we created this new script editor that has IronPython and Python 3 but the problem was like if I have a script how do I share it with other people so we created this mechanism that you can have a bunch of your scripts inside a project and you publish this as a rhino plugin so it gets compiled as like an actual net DL but it embeds your scripts inside of it somewhere so pretty much can share all your codes as a package as a package with somebody else yeah as long as they use the same Rhino version and about right because when that DL gets loaded it requires this new scripting infrastructure uh to say that I am carrying a Python 3 script can you run this for me as this command again guaranteeing that the run times exist yeah that's quite deep stuff I'm I'm far from going that deep in coding my python is pretty good but once you go into these compilers run times I'm a little bit lost myself but when you created py how good were you with programming languages would you say already were like an expert no not at all I'm still not not not a very good programmer like there are Prett a lot of people that are much much better programms than me um like at the same company that I'm working on like every time in the dev meetings I'm like oh my God I had no idea that thing existed and that's how you're supposed to write your programs um but for me it was like I've never really like I'm not I'm not very good in math and I wasn't really good in the sort of like the algorithmic complicated computer science aspect of programming for me the fascination was that hey look I can put a bunch of commands together and make something happen and that's why I love the scripting languages a little more um this the the time that I was like spending time on microcontrollers and stuff like that was slightly different mic microcontrollers are a lot simpler uh so you're writing C but you in charge of everything and it's still fun and you're putting things together your controlling timers and watch dogs and stuff like that on your um on your uh microcontroller and it's a lot of fun so I'm not I wouldn't call myself a good programmer but that didn't really stop me from you know putting together to many lines as long as you understand how variables work and how a couple of control flow structures like ifs and switches and forward loops and stuff like that work I think you can put a lot of good useful things together the hardest part doing thing on Revit hasn't been the programming language it was like dealing with the revid API cuz there's this thing that you want to do and you're like it kind of doesn't do it so maybe I can do it this way I can do that first and then do this first and then as you're doing this you're like oh it breaks when I make the first change or I'm going to need this other thing that cycle is the one that takes really the most time it's not really the program language itself hi real quick if you're into py RIT and you want to boost your skills in record time then check learn rate ai.com platform you'll find free inp courses for any stage of your programming Journey you will get access to pyit Basics Pro and modern UI courses plus you'll also get access to my code library and join my exclusive Community for pyRevit developers in the community we can chat discuss programming in Revit and most importantly you can ask for help when you need it the most if that sounds interesting go to learn r.com to learn more and now back to the show I like to say that programming is pretty much just a skill about problem solving not the coding coding is just what we use for solving problems and in the end of the day code is just kind of step-by-step instruction there's a really good video on YouTube I don't know if you've seen it's called how to write exact instructions and it's a dad who just asked his kids okay you have to write me instructions how to make a peanut butter sandwich and I was saying like Okay take the knife kind of put the peanut butter on the bread and he was he was literally follow and he follows the awkward instructions of this yeah it's really cool yeah yeah and it looks so stupid but in the end of the day this is how machines look at our code and of times when we write a code it doesn't work it's probably because we just didn't think about some step or it's just not exact instructions and yeah that's what programming is for me and many people focus too much on the code itself um there are a couple of old school programmers from like 1960s and 7s and stuff like that that they were involved in creating the Unix programming language um the operating system and the C program language and all of that there's stuff that we still use today um one of these guys said something that resonated with me so your program has only two things it either has logic which is let's say a a function that computes um factorial of a number that's just logic it's pure logic or it has a state so it's holding something in memory and you're manipulating that state that state might be uh the state of your UI things change and you need to disable and enable and update so at every point in time your UI is at a very specific State and this state is represented in memory somewhere M and your logic the pieces of logic around your code are mutating that state right the art of writing logic is just good math and algorithms and studying algorithmic performance and things like that so you write the piece of logic that runs as fast as possible and it does the thing and I don't know like and it's depends on the task that you want to do like you know depends on what kind of like if you want to pick a sorting algorithm it depends on what you're trying to do they're like Bui different sorting algorithms so that's that part is fairly clear the part that's unclear and it's the art of programming really is designing the right data structure that represents your state what do you mean by that so let's talk about the script editor that I made in Rhino uh Rhino 8 MH this is something that I sort of like started learning it was the biggest UI that I ever made UI application that I ever made and it was the the biggest C code base that I ever worked on so I was learning this as I was going through it the script editor has a bunch of codes open and a bunch of panels with some contents and there's like Explorer on the side and there's a whole bunch of commands running in this application it's not just the UI that you're seeing that has a state there's like all the commands that are in the memory that that are about the editor and all the panels that you don't see that are not visible in the UI maybe like a whole bunch of other stuff is outside of this UI that needs to be at the correct State at the right time and meaning at the correct state is that if I have a um toggle breakpoints button in the breakpoints panel for the debugger mhm if I don't have any break points in the script there is no reason for that button to be active that button should be disabled because it doesn't really do much right and the disabled enabled is the state of that button uh like triggers yeah yeah exactly so as I'm debugging the code if suddenly my toggle debug uh break points button becomes disabled that's a bad State that's not supposed to be there that's a bug right yeah so maintaining that state as the state of other things are changing is really complicated and you have to create this data structure that represents this as we call it in a sort of like the I or we call it the view model or the model for that um uh editor this model that represents the editor conceptually and there's a place on it there's a property that says um breakpoints button enabled and there's a property that says like do I have break points in there or not and internally these two are tied to each other MH so when the breakpoint changes it also changes this so this data structure internally manages its own state if you add a breakpoint it enables the the breakpoint button things like this they're talking about mvvm right now this patter model view view model right that that you have connected code to like interface and it's all kind of interconnected yeah I'm using I'm using UI as an example that's why sort of like the conversation goes a little closer to the mvvm models but this is about everything that you're trying to do uh like if you're writing a data structure that's supposed to hold a list of uh employees or something like that those are like typical examples that you see in programm languages um you could use a normal basic data structure like a list but then like for example if you want a certain number of like your principles that are listed in employees to be listed separately you might encapsulate this list in a data structure that knows how to deal with the principles list things like this so it's the art of that creating that data structure that represents the thing that you're trying to deal with that is really the art of programming if you write that data structure correctly if you kind of figure out how it's supposed to be working with it is very easy because it's very intuitive at this point and it behaves the way it's supposed to behave so also kind of going back to this choosing the right design patterns and most importantly deciding what you're trying to get out of it because sometimes you're trying to make something simple and it doesn't make sense to go into objectoriented programming but other times it actually makes sense to go into object oriented programming instead of dysfunction when everything is interconnected and yeah yeah I see it it's definitely very important to kind of decide on what you're trying to achieve before actually jumping in because that's what many people do they first jump in they start doing and then halfway through they realize they using well it's not going to work because they decided to do something certain way at least that's how I I did certain things I jumped into creating some plugin with UI I didn't know anything about mvvm vpf I just decided to spent couple days on the UI form and I realized oh actually I started everything wrong everything started to break because I just didn't think through what am I doing here yeah and that's absolutely fine like as I'm that's one of the other reasons that I like python so much because you can like let's say I'm creating something in Revit I can just start a script and start fiddling and trying to figure this out and um like if the art of programming is writing that perfect data structure you're not going to know that data structure right off the bat unless like it's super simple so you have to go in and write a bunch of like very bad versions of the way you're trying to do things and you're like yeah that's this is not supposed to work like that so I'm going to make a change to that over time you'll kind of understand the full scope of this thing that you're trying to create or deal with or it's like in the end whenever you write any big program then you have a look at it and you always think man I should have done it differently this or that then you rewrite it and you still have the same thought that you want to again rewrite it differently I don't know do you still have this kind of thing when you kind of finish kind of big code and you look at it and you want to do it completely different or just rewrite it yeah oh my God it never goes away right yeah that's what I'm doing R night it's it gets a little questionable like how much you can change um but a lot of like I wrote a bunch of bad code um inside of the editor because I didn't know how to do this better so I'm like going now after a couple of years I'm going cleaning that up making sure it runs as fast as possible that kind of stuff so rewriting those and I was WR and I was reading u i was watching this YouTube video of a guy that was a programmer and he suggested that limit the size of every chunk of your code to about a week worth of work how how how big chunk are we talking about is it like a file a class um depends on how you structure the program like for example if you have a module that's supposed to talk to your web server make that as big as about a week worth of work so if you realize that in the future you're going to need to change it it's about a week of work and then you can replace that module so modularize it in this way and there're sort of like separate components abstracted components so you could replace each one of them in about a week of work and make it better or use a different back end or you know that kind of stuff there's this principle that tasks always take the time that you allocate to it meaning that if you're going to let's say you have to write an essay if you're going to give it a week it's going to take a week because you're going to write it in the last day anyway you have 24 hours to write it you're going to write in 24 hours and I think this is also good thing like you said that the chunk should take for example a week once you give it time constraint your brain also knows like okay there's like ticking time it starts think also differently I think that's yeah that's a good point yeah just thinking about it that hey I don't want to write a big chunk of code is also help helping you focus on what is bare minimum requirement for you you know for that code at that at that time right interesting uh also we got away a little bit from p RIT I want to have a few more questions first of all what were the biggest challenges creating py RIT cuz at first you took ravit python shell and you decided pretty much to make it into how to say it reusable extensions right so you can put all your scripts in the toolbar what were like the biggest challenges in the first I don't know year or two of creating it um the first year or two the biggest challenge was really there were two things the first one was how to get all these Python scripts to show up in the ribbon which I learned from um RevitPythonShell so I was like okay rabit python sh does this I'm going to copy exactly what he did and start creating the buttons that's sort of like that was the first draft of um P rabbit we I solve that problem but after that it's been always deployment like packaging all of this in a installable and send it to people that have different responsibilities somebody's an admin somebody's not an admin somebody wants these tools somebody doesn't want the other tools like all sorts of stuff finding a way to get this program installed correctly on the target machine has been a huge Challenge and I kind of blame windows for a lot of this um but it's it has been it has been a big problem um that's part of the reason that sort of like pyRevit attaches itself to all the different Revit versions CU I I didn't really want to deploy pyro for five different Revit versions at the same time I i' rather have like one pyRevit installed that I can deal with um cuz like if like imagine you there's a customer that asks you a question on the Forum and he has like three different Pirates installed for three different rabits oh yeah it becomes kind of a nightmare trying to figure out no I think it's just a taking time bumb right at certain point you stop kind of supporting one version but the other and the hell broke close yeah I would say every other challenge has been fun they're like little challenges how do you do this how do you do that how do I like update P revenues and get and stuff like that um the U but then you know it's fun you go through it you spend a week or two you kind of figure it out and it's it's okay the challenges that gave me a lot of headache that one of them is just deployment creating an installer for pyro no I can imagine every time I hear Jean Mark talking about this I kind of my brain a little turns out about all this deployment how to make this managing keys I'm like it's kind of foreign to me I know what you're talking about but I don't know like this good understanding uh would you do it much different if you would had to do it today if you would kind of start py RIT let's say that py RIT didn't exist yet and you decided today like all right I actually want to make it how much different would it be um yeah I would so there's a part of pyit that goes around the um the your local drive and starts finding all these scripts and loading in the revid UI and stuff like that mhm I would definitely write all that in C like just have make it as simple as possible so that removes a lot of like python code that gets deployed to the machine and it would run a lot faster uh so the discovery of the scripts would be a lot faster and then it gives me the flex because it's fast it gives me the flexibility um to start having a bunch of listeners and stuff so as you change the layout of the scripts in the folder the UI can readjust itself to represent that layout stuff like that so I would absolutely rewrite that part and then I would keep everything about the python the same so the buttons the way like the bundles work all of that will stay a it works amazing it's the simplest you can imagine yeah that's I think that part is fine that's yeah that part is what people like it and it's easy to use and like just just throw an icon in a bundle and it shows up in R it that's great and then the other thing is Python 3 which the one that we have in py right now barely works it may be useful in some instances and stuff but I spent the past four years trying to make Python 3 work inside of rhino so like I would bring these experiences and those changes to py RIT to the new py rbit so he has Python 3 I'm not sure if it would need really Python 3 inside revid environment I think IronPython is doing a very fine job and there's not a whole lot of people that want to run tens of row inside of Revit uh the naai numai is a big one actually quite a lot of people interested in Python 3 some people because of the UI because there are some packages in Python 3 majority I hear about napai what is it mat not not matplot pandas definitely working better with XEL so napai and pandas all the time people asking me about this one I've shared how to do it but I also mentioned like five times during the video like this is not like in final version it's still buggy watch out also interesting cuz just talked to Jean Mark and he said that for 2025 one of the big things for p they have is actually rewrite this thing in C like you said all this loading of the folders and kind of increased improv the speed and stuff so I was glad to hear that there's already you right away pointed it out and he also mentioned this as a big point on there to list yeah I think at this point pivate kind of needs that to like load faster um like as the tools cuz one of the things about having a scripting environment is that you would end up having a lot of scripts for different things you have like you know copies and copies of these scripts that do slightly different things um so it's important for that environment to be able to load all of this a little faster I think the latest RAV API change since they migrated to that net 8 I think this I think this was like a wake up call that all right a lot of things need to be reworked it's all about the Manpower spyit well at least John Mark it's really good what he's doing right now he's pushing kind of kind of looking for people collaboration putting a lot of effort kind of organizing all this stuff this is really good yeah these guys were the godsend cuz when I started working at mcne I thought I can work on the editor and pirate at the same time but once I started getting into the editor I was like I'm way over my head like I don't have time to do anything else MH and that's the time that sort of like they started um digging in and getting more a lot more involved and we are at the point that there it's a a organization run by them at this point like um I don't do anything in pyro anymore I don't write code for it anymore I just help out if they need anything but you know they're pretty much self-sufficient at this point like I didn't do I didn't do any pretty much anything for the transition from um 2024 to 2025 it's all them which is amazing no I definitely have huge respect to the team because they all working kind of parttime for fun cuz many many people Al mentioned with jar that don't realize that P RIT is not like organization company for profit it's just a bunch of people who are excited about python they work in ravit and they want to make it possible this is what kind of keeps this project alive right now shark is planning a lot to kind of get the funding pirate needs to kind of hire developer like C just at least part time for a couple of weeks like okay here's the task please do it just make it better and so this is what I understand is the goal for pirate right now which is great to hear yeah yeah it's it's been amazing I'm I'm first of all I'm honored that there's like a bunch of people that decide decided that this is something that they want to keep alive otherwise it wouldn't been dead um the other part that I'm really happy is that people are working on it that are actively using Revit every day I think that's abs like you should not make software that you don't use uh like one of the one of the challenges that I have at my think right now is that like I'm not using Rhino actively every day for creating things and I'm writing this script editor part that I'm not using actively in production every day and so I don't I'm blind to um some of the important ways that this is used and the Annoying points about it and how it could make be better so I kind of rely on the feedback of the people on The Forum that they come and say like this is not running as fast as possible like this is this is not supposed to be this this doesn't make sense that kind of stuff yeah it's always the little things that matter and know you think it's it's not that important sometimes this one little thing can make people so much happier just the way it works right and it's people build muscle memory like um python Rhino has this editor that's been around for like 10 something years 15 years and um when I walked into Rhino and I was like um uh Steve said we want to put Python 3 inside of rhino I was like great can I have this project and he's like yeah do you want to work on it keep working on um so we kind of realized with the transition to net the old editor wasn't really working either so we kind of need to create a new editor that is consistent especially with uh Windows and Mac because like Rhino Mac didn't have anything it had a text box for the script editor and a play button um so one we once we started working on this um I kind of realized that um the I had never really used uh the old the script editor in production so I didn't really exactly know how this descripted is being used and it's a lot and Beyond what you can see in the UI and what you can see in the code it's all those nuances of like how people are used to writing doing things so the moment I introduced like Rhino 8 came out end of 2023 uh the and the moment people got their hands on it they're like why is that button 16 pixels to the left cuz I have built this muscle memory with my mouse that I can just go click that button and it's not there and or like it shows a prompt now instead of just closing and whatnot and I was like holy smokes I this is not something that I ever thought about that it inflicts physical pain on somebody when you move a button like 16 pixels on the screen doesn't make any sense but it's such a big deal breaker this is why in ux everyone is afraid of new designs this is I think I heard some story somewhere there was a developer talking I don't remember exact story but the point was like everyone was complaining how bad the software everything is buggy and so on he did nothing to the code and he just I think he just told them like this is we did this and that like internally we changed the engine or something like this he didn't change anything everyone started writing positive feedback it's amazing it's so much better finally he was like I didn't do anything I just kind to gave you the placebo and you just took it like and he was just showing that sometimes users don't knows themselves what they want yeah it's hard to it's hard to because I feel at this point in my life after being five years of on the M forums when I started working there and I would get all these negative feedback I would take it personally I was like oh my God I'm a horrible person I broke people's stuff you moved it 16 pixels yeah they can't do their work now but now after all of this I kind of realized that I need to get past that and sort of like read what they wrote the the problem and kind of start going Beyond beyond that like what is the actual problem there is it it's not it's a lot of times it's not what they're asking it's somewhere deep somewhere else um so you kind of have to have this back and forth and you know get him to give you an example or a sample this repeatable error and ask a questions about how do you use this like you know do you use this first do you use that first that kind of stuff so that communication is incredibly important to kind of figure out why they hate this so much is it really because the button moved or is it because like the button is not prominent enough or because like for other reasons finding that out is has been it's it's actually quite fun like I enjoy that on the forums now when people when I go to the Forum I'm like somebody's like oh this is not foring working I get excited I'm like oh there's new challenge that you know I need to fix you're like detective going in all right time to crack your subconscious what did you mean here yeah yeah exactly so I talk quite a lot about McNeil so we can switch to that and actually have one question or two from the community and one is going to be perfect for this so the Jo from the community wanted to ask with the success of the pit how come Autodesk never make you a part of their team never kind of show any financial support and how did you end up at McNeil can we just dive into that yeah yeah yeah I mean I don't really know about autodesk's intention talking to other people I've gotten this comment a lot that autodex doesn't really support open source projects mhm I don't think it's their thing they want a company to be representing that and supporting their customers and stuff like that and I think as a corporation they have a easier more legally sane way of dealing with an actual company that makes a plugin and supports its customers and all that kind of stuff versus the one guy there that sometimes writes this program sometimes doesn't but have you talked to anyone on autod Des C not really oh they never even reached out to you no no no nobody reached out we never really reached out I wouldn't I mean I talk to a lot about out of desk all the time so I wouldn't really expect them to reach out but um yeah I mean they may they may be doing Jean Mar and the team they're really they're doing really good job with like um branding prob a little better as it sort of like a bigger group of programmer taking care of this so they might actually have some success with this I hope that to is going to wake up and see the in community because P ravit you started this as just a side project it's been 10 years and it's still so popular people keeping it alive it's I don't know someone recently wrote me that py RIT is one of not many things that made them excited about ravit again because every time they go and ravit they look for plugins and so on and finally they found P RIT he found a plug-in but it didn't do exactly like he wanted then he found out that he can hold out click on the button see the code often times when you need this just tiny change you look at the code it's in Python so it's pretty much English you just need to especially with AI you just kind of give it to AI say like I have this I need this what do I do and without even code you can start coding because just you can replace a few lines this is I don't know I'm very excited about pyate I spent a couple years teaching people because I don't know I just excited yeah youve been you've been doing a great job man I really appreciate we all really appreciate the um the spreading of the word like I I appreciate not because you're talking about P Revit but I appreciate it because you are teaching people and helping people automate things that could potentially save a lot of time and also it sort of like starts introducing programming language to a lot of people that are scared of this like I always say if you grew up and you used calculators these days Learn Python because it's kind of the new calculator um you wrote a bunch of functions in it doesn't really need to be Beyond that if you don't want it to be it can just be a thing that you run in the command prompt and you run some math in there and write a function and do your calculations and you're done but just that flexibility that familiarity of how on how machine works it could provide this uh capacity to at least like at least copy and paste the coding to ChatGPT and understand the changes that you made to it oh yeah yeah yeah I think this is how majority of people get started with pirate nowadays cuz there're thousands of scripts you just need to find the right one and yeah try to change it yeah and start modifying it and stuff um you asked another question about how I got to McNeil um pyRevit had a um a conflict a dll conflict with this other project that McNeil was working on at the time and they're still we're still working on it it's called Rhino inside Revit so it was a dll conflict when these two plugins were running on Revit and Scott Davidson from mcneel he texted me on LinkedIn and he's like hey like we got this conflict can we talk about it he noticed that I'm in Portland so he's like you're close I was like yeah there was a bill conference going on big Workshop going on at the time um so I was like I'll be in Seattle for that I met him there the first time we sort of like walked around help people try to figure stuff out I think he liked something there in me and then uh a couple of months later him and Bob came to Portland and they were visiting zgf and uh Scott was like hey do you want to meet up I was like absolutely so I had coffee with him and uh I actually took him to dinner uh took Bob and Scott to dinner and apparently I didn't know that Bob hates this people like taking him to dinner and paying for his dinner and stuff like that good start and I did I did all the wrong things like I I dressed up which also like that's not the Pacific Northwest thing people don't dress up around here um so he he didn't like any of that a friendy but the um but I met them for coffee the next morning and he asked me a question he's like what so what do you want to do oh I was working as a b manager at the time I was like hey this this the been fascination of my life that I want to make tools and help other people use them and take care of them and all that kind of stuff and he's like hey do you want to come work at mcneel and do that and I was like it's great question let me think about it um I was I had I was going through an interviews with Airbnb at the time um trying to get into this like group that they were creating to create like prefab automate prefab manufacturing and stuff like that is it like devel software development or is it more like be management yeah yeah software development yeah um to automate you know um uh certain things around like prefab houses and whatnot and that project kind of died Away really quickly after that and I was in way over my head like the other people that worked on that project were you know insanely good programmers very technical people that kind of stuff with years of experience in these kind of things so I was like going back and forth between whether I should accept that job or this job this job and whatnot and I'm really happy end the day I got the mnal job because that's the sort of like that was the environment that I was looking for it's chill people are very nice um I work on a you know fantastic application that's been around for 25 years um and there's a lot of to do you can write python if you want to do you can write C if you want write C you can write C++ if you want to do that so it's been it's been great that's that's how it got me into McNeil a conflict with P rbit yeah it's funny that a simple bug brought to you all this opportunity and meeting these people you never you never know what going to open the next door for you this is interesting yeah and what do you do in mcneel since you joined them can you share a little bit day-to-day live yeah yeah yeah so um when I started joining McNeil I was supposed to work I was supposed to be the rivet guy cuz like nobody really at mcil knew what rivit is um KK uh Kik from Barcelona office which is the main developer for Rhino inside Revit he's the one that put Rhino inside of Revit first he has he had the most experience with all of this because they created another plugin for Rhino it's called visual visual Arc that's sort of like Bim for Rhino and theyve been setting that for years so he he understood a lot of these Concepts um but no nobody really had like production experience with Revit so I was supposed to be the Revit guy and then I started working on that project and sort of like after a couple of months this Python 3 thing happened and I got way more excited about this um so I kind of slowly switched to that one and uh we hired another person his name is jaffi way better than me in Revit a lot of years of experience doing um uh actual manufacturing and stuff like that doing a lot of like complex facade panels those kind of stuff is he a developer or or like real like B manager without coding well he he was so he's a RIT Guru but at the same time like he did a lot of Automation in the stuff that he worked on like especially with like Dynamo and whatnot as far as I can I know like he doesn't write code as much he knows I think he writes a little bit of python and whatnot um but his biggest skill is that um he knows how to juggle Revit to and make it do the things that you know he wants to do so now he supports everybody that he's using Vino inside Revit which is fantastic because that take took that load off of me um and uh it created a better dynamic between him and Kik at the same time they bounce off ideas each other and sort of like go around it which is great it's very productive and then the I end up like the only thing I do is like I make icons for the Rino inside Revit that's pretty much the only thing I do after that it was just me and this new scripting edit script editing infrastructure in Rhino 8 which is Python 3 python 2 c as a scripting language making plugins grasshopper one grasshopper 2 um running the stuff from the command running stuff from visual Visual Studio code outside of rhino rhino compute like this thing has everywhere Rhino is the scripting is also and uh do you write a lot of code or is it more like kind of thinking laying out the road map uh there was more thinking than lay at the road map when I started on this not so much of that anymore because we kind of covered the whole landscape as much as you know I could think of it but these days it's mostly clean cleaning up the code that I wrote four years ago to get it to run faster now during those cleanups I break things again apparently I did yeah last night so Rhino 9 is a little bit broken this morning but uh they scripting stuff but I'm going to go fix that um but yeah it's mostly like you know writing um not a whole lot of code but replacing bad code with cleaner code that is more readable so you know in 6 months when the 's a bug there and I need to read that code I can actually understand better what's going on here um that kind of stuff okay so pretty much maintaining the code base yeah and was it hard to transition so can you take to this moment you you are just joining McNeil you just started working with them was it like a really hard to go into this coding environment or was it easy for you can can you just share your experience if they basically let you kind of figure it out right so there's not a whole lot of onboard I showed up and my like okay hi do you need a laptop I was like sure okay buy one so I got a laptop and they're like here's here's you we added you to the Rhino Source on GitHub so you can pull Rhino and then here's a document that how you build Rhino you go build Rhino and you're like oh I built Rhino on my machine now and you load Rhino and there's nothing there and it's just a viewport and you're like where are the tools and they you reach out on the slack and they're like oh yeah you have to load the plugins so you go load all the plugins and okay now it's looking more like Rhino and then and then you're like okay so I want to make this change how do I do this how do I do that so you start asking questions you'll start focusing on the thing that you want to do and ask questions when you have a question MH and then every once in a while once it's you're happy with what you have done you show up on this developer meetings that we have on Tuesdays and we have a section is called show and tell and you go and show what you've done and people talk about it and you know some hate it some love it that kind of stuff and you get some good feedback before you actually put it inside right it sounds a little bit like startup WIP which is really good one when you got start the company is not that big everyone is connected yeah and when you looked at the code was it overwhelming to you or was it just fine is it like on did you feel like it was on another another level when you saw the code of McNeil what they doing with Ryo and all of that um it really it very it very much varies and that which part of rhino it is and who worked on that code and all that kind of stuff there's millions and millions of lines of code in there obviously right so there's like it's a lot of different modules like there's plenty of plugins that are all importer and exporter file formats so there like 40 plugins there that just a normal Rhino when I'm developing like I don't even load those PL because I'm not exporting and importing files but there's a lot of code there the geomet engine is huge I don't know anything about it the U um the display engine is huge I don't know much about it um there is a whole lot of other plugins the parts of rhino that I know most about is grasshopper IronPython the scripting stuff uh a little bit of the display the plug-in logic stuff like that um the only times that I've sort of like gone beyond these boundaries is like there's something that doesn't work and I need to go track it so that takes me to like how the plugins are being loaded inside of Rhino and I was like oh maybe that that's where the problem is that kind of so I start reading the code in other areas of rhino but there's really no way of reading the whole code base unless you have something like this year in Rhino 9 I have a project that um Steve sort of like helping me out with and he's trying to um get me into more of a display code inside of rhino which is great so I can like create new tools in the Rhino like I want to create this tool that you can um array an object over curve but then you have to be able to draw that curve and then select the object and array it and then provide some adjustments and all and then display the things that you want to display about disarray that kind of stuff and that's all C++ and that's the part of right now that I don't really know much about so like I'm going to be asking a busi in different questions from people as I'm dealing with this um so so it's it's a massive code basee and you kind of you know go around reading what you need okay focus on one part at a time yeah and there's also like in this so big software code bases the software itself is a is a big chunk of the code base but there's so much other code around it that's uh revolved around like building and generating documentation and like you know making sure the Builds on Linux and Windows and Mac are all built correctly and like just general tooling around maintaining that soft MH um so there's like a bunch of those things that you could work on too like we got Pi got people that they spend most of their time writing the tooling things around Rhino not Rhino itself but just making it build correctly on the everchanging like Mac OS and that kind of stuff yeah so you make tools for your own team to be better at writing tools for others which makes sense yeah like for Rhino 9 uh Brian in the developer meeting um he was showing this other um web application sort of like that he made to for us to be able to manage all these features that we have planned for Rhino I and we can see the progress MH um like these are these are really cool things that you have somebody at the office that can write a custom tool for you to look at this thing that you're trying to do which is amazing like that's what I love about software so you can create all these like custom tools this is what people also get excited about py RIT because majority don't even see themselves as programmers they just kind of start by accident and then it just goes from there because they see oh I can create a tool yeah just notice like coming from me after all these years of writing programs and stuff like that I don't I still don't consider myself a programmer like I didn't go to Computer Science school I don't know how many different sorting algorithms are out there I just know that they're plenty um I don't know how to write the best sorting function for you know or the best memory uh safe code and whatever but I work inside of C most of my life and C if you know C it handles a lot of those conditions for you so I don't have to be worry about like releasing memory I'm like okay I can do this and the doet one time will handle that or I don't have to worry about like my buffer when I'm making a u web request or something like that the library would handle that like it's a lot easier for us there used to be a term when I was younger they called it puzzle programmers uh that you basically you program by putting things together which I feel like that's the majority of program these days is that you use a bunch of libraries that you know are designed for that thing and you put them together and you make something else and sort of like that's yeah like not a whole lot of us are out there writing new AI models from scratch different algorithms all that definitely not this is where all these memes come that programming without stack Overflow would not be programming yeah CU pretty much you just go there copy paste whatever with pyit it's you don't you don't need stack Overflow you just all have all these tools at at in front of view yeah so can we jump quickly back to py RIT I just wonder how your thinking in programming changed so could you explain the process of how you used to create uh pirate scripts like a decade ago and how you would create them now just kind of the the brainstorming the logic how much you would focus to reusing you know just these kind of General things yeah how do you approach it let's say this is something that I noticed as I was working on this rhino stuff I was like I can see how Engineers work and I can see how us architect designers work the architecture school makes us very comfortable with iterative design so you sketch something and like that doesn't work out throw it out do something else and you're like you draw this beautiful plan and you're like yeah that's great I'm going to throw this whole thing out that's my the architecture Professor would do this to me he's like we would do this just judgment session with him and he would look at stuff preview session and he would Mark things up and then he would turn it up in front of us throw it in the trash go do it again oh and it didn't make sense at first but like they they beat this into us so if I write a function the problem with me is that like there's no fear in me deleting it and rewriting it again a lot of programmers write this and they're like this works why are you why are you changing this I'm like well it reads better they're like yeah don't do that um so that I kind of have to be careful about like which direction I'm going in but I kind of this this helps me like you know this design thinking wants to keep redoing things so that's how it kind of end up working too like if I have pyRevit open and if I have Revit open and I'm doing something I that's why I like creating an environment like pit so much because I have that script beside me and I'm like I want to do this and then hit play I'm like that didn't work out change it again then change it again change it that iterative design right A lot of times like I can't for the life of me I can't figure out what the index in the loop is at any point in time because I'm not good that good at math so I have to like run this five different times I'm like oh it goes like beyond the boundaries it's not supposed to do that kind of stuff MH so that it that that repeating part helps a lot um the part that is almost necessary to do that is when you're creating a UI because you don't really see what you're trying to create one of the things that I really liked about working in pror with WPF was that Visual Studio had this like beautiful editor yeah oh yeah and you can put the buttons where there like you know make make the choose the right colors like border thickness that kind of stuff and make it look nice and nice and pretty I have a hard time doing it in Rhino because like we use a different um framework it's called etto and etto doesn't have a UI Builder like that is it also for the vpf this designer so the etos uh encapsulates and simplifies dealing with UI in different platforms so if you write your UI C coding etto when it's running on Windows it'll use WPF at the back end when it's running on Mac OS you use the Mac OS UI stuff when it's onux that kind of stuff so you don't have to rewrite your code there's a library that um sort of like makes it consistent across all these different um operating systems uh but that Library doesn't have like a whole other application for you to create beautiful windows with um so I kind of have to write the code and I have to build and run right now like that's doesn't look right like do it again do it again do it again which I find myself doing a lot like this iterative process still exist in my workflow these days um partly because I think they just beat that into us um as I've gotten better over time like becoming a slightly better programmer now I don't need to do that as often sometimes I surprise myself these days and I write like I spend 45 minutes writing something and then I compile it and run it and it works I'm like oh wow I didn't really need to change anything that's this is inter I've never been here before um this is the new territory yeah this is like new territory for me but that's yeah that's that I would say like thetive design approaches still exist as you're writing programs because you're really designing something and you're not going to know all the all the boundary conditions on the first try then you're going to run it then you're like you know click a button and it crashes I'm like oops I didn't think of that go back and change it do it again I can relate to that I remember when I started I pretty much did know Python and I would write like five lines of code I go and print everything I just wrote like print every variable and see okay I write five more lines print and I always was printing back and forth then I started printing less and less and also had a moment like you described like I was coding maybe for one two hours and I was like oh man I didn't print for so long I went in there printed and somehow it worked and I was like I don't know how it works I just I don't know what's going on I also had this kind OFA moment like wow actually it's possible to write code without printing every five minutes interesting yeah you start to get as you become a better programmer you start building these intuitions about like how things are supposed to work like you know intuitively at some point you know where your Loops end and where the other part of the programming starts and you know what values are at any point in time that kind of stuff you're start learning how to hold all of this in your memory um as you're programming and I think you know it's good and also print debugging is is a very valid thing it's great it works I mean in the end of the day it works it fast yeah I like it all right I can see that we have around 10 minutes left um I like to end a kind of every show with asking for advice for beginner programmers could you just give a few advices for beginners intermediates and where should they focus let's say I would say if I there's something else that I was talking to a friend of mine a while ago and I think that's that would be something that I suggest if you're interested in um in writing programming pick up Python and just learn the basics don't do anything crazy just learn how what variables are are and what Loops are and what an if statement is and what's a list and what's a you know that kind of stuff just the basics so you get an understanding of how a programming languages does the things that you're tell it to and then go find something that you want to do oh yeah I think that's the most important part like find a problem like I want to fix this mhm and then go about create a project out of that and go about um creating your application your the software that you're trying to do I think that's the best way to learn any kind of programming language because also it's very rewarding at every step of the way and you can you can make it as complicated as you want like let's say I want to say I want to design a car um by writing programs right so the first iteration is not going to be me designing a car the first iteration is going to be a a tiny long board with on four wheels four tiny Wheels that's going to be the first thing I'm like oh I got something working it moves now um and then the second in like oh I got a scooter now it's a little you know it's got a handle I can take I can tell it where to go that kind of stuff uh but that just the beauty of that iterative approach into this thing as you are getting better and as you're learning more I feel like that's just the best way to do it and it's just the Le least scary way to do it I think also M um cuz like a lot of times when you show I've done this before like I start teaching somebody Python and I show them this like giant landscape and they freak out and then I was like yeah that kind of makes sense it's fun to me because I've known that landscape for a long time so I can take somebody around and be like look at this beautiful thing look at this beautiful thing but for them it's like there's a lot of unknowns um so I think yeah that would that would be my suggestion like pick up just the basics that's the half an hour YouTube video on how python works just that and then pick something that fun that you want to do it's actually very good timing I'm actually working on Mini course for python on YouTube right now perfect but would you recommend people who are starting to kind of try to do something with py RIT right away or first take Python and try to make something you know like with python like a little website like a I would I would say I would say let I would let them decide what they what they get excited about uh and want to do that like if they if they're working in Revit every day and they they want to get excited about creating this little button that does that for them that would be that would be it or they might be be excited they have seen like web applications they're like hey I want to open an application in a browser and some stuff like that now I think whatever that gets you excited is good because at the end of the day you'll it's very rewarding you'll enjoy it you have built something and also you get to use that thing which means that you'll find problems and um you want to you want to add stuff to it later which continues this like you know search I think being excited is really important this is because many people kind of keep doing it you need this kind of spark I would say that to kind of keep it going that keeps you excited to kind of open the code editor in the first place yeah CU if you're kind of scared and you hate it well you're not going to go far but once you get to the fun level kind of this is actually really exciting yeah learning I feel like that learning and playing combination is incredibly important you can't have learning without playing and playing doesn't happen without learning as you're playing you will inherently learn something as you're finding out new things about this things um that learning and playing pair I think is very important well getting to the end mark it was really exciting to have you on the show can you tell people where can they find you where they can reach out are you do you do something that you want to share just yeah these days uh to be honest with you if you want me to respond to you quickly send me an email or find me on mcneel Forum I'm atan mcneil.com and um the My Forum handle is EAD same as everything else that I've had before so it's easy just search foran on the M Forum you'll find me there and if you shoot me a message if you DM me there if you I'll see that message a lot faster CU like I'm spending time on the Forum every day so that's you can reach me there um The Forum is actually much better than email to be honest with you because first of all I see it faster second of all you can upload samples and put videos and all that kind of stuff about the things that you're trying to do which is great if uh you think this is like super Revit specific uh we have a forum for pyRevit pyRevit forums that is structured exactly the same way as McNeil for it uses the same application backand um so they you know it's the same you don't have to learn anything new they work kind of the same and also I'm on LinkedIn if you want to find me on LinkedIn send me a message I think these are about I'm trying to stay away from like Instagram and all the other time consuming stuff so I think these are these are the good ones is there anything you want to share the projects you're working on something people should know about you um we'll share some stuff in uh upcoming in like in a in about a couple of months about Rhino 9 stuff um but what I'm working on is clean up the script editor inside of rhino 8 for Rhino 9 so we can it can run faster and with less memory use less memory and just all that kind of stuff stabilizing a little more and then also getting into Drafting and stuff in Rhino 9 so hopefully I'll I will have a part in improving Rhino drafting features for Rhino 9 which is you know a lot of fun for me uh learning how to write C++ better this time around and um also you know make something for Architects that can use right man thank you very much for coming on the show it it was huge pleasure having you especially I had to had py rivit that on the show about py rivit thank you I appreciate I appreciate all of you guys using py rivit and making tools and sharing with other people I think it's incredibly important sharing all the software software really doesn't cost um a lot to replicate um and sending these out tools to everybody else it's great I appreciate what you doing for PID a lot also like teaching people how to um write code getting excited about their own tools all that kind of stuff so thank you thank you everybody thank you everyone for watching goodbye hi real quick if you into py RIT and you want to boost your skills in record time then check learnr ai.com platform you'll find free in-depth courses for any stage of your programming Journey you'll get access to PIR with Basics Pro and modern UI courses plus you'll also get access to my code library and join my exclusive Community for pyRevit developers in the community we can chat discuss programming in Revit and most importantly you can ask for help when you need it the most if that sounds interesting go to learn rap.com to learn more
Deploy pyRevit for Teams using CLI with Jean-Marc Couffin | pyRevit Podcast #2
Create AI Assistant for Revit with Python and OpenAI | pyRevit Podcast #1
Revit Add-Ins That Test Themselves (Local LLMs + Mac Setup) [pyRevit Pod-15]