Big Migrations with Louis Beaudoin-Allaire
Read full transcript 23 segments
-
there's something new from our sponsor there's something new from our sponsor text control for decades TX text text control for decades TX text text control for decades TX text controls rendering was tied to Windows controls rendering was tied to Windows controls rendering was tied to Windows functionality but now it's a new era TX functionality but now it's a new era TX functionality but now it's a new era TX text control is platform independent you text control is platform independent you text control is platform independent you can run your net applications on Windows can run your net applications on Windows can run your net applications on Windows or Linux deploy with Docker containers or Linux deploy with Docker containers or Linux deploy with Docker containers kubernetes or host directly in Azure app kubernetes or host directly in Azure app kubernetes or host directly in Azure app Services seamlessly integrate document Services seamlessly integrate document Services seamlessly integrate document editing signing collaboration and PDF editing signing collaboration and PDF editing signing collaboration and PDF processing into your asp.net core and processing into your asp.net core and processing into your asp.net core and angular applications are you ready to to angular applications are you ready to to angular applications are you ready to to see it in action check out the live demo see it in action check out the live demo see it in action check out the live demo at demos. text at demos. text at demos. text control.com that's demos. text control.com that's demos. text control.com that's demos. text [Music] [Music] [Music] control.com hi I'm Scott Hanselman this control.com hi I'm Scott Hanselman this control.com hi I'm Scott Hanselman this is another episode of handome minutes is another episode of handome minutes is another episode of handome minutes today I'm chatting with Lou B from today I'm chatting with Lou B from today I'm chatting with Lou B from sharegate he's the principal software sharegate he's the principal software sharegate he's the principal software engineer and he works on sharegate by engineer and he works on sharegate by engineer and he works on sharegate by work leap how are you sir I'm doing fine work leap how are you sir I'm doing fine work leap how are you sir I'm doing fine and you I'm very well I was a little ill and you I'm very well I was a little ill and you I'm very well I was a little ill earlier this week but I'm feeling much earlier this week but I'm feeling much earlier this week but I'm feeling much better um coincidence here I did not better um coincidence here I did not better um coincidence here I did not realize when I invited you on the show realize when I invited you on the show realize when I invited you on the show that we had had one of your co-workers that we had had one of your co-workers that we had had one of your co-workers on a couple of weeks ago talking about on a couple of weeks ago talking about on a couple of weeks ago talking about net Aspire that's such a small world yes net Aspire that's such a small world yes net Aspire that's such a small world yes uh it was a great episode with Anthony uh it was a great episode with Anthony uh it was a great episode with Anthony who's our um one of our staff developers who's our um one of our staff developers who's our um one of our staff developers here who's working on our internal here who's working on our internal here who's working on our internal development platform so he's building a development platform so he's building a development platform so he's building a lot of tooling that actually accelerate
-
lot of tooling that actually accelerate lot of tooling that actually accelerate how we build software at work leap for how we build software at work leap for how we build software at work leap for all all the products uh so yeah it's uh all all the products uh so yeah it's uh all all the products uh so yeah it's uh he's been a very important part of the he's been a very important part of the he's been a very important part of the team he was working on charade before team he was working on charade before team he was working on charade before then moved to that Central team uh but then moved to that Central team uh but then moved to that Central team uh but yeah it's a great stuff so he works on yeah it's a great stuff so he works on yeah it's a great stuff so he works on internal tools that are enabling you all internal tools that are enabling you all internal tools that are enabling you all to make the public facing tools like to make the public facing tools like to make the public facing tools like like sharegate is that correct yep like sharegate is that correct yep like sharegate is that correct yep exactly now sharegate uh is a migration exactly now sharegate uh is a migration exactly now sharegate uh is a migration tool it lets you you know migrate to and tool it lets you you know migrate to and tool it lets you you know migrate to and from with Microsoft 365 like I have from with Microsoft 365 like I have from with Microsoft 365 like I have Google suite and you know maybe I could Google suite and you know maybe I could Google suite and you know maybe I could migrate from Google over to to migrate from Google over to to migrate from Google over to to M365 but when I hear about something M365 but when I hear about something M365 but when I hear about something like a migration I got to be honest with like a migration I got to be honest with like a migration I got to be honest with you and I know it's bad to say I think you and I know it's bad to say I think you and I know it's bad to say I think oh well this is just some file copies oh well this is just some file copies oh well this is just some file copies like do people minimize the complexity like do people minimize the complexity like do people minimize the complexity of of of a migration like I just of of of a migration like I just of of of a migration like I just did uh I'd say so yeah um so doing a did uh I'd say so yeah um so doing a did uh I'd say so yeah um so doing a migration is a lot more complex that it migration is a lot more complex that it migration is a lot more complex that it seems simply because well for for a seems simply because well for for a seems simply because well for for a couple couple reasons why um we you couple couple reasons why um we you couple couple reasons why um we you don't own the data so you take data you don't own the data so you take data you don't own the data so you take data you don't know what to expect you kind of don't know what to expect you kind of don't know what to expect you kind of dig around the customer's environment dig around the customer's environment dig around the customer's environment there might be a thousand documents there might be a thousand documents there might be a thousand documents there might be a million documents there there might be a million documents there there might be a million documents there might be weird settings here and there might be weird settings here and there might be weird settings here and there and then you need to figure out okay and then you need to figure out okay and then you need to figure out okay well how do I bring stuff over in the well how do I bring stuff over in the well how do I bring stuff over in the more efficient manner right from the more efficient manner right from the more efficient manner right from the source to the destination and then of source to the destination and then of source to the destination and then of course there are multiple different course there are multiple different course there are multiple different sources providers as you said Google sources providers as you said Google sources providers as you said Google SharePoint Microsoft uh exchange for for
-
SharePoint Microsoft uh exchange for for SharePoint Microsoft uh exchange for for emails and then destination is kind of emails and then destination is kind of emails and then destination is kind of the same thing you you're going to have the same thing you you're going to have the same thing you you're going to have different behaviors or different different behaviors or different different behaviors or different capabilities on each of those capabilities on each of those capabilities on each of those environments so you have to balance it environments so you have to balance it environments so you have to balance it all out and find a way to how to move a all out and find a way to how to move a all out and find a way to how to move a lot of data in an efficient manner yeah lot of data in an efficient manner yeah lot of data in an efficient manner yeah I think it starts out very like if I I think it starts out very like if I I think it starts out very like if I look at it very naively I'm thinking how look at it very naively I'm thinking how look at it very naively I'm thinking how hard can this be it's just a for Loop hard can this be it's just a for Loop hard can this be it's just a for Loop but then it becomes m multiple multiple but then it becomes m multiple multiple but then it becomes m multiple multiple nested for Loops asynchronously over a nested for Loops asynchronously over a nested for Loops asynchronously over a long period of time like over I'm sure long period of time like over I'm sure long period of time like over I'm sure some of these take days or weeks uh some of these take days or weeks uh some of these take days or weeks uh depending on how much data there is you depending on how much data there is you depending on how much data there is you have all the people all of their have all the people all of their have all the people all of their documents all of the documents documents all of the documents documents all of the documents permissions and like you said it could permissions and like you said it could permissions and like you said it could be a million Word documents or one giant be a million Word documents or one giant be a million Word documents or one giant like gigabyte sized video file and like gigabyte sized video file and like gigabyte sized video file and everything in between and that gets everything in between and that gets everything in between and that gets complicated fast in both those cases complicated fast in both those cases complicated fast in both those cases will use different you know potentially will use different you know potentially will use different you know potentially different uh requests different calls different uh requests different calls different uh requests different calls different apis because sometimes you different apis because sometimes you different apis because sometimes you know like uh for example you know you're know like uh for example you know you're know like uh for example you know you're talking about a big file well you don't talking about a big file well you don't talking about a big file well you don't want to stream this you know from the want to stream this you know from the want to stream this you know from the source to the destination by going source to the destination by going source to the destination by going through your memory on on the machine through your memory on on the machine through your memory on on the machine right because you're you're going to hit right because you're you're going to hit right because you're you're going to hit it probably and out of memory or dump on it probably and out of memory or dump on it probably and out of memory or dump on on the file system and it's going to be on the file system and it's going to be on the file system and it's going to be you know it's going to take a long time you know it's going to take a long time you know it's going to take a long time so you you have to find a way to take so you you have to find a way to take so you you have to find a way to take the data from the source and just stream the data from the source and just stream the data from the source and just stream it directly to the destination as much it directly to the destination as much it directly to the destination as much as possible but then uh gets complicated as possible but then uh gets complicated as possible but then uh gets complicated because sometimes you just you know uh because sometimes you just you know uh because sometimes you just you know uh you need to transform some things here you need to transform some things here you need to transform some things here and there you need to encrypt data
-
and there you need to encrypt data and there you need to encrypt data you're going to Azure you're going to you're going to Azure you're going to you're going to Azure you're going to Microsoft uh and you have to deal with Microsoft uh and you have to deal with Microsoft uh and you have to deal with what you what you have on hand in terms what you what you have on hand in terms what you what you have on hand in terms of uh of apis and and what they're of uh of apis and and what they're of uh of apis and and what they're offering yeah and and then there's offering yeah and and then there's offering yeah and and then there's on-prem to to the cloud there's Cloud to on-prem to to the cloud there's Cloud to on-prem to to the cloud there's Cloud to cloud and everything in between I know cloud and everything in between I know cloud and everything in between I know some companies have hybrid situations as some companies have hybrid situations as some companies have hybrid situations as well yeah and they all behave well yeah and they all behave well yeah and they all behave differently if you look at on Prem you differently if you look at on Prem you differently if you look at on Prem you know the apis from 2003 2007 are not the know the apis from 2003 2007 are not the know the apis from 2003 2007 are not the same as 2010 right 2010 introduces cesm same as 2010 right 2010 introduces cesm same as 2010 right 2010 introduces cesm and it really helped us in our job to and it really helped us in our job to and it really helped us in our job to actually oh we're now able to the CES actually oh we're now able to the CES actually oh we're now able to the CES the CLI side object model um which is the CLI side object model um which is the CLI side object model um which is like the official SDK for for SharePoint like the official SDK for for SharePoint like the official SDK for for SharePoint for those who are less familiar with for those who are less familiar with for those who are less familiar with that that that ecosystem uh but then you know as things ecosystem uh but then you know as things ecosystem uh but then you know as things went on seesam is less less present than went on seesam is less less present than went on seesam is less less present than it is now because we have better it is now because we have better it is now because we have better Alternatives now with Microsoft graph Alternatives now with Microsoft graph Alternatives now with Microsoft graph and better standardized and better standardized and better standardized apis oh wow I didn't even think about apis oh wow I didn't even think about apis oh wow I didn't even think about that there's there's 20 years of History that there's there's 20 years of History that there's there's 20 years of History here because like I know for example here because like I know for example here because like I know for example I've worked on SharePoint like 20 years I've worked on SharePoint like 20 years I've worked on SharePoint like 20 years ago and it was it was calm and and it ago and it was it was calm and and it ago and it was it was calm and and it was scary and then there was there was was scary and then there was there was was scary and then there was there was some soap in the middle somewhere and some soap in the middle somewhere and some soap in the middle somewhere and there was some rest so there's there's there was some rest so there's there's there was some rest so there's there's apis changing over decades client side apis changing over decades client side apis changing over decades client side and server side uh but then I'm on on and server side uh but then I'm on on and server side uh but then I'm on on the I'm on Google suite for my person the I'm on Google suite for my person the I'm on Google suite for my person personal stuff um I don't even know what personal stuff um I don't even know what personal stuff um I don't even know what their apis look like it's probably a their apis look like it's probably a their apis look like it's probably a hybrid mess of rest hybrid mess of rest hybrid mess of rest apis it's still um it's not that bad
-
apis it's still um it's not that bad apis it's still um it's not that bad actually you know it's kind of well actually you know it's kind of well actually you know it's kind of well documented uh you still you know documented uh you still you know documented uh you still you know just you still have some good ways to do just you still have some good ways to do just you still have some good ways to do some things but there are some apis that some things but there are some apis that some things but there are some apis that are you know out there and that they are you know out there and that they are you know out there and that they don't move much they kind of they're not don't move much they kind of they're not don't move much they kind of they're not stale but they work as is so they're not stale but they work as is so they're not stale but they work as is so they're not you know they're not changing and that's you know they're not changing and that's you know they're not changing and that's that's okay it's simpler for us to not that's okay it's simpler for us to not that's okay it's simpler for us to not have to update frequently certain parts have to update frequently certain parts have to update frequently certain parts of the code right um but then you always of the code right um but then you always of the code right um but then you always want to find if there's a better way to want to find if there's a better way to want to find if there's a better way to do it and improve and then it's going to do it and improve and then it's going to do it and improve and then it's going to depend is that API actually good and depend is that API actually good and depend is that API actually good and just for um to go back to the Microsoft just for um to go back to the Microsoft just for um to go back to the Microsoft ecosystem with with graph you know like ecosystem with with graph you know like ecosystem with with graph you know like graph is a basically a facade over over graph is a basically a facade over over graph is a basically a facade over over everything in Microsoft 365 and it's everything in Microsoft 365 and it's everything in Microsoft 365 and it's really helpful for us to have one way to really helpful for us to have one way to really helpful for us to have one way to authenticate to consent to uh a standard authenticate to consent to uh a standard authenticate to consent to uh a standard to make calls a good is Decay that we to make calls a good is Decay that we to make calls a good is Decay that we can rely on um but sometimes there are can rely on um but sometimes there are can rely on um but sometimes there are some some blind spots in in graph where some some blind spots in in graph where some some blind spots in in graph where you you simply you know cannot do you you simply you know cannot do you you simply you know cannot do certain things or you can do it but you certain things or you can do it but you certain things or you can do it but you need to combine different calls and need to combine different calls and need to combine different calls and sometimes you have to okay well I need sometimes you have to okay well I need sometimes you have to okay well I need to find an alternative because what is to find an alternative because what is to find an alternative because what is available is not what I expect or what I available is not what I expect or what I available is not what I expect or what I need exactly so then you start to dig in need exactly so then you start to dig in need exactly so then you start to dig in okay well Legacy earlier were talking okay well Legacy earlier were talking okay well Legacy earlier were talking about soap calls well we still have a about soap calls well we still have a about soap calls well we still have a few of them because we you know there's few of them because we you know there's few of them because we you know there's no better alternative uh there are some no better alternative uh there are some no better alternative uh there are some dlls in SharePoint that are exposed that dlls in SharePoint that are exposed that dlls in SharePoint that are exposed that sometimes oh well it's better to use sometimes oh well it's better to use sometimes oh well it's better to use that way because it allows to do certain that way because it allows to do certain that way because it allows to do certain things um seesm is still still a good
-
things um seesm is still still a good things um seesm is still still a good way to to work even though like uh we way to to work even though like uh we way to to work even though like uh we prefer graph over some things but you prefer graph over some things but you prefer graph over some things but you know you you have a kind of a list of know you you have a kind of a list of know you you have a kind of a list of you should do this first if it's not you should do this first if it's not you should do this first if it's not available then this then this then this available then this then this then this available then this then this then this uh for Microsoft 365 uh for Microsoft 365 uh for Microsoft 365 but everything uh on Prem is still you but everything uh on Prem is still you but everything uh on Prem is still you know using those Legacy apis if you will know using those Legacy apis if you will know using those Legacy apis if you will also so we need to keep a diverse um also so we need to keep a diverse um also so we need to keep a diverse um experience on these yeah you know I this experience on these yeah you know I this experience on these yeah you know I this is just I was actually talking to a is just I was actually talking to a is just I was actually talking to a friend of mine a couple of days ago friend of mine a couple of days ago friend of mine a couple of days ago about Microsoft graph being one of the about Microsoft graph being one of the about Microsoft graph being one of the smartest things that Microsoft 365 ever smartest things that Microsoft 365 ever smartest things that Microsoft 365 ever did like I don't think did like I don't think did like I don't think people understand the work involved in people understand the work involved in people understand the work involved in unifying an API across so many things unifying an API across so many things unifying an API across so many things like uh people say like you know what like uh people say like you know what like uh people say like you know what are the interesting things Microsoft are the interesting things Microsoft are the interesting things Microsoft does and they talk about Quantum and the does and they talk about Quantum and the does and they talk about Quantum and the cloud and all this but like from a cloud and all this but like from a cloud and all this but like from a business person's perspective graph is business person's perspective graph is business person's perspective graph is huge and I feel like it's almost 10 huge and I feel like it's almost 10 huge and I feel like it's almost 10 years old now and people don't realize years old now and people don't realize years old now and people don't realize how good it is especially and just to how good it is especially and just to how good it is especially and just to look at the graph Explorer and see how look at the graph Explorer and see how look at the graph Explorer and see how big it is and what you can accomplish big it is and what you can accomplish big it is and what you can accomplish when that came out that must have been when that came out that must have been when that came out that must have been really exciting for for the product at really exciting for for the product at really exciting for for the product at and the things that you were building and the things that you were building and the things that you were building absolutely just like I said like having absolutely just like I said like having absolutely just like I said like having to uh only one way to authenticate not to uh only one way to authenticate not to uh only one way to authenticate not having to figure out non-documented API having to figure out non-documented API having to figure out non-documented API how do you interact with is it with like how do you interact with is it with like how do you interact with is it with like a cookie or things like this you know a cookie or things like this you know a cookie or things like this you know and um one way to consent one way to use and um one way to consent one way to use and um one way to consent one way to use just you know it's it's so much simpler just you know it's it's so much simpler just you know it's it's so much simpler and and good documentation on top of
-
and and good documentation on top of and and good documentation on top of that that's that's really important that that that's that's really important that that that's that's really important that as I said like a lot of the soap apis or as I said like a lot of the soap apis or as I said like a lot of the soap apis or um or even like sees some weren't um or even like sees some weren't um or even like sees some weren't documented that much so just this makes documented that much so just this makes documented that much so just this makes a big difference when you want to figure a big difference when you want to figure a big difference when you want to figure out okay how can I do something and you out okay how can I do something and you out okay how can I do something and you don't have to spend a day trying to code don't have to spend a day trying to code don't have to spend a day trying to code something that might or might not work something that might or might not work something that might or might not work can look at the documentation and figure can look at the documentation and figure can look at the documentation and figure out okay I can do this and connect to out okay I can do this and connect to out okay I can do this and connect to that and then you know build something that and then you know build something that and then you know build something on top then it's it's really good when on top then it's it's really good when on top then it's it's really good when you're migrating from one place to you're migrating from one place to you're migrating from one place to another I this might be a silly question another I this might be a silly question another I this might be a silly question but I feel like the no one wrote the API but I feel like the no one wrote the API but I feel like the no one wrote the API to expect them to be called in the ways to expect them to be called in the ways to expect them to be called in the ways that you wanted to be called I think that you wanted to be called I think that you wanted to be called I think when they wrote them they expected one when they wrote them they expected one when they wrote them they expected one user to make a few calls to ask a few user to make a few calls to ask a few user to make a few calls to ask a few questions about a file and I wonder if questions about a file and I wonder if questions about a file and I wonder if these things fall over when you call these things fall over when you call these things fall over when you call them hundreds millions of times quickly them hundreds millions of times quickly them hundreds millions of times quickly in in in succession yeah it's really um when succession yeah it's really um when succession yeah it's really um when looking at for example migration it's looking at for example migration it's looking at for example migration it's really a high volume scenario where um really a high volume scenario where um really a high volume scenario where um you're you're you're repeating the kind you're you're you're repeating the kind you're you're you're repeating the kind kind of the same process for at kind of the same process for at kind of the same process for at different levels or different scope if different levels or different scope if different levels or different scope if you will right you're okay at the site you will right you're okay at the site you will right you're okay at the site level what do I need to do then at each level what do I need to do then at each level what do I need to do then at each library or list level what do I need to library or list level what do I need to library or list level what do I need to do and then up to the file up to the do and then up to the file up to the do and then up to the file up to the version and so on so you know for each version and so on so you know for each version and so on so you know for each call that you make you need to really be call that you make you need to really be call that you make you need to really be fine-tuned and careful about what you do fine-tuned and careful about what you do fine-tuned and careful about what you do because let's say for a single file or
-
because let's say for a single file or because let's say for a single file or even a version of a file let's say you even a version of a file let's say you even a version of a file let's say you need to make 10 calls to copy it for need to make 10 calls to copy it for need to make 10 calls to copy it for example I I don't have the exact number example I I don't have the exact number example I I don't have the exact number but you know let's say it's 10 calls and but you know let's say it's 10 calls and but you know let's say it's 10 calls and then you need to add an additional then you need to add an additional then you need to add an additional feature that requires an additional call feature that requires an additional call feature that requires an additional call well repeating it a million times Well well repeating it a million times Well well repeating it a million times Well you you know will have an impact on you you know will have an impact on you you know will have an impact on performance and on expectations with performance and on expectations with performance and on expectations with customers but also like uh you might customers but also like uh you might customers but also like uh you might trigger rate limiting or throttling if trigger rate limiting or throttling if trigger rate limiting or throttling if you will and then I I I like to use the you will and then I I I like to use the you will and then I I I like to use the imagery of having a call wrong fully imagery of having a call wrong fully imagery of having a call wrong fully placed if you will is a bit like having placed if you will is a bit like having placed if you will is a bit like having a car at front of traffic that's putting a car at front of traffic that's putting a car at front of traffic that's putting on the brakes for no reason like it on the brakes for no reason like it on the brakes for no reason like it might slow it down for a second this car might slow it down for a second this car might slow it down for a second this car but the one in the back will have all but the one in the back will have all but the one in the back will have all the the ripple effect and then it might the the ripple effect and then it might the the ripple effect and then it might take an hour or more because simply take an hour or more because simply take an hour or more because simply because you wanted to do something and because you wanted to do something and because you wanted to do something and then that call is isn't necessary so you then that call is isn't necessary so you then that call is isn't necessary so you have to really be careful about how you have to really be careful about how you have to really be careful about how you coordinate and not only uh and really coordinate and not only uh and really coordinate and not only uh and really build around the the critical resource build around the the critical resource build around the the critical resource so the limits are not necessarily the so the limits are not necessarily the so the limits are not necessarily the same across different services in same across different services in same across different services in Microsoft for example or Google or so on Microsoft for example or Google or so on Microsoft for example or Google or so on so when you interact with SharePoint you so when you interact with SharePoint you so when you interact with SharePoint you might have a shared limit of what you might have a shared limit of what you might have a shared limit of what you can call at at one time while um if you can call at at one time while um if you can call at at one time while um if you look at exchange for example well the look at exchange for example well the look at exchange for example well the limit is built differently it's per limit is built differently it's per limit is built differently it's per mailbox okay well then you can decide mailbox okay well then you can decide mailbox okay well then you can decide how to parallelize work differently how to parallelize work differently how to parallelize work differently because of those limits that are built because of those limits that are built because of those limits that are built differently it's really a question of differently it's really a question of differently it's really a question of orchestrating properly how because orchestrating properly how because orchestrating properly how because you're going to do tens of thousands or
-
you're going to do tens of thousands or you're going to do tens of thousands or even more calls in a really short time even more calls in a really short time even more calls in a really short time so you have to get the most of it are so you have to get the most of it are so you have to get the most of it are those limits published or are they those limits published or are they those limits published or are they discovered discovered discovered um the ones for graph are documented um the ones for graph are documented um the ones for graph are documented uh are they all enforced exactly as uh are they all enforced exactly as uh are they all enforced exactly as they're said maybe not but you know um they're said maybe not but you know um they're said maybe not but you know um and some are shared and some are shared and some are shared between uh at the you know per between uh at the you know per between uh at the you know per application like in in general application like in in general application like in in general across but um for other other things you across but um for other other things you across but um for other other things you just need to react so um and and one just need to react so um and and one just need to react so um and and one colleague was telling me this a few colleague was telling me this a few colleague was telling me this a few weeks ago and I I you know I found it weeks ago and I I you know I found it weeks ago and I I you know I found it really insightful is that you know how really insightful is that you know how really insightful is that you know how chaos engineering kind of became big a chaos engineering kind of became big a chaos engineering kind of became big a few years ago and really is a question few years ago and really is a question few years ago and really is a question of how you build fault tolerance of how you build fault tolerance of how you build fault tolerance properly well a lot of it has how we properly well a lot of it has how we properly well a lot of it has how we build software is really focus around build software is really focus around build software is really focus around how we uh react to fall tolerance not how we uh react to fall tolerance not how we uh react to fall tolerance not only from there's from rate limiting only from there's from rate limiting only from there's from rate limiting perspective absolutely because then okay perspective absolutely because then okay perspective absolutely because then okay well what you want to do right now might well what you want to do right now might well what you want to do right now might not happen right now because you're not happen right now because you're not happen right now because you're going to get oh well you need to retry going to get oh well you need to retry going to get oh well you need to retry later because you exceeded the limits so later because you exceeded the limits so later because you exceeded the limits so you have to find a way to okay well I'll you have to find a way to okay well I'll you have to find a way to okay well I'll wait but then you have to to think am I wait but then you have to to think am I wait but then you have to to think am I is it the right time to block that is it the right time to block that is it the right time to block that thread and just wait or should I do thread and just wait or should I do thread and just wait or should I do something else in the meantime you know something else in the meantime you know something else in the meantime you know so that is also something to to consider so that is also something to to consider so that is also something to to consider you know that is really interesting from you know that is really interesting from you know that is really interesting from a software architecture perspective a software architecture perspective a software architecture perspective because I'm trying in my mind to because I'm trying in my mind to because I'm trying in my mind to architect this and I know it won't be architect this and I know it won't be architect this and I know it won't be possible because this is the
-
possible because this is the possible because this is the accomplishment of many many many years accomplishment of many many many years accomplishment of many many many years but but but philosophically when you're designing philosophically when you're designing philosophically when you're designing this you could design it in a way that this you could design it in a way that this you could design it in a way that it simply reacts and adjusts and you it simply reacts and adjusts and you it simply reacts and adjusts and you make an entirely adaptive system with make an entirely adaptive system with make an entirely adaptive system with zero zero zero zero knobs zero configuration nothing it zero knobs zero configuration nothing it zero knobs zero configuration nothing it just it figures out the right number of just it figures out the right number of just it figures out the right number of threads it figures out the right number threads it figures out the right number threads it figures out the right number of asynchron and it tries to adapt and of asynchron and it tries to adapt and of asynchron and it tries to adapt and be very um very squishy or you could be very um very squishy or you could be very um very squishy or you could have infinite configurable knobs and have infinite configurable knobs and have infinite configurable knobs and give administrators a huge amount of give administrators a huge amount of give administrators a huge amount of work and and choices and they could work and and choices and they could work and and choices and they could decide to start with 10 threads and then decide to start with 10 threads and then decide to start with 10 threads and then go to 100 threads etc etc etc because go to 100 threads etc etc etc because go to 100 threads etc etc etc because you just don't know what you're going to you just don't know what you're going to you just don't know what you're going to get I'm curious which direction you all get I'm curious which direction you all get I'm curious which direction you all took we actually do offer a way to took we actually do offer a way to took we actually do offer a way to configure the number of threads you configure the number of threads you configure the number of threads you actually run uh because it's for for a actually run uh because it's for for a actually run uh because it's for for a few reasons because sometimes we we few reasons because sometimes we we few reasons because sometimes we we cannot determine necessarily how close cannot determine necessarily how close cannot determine necessarily how close to the Limit we are before eating rate to the Limit we are before eating rate to the Limit we are before eating rate limiting so sometimes we don't know limiting so sometimes we don't know limiting so sometimes we don't know exactly what's happening on your tenant exactly what's happening on your tenant exactly what's happening on your tenant and right you're you might not only and right you're you might not only and right you're you might not only encounter 429s so too many retries you encounter 429s so too many retries you encounter 429s so too many retries you might also encounter 503s sometimes that might also encounter 503s sometimes that might also encounter 503s sometimes that are very limiting because basically the are very limiting because basically the are very limiting because basically the service tell I'm on fire so please stop service tell I'm on fire so please stop service tell I'm on fire so please stop you know like um and in that scenario you know like um and in that scenario you know like um and in that scenario where well you know you cannot you where well you know you cannot you where well you know you cannot you cannot know that you're going to it so cannot know that you're going to it so cannot know that you're going to it so it's it's a bit more it's it's a bit more it's it's a bit more complicated um so having that kind of we complicated um so having that kind of we complicated um so having that kind of we have a per performance slider in our app have a per performance slider in our app have a per performance slider in our app for example that actually drives a
-
for example that actually drives a for example that actually drives a number of threads or and then requests number of threads or and then requests number of threads or and then requests we do in parallel logically um and that we do in parallel logically um and that we do in parallel logically um and that was useful for rate limiting but it was was useful for rate limiting but it was was useful for rate limiting but it was actually introduced before uh because actually introduced before uh because actually introduced before uh because traditionally on on Prem environment and traditionally on on Prem environment and traditionally on on Prem environment and even before back in the day when Office even before back in the day when Office even before back in the day when Office 365 started there was no rate limiting 365 started there was no rate limiting 365 started there was no rate limiting uh it wasn't really enforced so um the uh it wasn't really enforced so um the uh it wasn't really enforced so um the idea was okay well some people will idea was okay well some people will idea was okay well some people will actually make too many calls and then actually make too many calls and then actually make too many calls and then their environment is going to crash in a their environment is going to crash in a their environment is going to crash in a way especially on on-prem where you way especially on on-prem where you way especially on on-prem where you don't know the configuration of people don't know the configuration of people don't know the configuration of people you don't know how how good the machine you don't know how how good the machine you don't know how how good the machine is or machines that are running the is or machines that are running the is or machines that are running the environment and then environment and then environment and then um before telling you that it's going to um before telling you that it's going to um before telling you that it's going to you know be on fire it's actually on you know be on fire it's actually on you know be on fire it's actually on fire before you know it so uh you need fire before you know it so uh you need fire before you know it so uh you need to actually um have people okay well you to actually um have people okay well you to actually um have people okay well you can gauge and maybe slow it down because can gauge and maybe slow it down because can gauge and maybe slow it down because your server is not responding quick your server is not responding quick your server is not responding quick enough and it's it's actually uring your enough and it's it's actually uring your enough and it's it's actually uring your overall overall overall performance because the the the server performance because the the the server performance because the the the server is not able to answer U and respond is not able to answer U and respond is not able to answer U and respond quickly enough the uh that whole server quickly enough the uh that whole server quickly enough the uh that whole server on fire thing you know it might make you on fire thing you know it might make you on fire thing you know it might make you chuckle but there is a real difference chuckle but there is a real difference chuckle but there is a real difference between how cloud services behave and between how cloud services behave and between how cloud services behave and and how you know exchange on Prem works and how you know exchange on Prem works and how you know exchange on Prem works like exchange on Prem is Big Iron in a like exchange on Prem is Big Iron in a like exchange on Prem is Big Iron in a room somewhere and it it it has nothing room somewhere and it it it has nothing room somewhere and it it it has nothing in front of it there's no Azure front in front of it there's no Azure front in front of it there's no Azure front door there's no CDN it's just you door there's no CDN it's just you door there's no CDN it's just you talking to an IP address talking to a talking to an IP address talking to a talking to an IP address talking to a box and that box will happily reply
-
box and that box will happily reply box and that box will happily reply until 100% CPU and then it'll until 100% CPU and then it'll until 100% CPU and then it'll start awkwardly hiccuping and stuttering start awkwardly hiccuping and stuttering start awkwardly hiccuping and stuttering and then it's going to start throwing and then it's going to start throwing and then it's going to start throwing errors and then you have to decide do I errors and then you have to decide do I errors and then you have to decide do I back off and like you said a 429 is a back off and like you said a 429 is a back off and like you said a 429 is a very graceful you need to relax just tap very graceful you need to relax just tap very graceful you need to relax just tap the brakes and then you get the ripple the brakes and then you get the ripple the brakes and then you get the ripple effect but a but a 500 or 500 503 is effect but a but a 500 or 500 503 is effect but a but a 500 or 500 503 is like stop talking to me I can't like stop talking to me I can't like stop talking to me I can't concentrate and then maybe a car crash concentrate and then maybe a car crash concentrate and then maybe a car crash is coming and that's such an interesting is coming and that's such an interesting is coming and that's such an interesting and different perspective on how on-prem and different perspective on how on-prem and different perspective on how on-prem Works than how the cloud Works which Works than how the cloud Works which Works than how the cloud Works which usually should should be more graceful usually should should be more graceful usually should should be more graceful than that yeah yeah in general it is uh than that yeah yeah in general it is uh than that yeah yeah in general it is uh a lot more a lot more a lot more we we tend to see 429s before 503s uh we we tend to see 429s before 503s uh we we tend to see 429s before 503s uh but you know you never know since I was but you know you never know since I was but you know you never know since I was talking about fall tolerance you still talking about fall tolerance you still talking about fall tolerance you still need to cover for both just in case you need to cover for both just in case you need to cover for both just in case you know that's the kind of mentality you know that's the kind of mentality you know that's the kind of mentality you need to have and that's always when you need to have and that's always when you need to have and that's always when you you're roll on an external system that you're roll on an external system that you're roll on an external system that you don't have control over right um so you don't have control over right um so you don't have control over right um so you have to deal with what's how it you have to deal with what's how it you have to deal with what's how it behaves and what's happening there and behaves and what's happening there and behaves and what's happening there and you don't have a choice yeah it seems you don't have a choice yeah it seems you don't have a choice yeah it seems like there's the rate limiting and the like there's the rate limiting and the like there's the rate limiting and the you know the efficiency and how to call you know the efficiency and how to call you know the efficiency and how to call the apis but there's also Al a really the apis but there's also Al a really the apis but there's also Al a really big State Management problem here big State Management problem here big State Management problem here because you am I am I guessing that you because you am I am I guessing that you because you am I am I guessing that you have to keep track of the State of have to keep track of the State of have to keep track of the State of Affairs like you said you're getting Affairs like you said you're getting Affairs like you said you're getting versions of of a file you have one file versions of of a file you have one file versions of of a file you have one file that's got 10 versions what if you got that's got 10 versions what if you got that's got 10 versions what if you got seven versions and then some rate seven versions and then some rate seven versions and then some rate limiting thing happened or a crash or an limiting thing happened or a crash or an limiting thing happened or a crash or an error or whatever you have to know and
-
error or whatever you have to know and error or whatever you have to know and keep track somewhere of the State of keep track somewhere of the State of keep track somewhere of the State of Affairs that I was in the middle of Affairs that I was in the middle of Affairs that I was in the middle of getting this file and I only got seven getting this file and I only got seven getting this file and I only got seven versions I need to come back versions I need to come back versions I need to come back later that can be the combinatorics of later that can be the combinatorics of later that can be the combinatorics of how big that could get is is how big that could get is is how big that could get is is overwhelming do you keep a local state overwhelming do you keep a local state overwhelming do you keep a local state database and how do you manage those database and how do you manage those database and how do you manage those long running State um for a lot of long running State um for a lot of long running State um for a lot of things you know we have like our um our things you know we have like our um our things you know we have like our um our like task scheduling internally so that like task scheduling internally so that like task scheduling internally so that you know what what's up next and what you know what what's up next and what you know what what's up next and what you need to do and what you need to come you need to do and what you need to come you need to do and what you need to come back to um but aside from that you know back to um but aside from that you know back to um but aside from that you know if there's a really hard crash and we if there's a really hard crash and we if there's a really hard crash and we are not retrying for example we'll are not retrying for example we'll are not retrying for example we'll surface it in reports so that at least surface it in reports so that at least surface it in reports so that at least the the customer is aware of what what the the customer is aware of what what the the customer is aware of what what went wrong what worked and everything so went wrong what worked and everything so went wrong what worked and everything so that they can okay well you can copy that they can okay well you can copy that they can okay well you can copy over again or you can do an incremental over again or you can do an incremental over again or you can do an incremental copy and only copy what has change or copy and only copy what has change or copy and only copy what has change or what is missing at the destinations in what is missing at the destinations in what is missing at the destinations in between um but that requires yes to between um but that requires yes to between um but that requires yes to store store store some not a significant amount at least some not a significant amount at least some not a significant amount at least some sort of metadata uh locally we have some sort of metadata uh locally we have some sort of metadata uh locally we have our our our local database um that we we our our our local database um that we we our our our local database um that we we actually ownb built uh a few years ago actually ownb built uh a few years ago actually ownb built uh a few years ago um because we had we had some different um because we had we had some different um because we had we had some different um challenges with the ones that were um challenges with the ones that were um challenges with the ones that were available back then because we were available back then because we were available back then because we were doing a lot of uh of reporting also and doing a lot of uh of reporting also and doing a lot of uh of reporting also and then generating and refreshing reports then generating and refreshing reports then generating and refreshing reports was kind of very heavy on the disc and was kind of very heavy on the disc and was kind of very heavy on the disc and that was about 10 years ago so ssds were that was about 10 years ago so ssds were that was about 10 years ago so ssds were there but not everyone had them you know there but not everyone had them you know there but not everyone had them you know um so it was kind of hard on on certain
-
um so it was kind of hard on on certain um so it was kind of hard on on certain environments uh but that system is quite environments uh but that system is quite environments uh but that system is quite complex itself that I don't I don't complex itself that I don't I don't complex itself that I don't I don't think um we try not to change it too think um we try not to change it too think um we try not to change it too much let's say yeah you know that that's much let's say yeah you know that that's much let's say yeah you know that that's funny that you mentioned that because funny that you mentioned that because funny that you mentioned that because the ssds you're right like we all take the ssds you're right like we all take the ssds you're right like we all take them for granted but they haven't been them for granted but they haven't been them for granted but they haven't been around for 20 years you know there's a around for 20 years you know there's a around for 20 years you know there's a lot of on-prem exchange machines that lot of on-prem exchange machines that lot of on-prem exchange machines that are still on spinning discs spinning are still on spinning discs spinning are still on spinning discs spinning platters of metal and people this is I'm platters of metal and people this is I'm platters of metal and people this is I'm I'm having a little moment here because I'm having a little moment here because I'm having a little moment here because I'm realizing that like earlier in I'm realizing that like earlier in I'm realizing that like earlier in career people people who may only have career people people who may only have career people people who may only have five or 10 years in have a performance five or 10 years in have a performance five or 10 years in have a performance expectation in their brains of an SSD expectation in their brains of an SSD expectation in their brains of an SSD not just about it has better performance not just about it has better performance not just about it has better performance than an HDD but also how it than an HDD but also how it than an HDD but also how it behaves when you ask it for 10,000 files behaves when you ask it for 10,000 files behaves when you ask it for 10,000 files on multiple threads and how asynchron on multiple threads and how asynchron on multiple threads and how asynchron works the relationship between the CPU works the relationship between the CPU works the relationship between the CPU and the io um and and you're going to and the io um and and you're going to and the io um and and you're going to have to think about both of those things have to think about both of those things have to think about both of those things as you move from the modern from the as you move from the modern from the as you move from the modern from the from the original World to the modern from the original World to the modern from the original World to the modern world absolutely U but yeah we're world absolutely U but yeah we're world absolutely U but yeah we're fortunate now to have fortunate now to have fortunate now to have have access to a fast disc because uh have access to a fast disc because uh have access to a fast disc because uh there's too much just to bundle in there's too much just to bundle in there's too much just to bundle in memory right um at some point you you memory right um at some point you you memory right um at some point you you have to make choices on okay well this have to make choices on okay well this have to make choices on okay well this is going to slow me down a little bit is going to slow me down a little bit is going to slow me down a little bit but uh to go faster later on so uh it's but uh to go faster later on so uh it's but uh to go faster later on so uh it's been it's been really uh it's really been it's been really uh it's really been it's been really uh it's really balancing like these scenarios are balancing like these scenarios are balancing like these scenarios are balancing okay well where's
-
balancing okay well where's balancing okay well where's my um should I focus on you know be CPU my um should I focus on you know be CPU my um should I focus on you know be CPU bound memory bound or network and most bound memory bound or network and most bound memory bound or network and most of the time in our scenarios it's it's of the time in our scenarios it's it's of the time in our scenarios it's it's network is the one that is kind of the network is the one that is kind of the network is the one that is kind of the biggest challenge because of rate biggest challenge because of rate biggest challenge because of rate limiting and such where we don't have limiting and such where we don't have limiting and such where we don't have control over uh but then again the the control over uh but then again the the control over uh but then again the the software itself is deployed on is software itself is deployed on is software itself is deployed on is installed actually on customer machines installed actually on customer machines installed actually on customer machines so they are the one who have the specs so they are the one who have the specs so they are the one who have the specs you know who control the specs of the you know who control the specs of the you know who control the specs of the machine we have recommen recommendation machine we have recommen recommendation machine we have recommen recommendation of what you should have or expect um but of what you should have or expect um but of what you should have or expect um but then it's you know then it's you know then it's you know we don't know so we have to do a a best we don't know so we have to do a a best we don't know so we have to do a a best you know best effort of okay well what you know best effort of okay well what you know best effort of okay well what people will have what they and what will people will have what they and what will people will have what they and what will be the impact of certain certain code be the impact of certain certain code be the impact of certain certain code paths and the bottleneck is the network paths and the bottleneck is the network paths and the bottleneck is the network at this point for most Parts yeah most at this point for most Parts yeah most at this point for most Parts yeah most of the of the of the time you know I love my terminal I have time you know I love my terminal I have time you know I love my terminal I have completely customized my terminal with completely customized my terminal with completely customized my terminal with open source tools like oh my Posh I love open source tools like oh my Posh I love open source tools like oh my Posh I love the windows terminal I've been talking the windows terminal I've been talking the windows terminal I've been talking about it for a long time but recently about it for a long time but recently about it for a long time but recently warp has launched on Windows this is a warp has launched on Windows this is a warp has launched on Windows this is a new way of thinking about the terminal new way of thinking about the terminal new way of thinking about the terminal and I'm excited to see this newcomer and I'm excited to see this newcomer and I'm excited to see this newcomer into the windows developer ecosystem I into the windows developer ecosystem I into the windows developer ecosystem I think you should check it out I think you should check it out I think you should check it out I definitely push back on a lot of uh definitely push back on a lot of uh definitely push back on a lot of uh sprinkling AI onto an application but sprinkling AI onto an application but sprinkling AI onto an application but warp is really recreating the command warp is really recreating the command warp is really recreating the command line it's bringing Ai and collaboration line it's bringing Ai and collaboration line it's bringing Ai and collaboration and a modern user interface to an and a modern user interface to an and a modern user interface to an essential tool historically it's only
-
essential tool historically it's only essential tool historically it's only been on Mac but now warp is bringing been on Mac but now warp is bringing been on Mac but now warp is bringing itself to Windows as a native itself to Windows as a native itself to Windows as a native application it's really really application it's really really application it's really really interesting really interesting product I interesting really interesting product I interesting really interesting product I spent a lot of time with the team uh spent a lot of time with the team uh spent a lot of time with the team uh personally spending literally hours with personally spending literally hours with personally spending literally hours with them to help them improve their them to help them improve their them to help them improve their experience they're really passionate experience they're really passionate experience they're really passionate about delivering a great product I think about delivering a great product I think about delivering a great product I think the experience is really good and it's the experience is really good and it's the experience is really good and it's it's a new take on the terminal I think it's a new take on the terminal I think it's a new take on the terminal I think it adds a lot to the windows developer it adds a lot to the windows developer it adds a lot to the windows developer experience and if you maybe haven't been experience and if you maybe haven't been experience and if you maybe haven't been driving stick shift as much as I have driving stick shift as much as I have driving stick shift as much as I have you haven't spent a lot of time with the you haven't spent a lot of time with the you haven't spent a lot of time with the terminal and you want a terminal with a terminal and you want a terminal with a terminal and you want a terminal with a modern user interface that lets you talk modern user interface that lets you talk modern user interface that lets you talk to it in plain language you should check to it in plain language you should check to it in plain language you should check out warp it's really really interesting out warp it's really really interesting out warp it's really really interesting and I've had a lot of fun running it on and I've had a lot of fun running it on and I've had a lot of fun running it on Windows it's out now on Windows you can Windows it's out now on Windows you can Windows it's out now on Windows you can get started for free at war. deev Hansel get started for free at war. deev Hansel get started for free at war. deev Hansel minutes and as a listener you get 50% minutes and as a listener you get 50% minutes and as a listener you get 50% off your first two months of warp Pro off your first two months of warp Pro off your first two months of warp Pro with the code Hansel minutes just all with the code Hansel minutes just all with the code Hansel minutes just all caps Hansel minutes and pro gives you caps Hansel minutes and pro gives you caps Hansel minutes and pro gives you over a thousand AI requests a month over a thousand AI requests a month over a thousand AI requests a month which is certainly more than enough to which is certainly more than enough to which is certainly more than enough to uh to do some damage very very cool uh to do some damage very very cool uh to do some damage very very cool product I encourage you to check out product I encourage you to check out product I encourage you to check out warp the intelligent terminal with AI warp the intelligent terminal with AI warp the intelligent terminal with AI and I want to thank them for sponsoring and I want to thank them for sponsoring and I want to thank them for sponsoring him cancel minutes you know I don't him cancel minutes you know I don't him cancel minutes you know I don't bring a ton of sponsors on and I bring a ton of sponsors on and I bring a ton of sponsors on and I certainly don't bring them on as guest certainly don't bring them on as guest certainly don't bring them on as guest but I thought that this was a cool tool but I thought that this was a cool tool but I thought that this was a cool tool that you all should check out that's that you all should check out that's that you all should check out that's war.
-
war. war. dvan minutes now you had mentioned one dvan minutes now you had mentioned one dvan minutes now you had mentioned one thing I thought was interesting with big thing I thought was interesting with big thing I thought was interesting with big files you would not be able to go and files you would not be able to go and files you would not be able to go and take like a 50 a 50 gig video file copy take like a 50 a 50 gig video file copy take like a 50 a 50 gig video file copy it over hold it for a moment and then it over hold it for a moment and then it over hold it for a moment and then copy it to the next side because you you copy it to the next side because you you copy it to the next side because you you know you don't know where you're coming know you don't know where you're coming know you don't know where you're coming from and you don't where you're going to from and you don't where you're going to from and you don't where you're going to but maybe the apis don't support but maybe the apis don't support but maybe the apis don't support chunking chunking chunking how would you solve that problem there's how would you solve that problem there's how would you solve that problem there's few ways so now we're fortunate because few ways so now we're fortunate because few ways so now we're fortunate because there are some apis are really for um there are some apis are really for um there are some apis are really for um large upload sessions in M Microsoft 365 large upload sessions in M Microsoft 365 large upload sessions in M Microsoft 365 where you can just start your session where you can just start your session where you can just start your session then add some some the next chunk and so then add some some the next chunk and so then add some some the next chunk and so on and then close uh so that is very on and then close uh so that is very on and then close uh so that is very useful for such big files and before you useful for such big files and before you useful for such big files and before you know the limit of file size was a lot know the limit of file size was a lot know the limit of file size was a lot smaller a few years ago it was at some smaller a few years ago it was at some smaller a few years ago it was at some point was two gigs and it went I think 5 point was two gigs and it went I think 5 point was two gigs and it went I think 5 10 15 and then now it's I don't even 10 15 and then now it's I don't even 10 15 and then now it's I don't even know I think it's 50 or or even more I know I think it's 50 or or even more I know I think it's 50 or or even more I think um but back in the day what we think um but back in the day what we think um but back in the day what we used to do and where what we still do used to do and where what we still do used to do and where what we still do often uh for for smaller files if you often uh for for smaller files if you often uh for for smaller files if you will is um is really we're trying to will is um is really we're trying to will is um is really we're trying to stream directly from a sourcer stream directly from a sourcer stream directly from a sourcer destination so we just act as an destination so we just act as an destination so we just act as an intermediate of uh you know opening a intermediate of uh you know opening a intermediate of uh you know opening a stream getting some some bites in the stream getting some some bites in the stream getting some some bites in the buffer then pushing it to a destination buffer then pushing it to a destination buffer then pushing it to a destination and then we can have something that and then we can have something that and then we can have something that actually works actually works actually works uh so that we don't B bundle everything uh so that we don't B bundle everything uh so that we don't B bundle everything in memory on the machine and then you in memory on the machine and then you in memory on the machine and then you you could only do a single file or two
-
you could only do a single file or two you could only do a single file or two at the same time at that point you don't at the same time at that point you don't at the same time at that point you don't want this you want you want to go fast want this you want you want to go fast want this you want you want to go fast you want to do a lot of things so uh you want to do a lot of things so uh you want to do a lot of things so uh since like that kind of usage is what since like that kind of usage is what since like that kind of usage is what allows us to go to go fast actually and allows us to go to go fast actually and allows us to go to go fast actually and and and do more in parallel while not uh and and do more in parallel while not uh and and do more in parallel while not uh bottlenecking with the machine's specs bottlenecking with the machine's specs bottlenecking with the machine's specs is there um is there metadata that you is there um is there metadata that you is there um is there metadata that you like if you're moving from one system to like if you're moving from one system to like if you're moving from one system to another do you find a a disconnect another do you find a a disconnect another do you find a a disconnect between well I'm moving from Google between well I'm moving from Google between well I'm moving from Google Drive to one drive or I'm moving from Drive to one drive or I'm moving from Drive to one drive or I'm moving from box to whatever and like oh well this box to whatever and like oh well this box to whatever and like oh well this system doesn't support that bit of system doesn't support that bit of system doesn't support that bit of metadata and how do you deal with those metadata and how do you deal with those metadata and how do you deal with those kind of uh kind of uh kind of uh mismatches um as much as possible when mismatches um as much as possible when mismatches um as much as possible when something makes sense to map to another something makes sense to map to another something makes sense to map to another then we'll do it you know like um then we'll do it you know like um then we'll do it you know like um permissions might not be the same but permissions might not be the same but permissions might not be the same but you know like the permission levels you know like the permission levels you know like the permission levels let's say between Google and Microsoft let's say between Google and Microsoft let's say between Google and Microsoft are not the same but you know you you are not the same but you know you you are not the same but you know you you have on two side on both sides you have have on two side on both sides you have have on two side on both sides you have something that you know corresponds to a something that you know corresponds to a something that you know corresponds to a read permission a write permission you read permission a write permission you read permission a write permission you know that kind of thing where okay well know that kind of thing where okay well know that kind of thing where okay well then we're just gonna and we're going to then we're just gonna and we're going to then we're just gonna and we're going to offer the the ability for customers to offer the the ability for customers to offer the the ability for customers to actually map if they want to okay well actually map if they want to okay well actually map if they want to okay well this is all in read but now I want right this is all in read but now I want right this is all in read but now I want right at the destination well then you can at the destination well then you can at the destination well then you can just go in the UI and map to a different just go in the UI and map to a different just go in the UI and map to a different permission if you want um but you know permission if you want um but you know permission if you want um but you know or if you have your own levels of or if you have your own levels of or if you have your own levels of permission but I don't think it's permission but I don't think it's permission but I don't think it's recommended anymore uh that's that's a recommended anymore uh that's that's a recommended anymore uh that's that's a thing that can be done um thing that can be done um thing that can be done um but in general but in general but in general uh sometimes you have to make you know uh sometimes you have to make you know uh sometimes you have to make you know trade-offs and accept that something trade-offs and accept that something trade-offs and accept that something won't be supported because of the
-
won't be supported because of the won't be supported because of the difference uh and then you have to set difference uh and then you have to set difference uh and then you have to set expectations give proper visibility on expectations give proper visibility on expectations give proper visibility on customers that c areas are not supported customers that c areas are not supported customers that c areas are not supported either through our documentation or uh either through our documentation or uh either through our documentation or uh in the code sometimes we're able to in the code sometimes we're able to in the code sometimes we're able to detect those kind of things and give a detect those kind of things and give a detect those kind of things and give a warning saying okay we're going to copy warning saying okay we're going to copy warning saying okay we're going to copy but this will not be supported sorry but this will not be supported sorry but this will not be supported sorry about this or um I remember when we did about this or um I remember when we did about this or um I remember when we did Google uh many years ago Google Drive Google uh many years ago Google Drive Google uh many years ago Google Drive migration and then there were Sim links migration and then there were Sim links migration and then there were Sim links symbolic links okay well the the same symbolic links okay well the the same symbolic links okay well the the same file is at multiple file is at multiple file is at multiple places which one do I copy and where do places which one do I copy and where do places which one do I copy and where do I want multiple copies of the I want multiple copies of the I want multiple copies of the destination probably not because it's destination probably not because it's destination probably not because it's not it's not the same so then you have not it's not the same so then you have not it's not the same so then you have to to choose okay well we're going to to to choose okay well we're going to to to choose okay well we're going to copy it at a single place and then uh copy it at a single place and then uh copy it at a single place and then uh give a warning and say okay well just so give a warning and say okay well just so give a warning and say okay well just so you know now the file is there if you're you know now the file is there if you're you know now the file is there if you're not okay with it move it elsewhere uh not okay with it move it elsewhere uh not okay with it move it elsewhere uh but you know that's that's the uh the but you know that's that's the uh the but you know that's that's the uh the idea so the company's been around a long idea so the company's been around a long idea so the company's been around a long time you've been working on this for a time you've been working on this for a time you've been working on this for a long time but then we mentioned Anthony long time but then we mentioned Anthony long time but then we mentioned Anthony who we had on a while back talking about who we had on a while back talking about who we had on a while back talking about Aspire Aspire is new how are you using Aspire Aspire is new how are you using Aspire Aspire is new how are you using Aspire in the company and where do you Aspire in the company and where do you Aspire in the company and where do you see that kind of going forward because see that kind of going forward because see that kind of going forward because this is you know you're adopting the this is you know you're adopting the this is you know you're adopting the latest technology as appropriate but latest technology as appropriate but latest technology as appropriate but you're also using reliable technology uh you're also using reliable technology uh you're also using reliable technology uh there's no reason to change what already there's no reason to change what already there's no reason to change what already Works uh well we use it at certain Works uh well we use it at certain Works uh well we use it at certain places for migre we don't necessarily places for migre we don't necessarily places for migre we don't necessarily use it a lot because it's a you know use it a lot because it's a you know use it a lot because it's a you know it's a WPF application most uh you know it's a WPF application most uh you know it's a WPF application most uh you know it's not not a it's not not a it's not not a multi uh a distributed application I multi uh a distributed application I multi uh a distributed application I should say uh but elsewhere in in the should say uh but elsewhere in in the should say uh but elsewhere in in the organization on other sharegate products organization on other sharegate products organization on other sharegate products as well or you know services and all
-
as well or you know services and all as well or you know services and all then than we do uh it's mostly be for then than we do uh it's mostly be for then than we do uh it's mostly be for our um like I said our internal tooling our um like I said our internal tooling our um like I said our internal tooling to be able to run distributed to be able to run distributed to be able to run distributed application locally we have um we have application locally we have um we have application locally we have um we have some scaffolding Solutions we also have some scaffolding Solutions we also have some scaffolding Solutions we also have some uh uh some Tooling in terms of um some uh uh some Tooling in terms of um some uh uh some Tooling in terms of um you know running sources with mock data you know running sources with mock data you know running sources with mock data that kind of thing and then running all that kind of thing and then running all that kind of thing and then running all in containers on your machine and having in containers on your machine and having in containers on your machine and having to not have to deal too much with it and to not have to deal too much with it and to not have to deal too much with it and or run visual studio and then have I or run visual studio and then have I or run visual studio and then have I don't know like 10 consoles running you don't know like 10 consoles running you don't know like 10 consoles running you know we're trying to containerize Mo know we're trying to containerize Mo know we're trying to containerize Mo most of it and and script it so that most of it and and script it so that most of it and and script it so that you're able to get up and running faster you're able to get up and running faster you're able to get up and running faster and this is where Aspire is our our and this is where Aspire is our our and this is where Aspire is our our dashboard that we use for those uh for dashboard that we use for those uh for dashboard that we use for those uh for those efforts and it's really it's it's those efforts and it's really it's it's those efforts and it's really it's it's an actual it's really great tool when an actual it's really great tool when an actual it's really great tool when you actually um get to know it a little you actually um get to know it a little you actually um get to know it a little bit and and start using it to have bit and and start using it to have bit and and start using it to have better visibility on your different better visibility on your different better visibility on your different Services everything that happens all Services everything that happens all Services everything that happens all your logs and not having as I said to your logs and not having as I said to your logs and not having as I said to dig through different consoles dig through different consoles dig through different consoles everywhere on your app and on your on everywhere on your app and on your on everywhere on your app and on your on your machine and you don't know what is your machine and you don't know what is your machine and you don't know what is running where so yeah it's it's been running where so yeah it's it's been running where so yeah it's it's been great so far Anthony is the one that great so far Anthony is the one that great so far Anthony is the one that brought it to us and and really brought it to us and and really brought it to us and and really advocated for it and uh for now I'm advocated for it and uh for now I'm advocated for it and uh for now I'm hearing good feedback yeah I I feel like hearing good feedback yeah I I feel like hearing good feedback yeah I I feel like Aspire is probably one of the coolest Aspire is probably one of the coolest Aspire is probably one of the coolest things that's happened in the doet things that's happened in the doet things that's happened in the doet ecosystem in a while I'm curious ecosystem in a while I'm curious ecosystem in a while I'm curious do do you what do you I wonder sometimes do do you what do you I wonder sometimes do do you what do you I wonder sometimes why net and things like Aspire don't go why net and things like Aspire don't go why net and things like Aspire don't go outside the net Community like do you
-
outside the net Community like do you outside the net Community like do you think that there's still uh people that think that there's still uh people that think that there's still uh people that are like I don't want to use that it's are like I don't want to use that it's are like I don't want to use that it's Microsoft or I don't want to use that I Microsoft or I don't want to use that I Microsoft or I don't want to use that I don't know what net is because I feel don't know what net is because I feel don't know what net is because I feel like a Spire is one of those things like a Spire is one of those things like a Spire is one of those things where if you show it to a container where if you show it to a container where if you show it to a container person they're going to go oh my person they're going to go oh my person they're going to go oh my goodness that's amazing this is goodness that's amazing this is goodness that's amazing this is fantastic I should use this fantastic I should use this fantastic I should use this immediately yeah maybe maybe people immediately yeah maybe maybe people immediately yeah maybe maybe people Associated too much uh net Associated too much uh net Associated too much uh net and I think there's been some good Ono and I think there's been some good Ono and I think there's been some good Ono well ongoing efforts with Microsoft well ongoing efforts with Microsoft well ongoing efforts with Microsoft diversifying and not you know keeping it diversifying and not you know keeping it diversifying and not you know keeping it at the you know Microsoft EOS like at the you know Microsoft EOS like at the you know Microsoft EOS like closed ecosystem right there's more open closed ecosystem right there's more open closed ecosystem right there's more open source there's more more openness to source there's more more openness to source there's more more openness to running on uh you know on Linux instead running on uh you know on Linux instead running on uh you know on Linux instead or Unix or instead of Windows that and or Unix or instead of Windows that and or Unix or instead of Windows that and that's been great for for everyone at that's been great for for everyone at that's been great for for everyone at the end of the day so um yeah I I think the end of the day so um yeah I I think the end of the day so um yeah I I think a lot of people could benefit from using a lot of people could benefit from using a lot of people could benefit from using those kind of tools more and more those kind of tools more and more those kind of tools more and more instead of um you know I don't think instead of um you know I don't think instead of um you know I don't think there's any gatekeeping or so like um it there's any gatekeeping or so like um it there's any gatekeeping or so like um it it should be something that people it should be something that people it should be something that people leverage and I'm not familiar enough leverage and I'm not familiar enough leverage and I'm not familiar enough with other languages if they have with other languages if they have with other languages if they have something equivalent or as good as a something equivalent or as good as a something equivalent or as good as a Spire well it sounds like you're you're Spire well it sounds like you're you're Spire well it sounds like you're you're being very successful that the folks at being very successful that the folks at being very successful that the folks at work leap and sharegate are building the work leap and sharegate are building the work leap and sharegate are building the tools that you need have you had any tools that you need have you had any tools that you need have you had any limitations with net performance limitations with net performance limitations with net performance limitations or have you ever said I want limitations or have you ever said I want limitations or have you ever said I want to do this but I can't do it because C to do this but I can't do it because C to do this but I can't do it because C is preventing me or net is preventing me is preventing me or net is preventing me is preventing me or net is preventing me this is your thoughtful face I can see this is your thoughtful face I can see this is your thoughtful face I can see you thinking yeah you thinking yeah you thinking yeah I'm I don't I don't think we we have you I'm I don't I don't think we we have you I'm I don't I don't think we we have you know like with even with the the volume know like with even with the the volume know like with even with the the volume of data that we're moving the multi-
-
of data that we're moving the multi- of data that we're moving the multi- treading and when we especially in treading and when we especially in treading and when we especially in modern. net there's so much that was modern. net there's so much that was modern. net there's so much that was added in the last versions that uh I added in the last versions that uh I added in the last versions that uh I think it's just getting better and think it's just getting better and think it's just getting better and better where I if I look at you know better where I if I look at you know better where I if I look at you know older code that's running onet framework older code that's running onet framework older code that's running onet framework well of course there's some things that well of course there's some things that well of course there's some things that we had to do like homeade or you know we had to do like homeade or you know we had to do like homeade or you know rely on third parties and such that if rely on third parties and such that if rely on third parties and such that if you would rebuild this in modern. net you would rebuild this in modern. net you would rebuild this in modern. net inet 8 let's say or or or you know those inet 8 let's say or or or you know those inet 8 let's say or or or you know those kind of versions well you wouldn't need kind of versions well you wouldn't need kind of versions well you wouldn't need to build this over again you know I'm to build this over again you know I'm to build this over again you know I'm I'm thinking uh dependency injection I'm I'm thinking uh dependency injection I'm I'm thinking uh dependency injection I'm thinking the threat management that you thinking the threat management that you thinking the threat management that you know with all asyn of Weight that's been know with all asyn of Weight that's been know with all asyn of Weight that's been around for a long time now but people around for a long time now but people around for a long time now but people might not realize when you know 10 years might not realize when you know 10 years might not realize when you know 10 years ago it wasn't wasn't really there right ago it wasn't wasn't really there right ago it wasn't wasn't really there right so that's the so that's the so that's the um yeah so so I think everything we um yeah so so I think everything we um yeah so so I think everything we wanted to accomplish we were able to wanted to accomplish we were able to wanted to accomplish we were able to accomplish either with hemade solutions accomplish either with hemade solutions accomplish either with hemade solutions that are not ideal but they still answer that are not ideal but they still answer that are not ideal but they still answer the need right yeah well it sounds like the need right yeah well it sounds like the need right yeah well it sounds like you guys are having a lot of fun over you guys are having a lot of fun over you guys are having a lot of fun over there at sharegate uh folks can check it there at sharegate uh folks can check it there at sharegate uh folks can check it out at sharegate domcom and see both the out at sharegate domcom and see both the out at sharegate domcom and see both the migration product as well as protect migration product as well as protect migration product as well as protect which is basically on top of once you've which is basically on top of once you've which is basically on top of once you've migrated everything you want to to make migrated everything you want to to make migrated everything you want to to make sure it's all secure it's working well sure it's all secure it's working well sure it's all secure it's working well for everyone and uh if you decide to for everyone and uh if you decide to for everyone and uh if you decide to start rolling out co-pilot you make sure start rolling out co-pilot you make sure start rolling out co-pilot you make sure that all that data that you migrated is that all that data that you migrated is that all that data that you migrated is ready to be uh indexed appropriately ready to be uh indexed appropriately ready to be uh indexed appropriately thanks so much for spending time with me thanks so much for spending time with me thanks so much for spending time with me today yeah that was great thank you
-
today yeah that was great thank you today yeah that was great thank you we've been chatting with Lou Bondo the we've been chatting with Lou Bondo the we've been chatting with Lou Bondo the principal software developer at principal software developer at principal software developer at sharegate by work leap and this has been sharegate by work leap and this has been sharegate by work leap and this has been another episode of Hansel minutes and another episode of Hansel minutes and another episode of Hansel minutes and we'll see you again next week a a [Music]
Summary
This transcript presents TX Text Control, a platform-independent software component that enables cross-platform .NET application development for document processing, editing, and signing. It signifies a new era for developers previously tied to Windows functionality, offering deployment flexibility with Docker, Kubernetes, and Azure App Services. The practical takeaway is to explore their live demo at demos.textcontrol.com to see its integration capabilities firsthand.