So welcome, this is the developer section here. We've got 300 level talks. We're going to be here all today and tomorrow there is the IT300 level talks next door. So we got a lot of real deep content. Thanks for hanging out. There is some standing room in the back. There's also overflow spaces over here to the left. And if you do decide to go and wander around, there's also places that you can see us. We have a very kind of unique experience. Here you can tell that it is unscripted. I have a clipboard which I'm very excited about. It's not digital, it's not a digital clipboard. Everything here is gonna be as demo heavy as possible and as developer focused and his deep technical as we can be. I want to encourage folks to join the chat if we have time. Maybe not in this session, but other sessions will be having live questions both from the hybrid audience and from our in person audience. It will all go through the chat. So if you see a QR code you're gonna hit that or you can hit AKA dot Ms Slash. Night slash Dev- chat that will be up on the screen and that'll be in the QR codes as well and then that'll get put into our teleprompter here and we'll be able to answer your technical questions both for the in person and the online audience. What would help me out would help mark out is if you take as many pictures and video as you want and then hashtag Ms Ignite because that tells leadership that they think this is useful and helpful thing. So take pictures, hashtag best talk ever. And you no pressure and that'll be great. Let's just take a little breather and we'll begin in about 30 to 40 seconds. My heart rate gets back down you. Good. Yep, I'm good. Alright, cool. Hmm. I expected my mic to be off for that part. Alright, so now we're gonna actually be live live. This is where we push like a record button somewhere. It's really cool to do hybrid audience. You're nervous. Yeah, yeah. I don't know what that means. OK. I thought that was a commentary on me being bad. Hey friends, we are live at ignite up here in Seattle, WA. My name is Scott Hanselman. I'm here with Mark Russinovich. Thanks for hanging out. Mark and his day job is the CTO of Azure, right? But we're not here to talk about his day job. I'm more interested in his side hustle, giving away free utilities. CTO of system internals. CTO of Sysinternals and you've been doing systems for how many years? Now 26 years as of this month. Ohh wow, yeah OK and just internals. Of course, as you know, is a suite of tools. You can get it at sysinternals.com. It's been around for 26 plus. Years how many people have used this is internal. There's our system. Internal speaker just wanted you raise your hands. So you can PayPal mark at Mark. That's pretty cool. 2627 years of free content. Free stuff. You can still enjoy it. You're still right. Yeah. I still love it. You're still writing some of that code yourself? Yeah. Alright, you can go and look at that. We can go ahead and bring up our big screen here and we'll see the Sysinternals website. Oops, that's my script. I forgot to run zoom it. So I'm going to go and actually run zoom it right here. Zoom in is the tool I'm the most interested in. I think that the summit is pretty, pretty exciting. This is the tool that I use all the time. I get to zoom in on stuff, so you hit a button control one and it zooms in. I can pan around, I can click a button and I can point it stuff, and I can draw circles, I can do things in different shapes, I can type hey blah blah blah. What am I missing? What other system internals? Stuff is there's a bunch of other things, like in. If you just want to blank screen, OK, we'll give you a dark one. You can do smiley faces and yellow, you can do W and that will. Take you to a white screen. But it's got a bunch of other features too that are helpful for presentations. Like you can do a break timer so you can do a countdown timer. You can actually have it with a custom background too, which I won't show by the way funny. Joe here is. It shows you the negative timer Dave Solomon who I used to present Windows internals with. I I wrote this tool back when we were doing presentations because we were using a very clunky one, so I wanted our own. So I made a break timer for it. He didn't know that it went negative and he'd go on and he'd went on a break and came back like 4 minutes late. You know, everybody sitting there waiting and then was really embarrassed and asked me to remove this feature of it going negative. Which I didn't. Now why did you make this in the 1st place? Weren't there like things I could buy? Yeah, well we had a a presentation tool that came with one of the clickers we bought but it was really clunky. Like to zoom you had to control Alt 5 function key, yeah and so it would just be really clunky to use and it didn't have like smooth drawing and some of the other didn't have break timer with it. So decided to just do my own that would be much more intuitive to use. Now, did you do this like on a short flight? You just like we're on an airplane you wrote in like? 20 minutes over the weekend, actually. We're picking. Yeah. Seriously. Yeah. OK. So over the weekend, many, many years. Ago and I'm not done showing. You pardon me, yeah. Latest feature let's see how many people know about this one recording the screen. Ohhh. Yeah. Hang on, hang on. Yeah, say it again. Recording the screen? Yeah. All right. Let's better. To Control 5 is the default and it works with all of the other features like Live Zoom which is control 4. And then you can do go into drawing mode. Escape out control. Four to and then control 5 hmm, and then we can. Record that and then. Then that's sitting right here. And did it work? Of course. Wow. Of course. So, so offended. That looks cool. Wow. Yeah, 30 frames a second. Just checking. Yeah. Just checking your work. Just checking your work. OK, so one of the things that I always thought was really cool about sysinternals and I figured this out kind of myself. You've got this, not this internals rather but zoom it. I've got this file here called zoomit.exe. I'm right click on it and say properties and it's got about a Meg. It's kind of a small file and I you double click on it, it runs instantly and quickly and it sits down here in the corner so there you can see it's sitting right there and I I was messing around one day as as as you do. In the in the temp folder. I was just hanging out in here. Because I just. In the command prompt. Well, in the folder, so that's the other, that's, that's, that's. My weren't using PowerShell A. Second, yeah, that's my secret shame. OK, so so this is my yeah yeah place. To just be open, let it out. OK, this is safe space. This is my PowerShell prompt. This is my git branch. This is the version of net I'm using. That's my blood sugar in real time because pretty. Cool. Was you know reasons. Yeah right. OK that's my blood sugar and all the important things that I need to have. But often I want to delete a folder so I don't know how to say RD/S in PowerShell. Yeah So what I used DOS for is I go into DOS and then I go into temp folder and then I go RD/S temp. And then I exit DOS and that's what DOS. You could probably make a PowerShell script. I could do a PowerShell script but now I but I know how to do this. OK. Yeah, so. Makes sense? Yeah it does. OK, so I'm in here in the temp folder and I'm gonna type start dot because that's how I run Explorer and I was poking around and I was like, what? Yeah, you look behind the curtain. What are? Those, ohh, by the way, remind me to tell you about. This but what? Yeah. So that's a yeah. I'll talk about that bug later. Embarrassed me in public like. This. Like, yeah. Ohh goodnight everybody. Alright, so we got the temp folder and I got zoomit64.exe. So then I'm like what's going on there? So then I go into Visual Studio and I go file, open file because that's what you do. And then you sure you go into your, zoom it and then. You click this thing that no one's ever clicked. Ever. No one has. Ever. Clever. Done. I've never, you know, anybody clicked that. Ohh look hang on what, what what what? Are open with. Open with, open with. So I click open with on the thing and then you're in Windows 95. And then you you you can click all these other things, right? And then I click resource editor and I part poking around here and this is how you can like go and see your cursors and all the different icons and stuff that you made. But then I found this RC zoom it 64. And then I looked at the Pex code and I said to myself self, that's is that Mike Zawinski from monsters? Incorporated yeah. No, no. Mark Zebrowski. Mark Zebrowski, who's? That he is the guy that worked on the portable executable format and and DOS and put his little signature in there and it he's, you know, in every single file in the world now. So there's a guy, a real person, yeah, hanging out right now, probably watching us right now live because that's what he does. And he put his initials at the beginning of every executable on the. Planet he did. I was thinking of changing my last name to match that so if you may blame credit, but then. Everyone. Yeah, yeah. Then then I could just say it was mine, but. Excellent. It's a finnic. Yeah, yeah, yeah. We can make that happen. OK, so why is there a zoom it in my zoom? I don't know why are you poking around like that. That's the like. Well, I mean, I felt pretty good about it. I felt like I was doing low level really. Nerves inspection? Yeah, I. Was are better ways. Why me? Why is there? Well, so sits internals. The whole goal is 11 executable no matter what you're doing and the the challenge that I ran into in the early days of system internals is the tools would have a driver with them and I didn't want people to download it. Exit with the driver file and then have to worry about that. So I would embed the driver in the main executable as a resource that on the fly the tool would say, oh, I need to extract this driver, extract it and then launch. It was also useful for cross-platform support going from Windows and X 32 bit to 64 bit like you're seeing, as well as Windows 95 and Windows NT support that would be built into the same binary so. What is that? Is that what kind of? That is a 32 bit X86. 32 bit? I'm on a 64 bit machine, or I'm on an R machine, but that is a X86. Yep. OK, and what it does is the code. We open this up. And. Ohh yeah I think it's over here in solution Explorer. So I we have we brought the source code of zoom it with us today. And I wanna just like yeah open that yeah. So I wanna just Scroll down a bit because there's a lot here. Yeah you've done a bit of work. Keep going keep. Going keep Yep, Yep. Alright, alright, alright. Don't make fun of. Long files ever say you should put your class file in another file you know. You you don't get to say that, you just to say we're not. Service believes it all should be in one file. Azure, funny story. Azure Azure dot C Yeah, one big file, one big file. Yeah, there's a header file. Too ohh there's a header file. Apologize. But so the line we're going to go to is right around here. Ohh if you look it says am I running on 64 bit? You should zoom on that. Yeah, I should. Am I on 64 bit by the way? You can. Watch this. Yeah. Wow, yeah, you can look at antialiasing up close. It's kind of kind of fun. But anyway, you can see am I on 64 bit? If so, then run the 64 bit version. And then you but you got an if def around it, yeah? So you only need to build that when you're not building 64 bit. Yep. And then this thing. Gets the original file name, extracts this, the 64 bit version, and you can see that right here. Extract resource and there's there's what you were looking. At it. So it blooms, it unfolds in this space, and then it does it delete. It, and it does. It deletes it when you exit, it remembers and it'll delete it. That's so it doesn't leave, you know, tries to leave your system clean. I like it. That's pretty cool. And is that something that you keep, you're keeping secret, or is that something that a technique that is like? A don't tell. Anybody. OK, so we should not do that. We should not do that ourselves. Yeah, alright. And will that work like an arm, like on a Surface Pro X? Or it does. So ARM 64 some a bunch of the tools support ARM 64 with the this kind of multi binary support. We haven't done that with some yet. Look forward in the near future and it's going to have this the the 64 bit. From version embedded in it as well, because now we've got 32 bit emulation, 32 bit 86 emulation for ARM 64 Windows. So this universal you know runtime right there. Yeah. So then this file is X86 and that is your universal binary because everybody can run it. And then you run full native. That's right. That's sweet. OK. I dig it, but we also have native versions, like there's 64 bit versions of Windows that don't have 32 bit installed. So there's you can go download the 64 bit. Point directly. That's a good point because this is zuma.exe and the one that I saw earlier was zoom at 64 and then the summit A. Yeah. Zoom AT64A for a yeah. OK, cool. Alright, now one thing that's also worth pointing out is that you didn't like the way that I was learning that. Like I thought it was normal to go into DOS. That's not the way to do it. OK, well, yeah. Show me the way to do it. Show me well, so process monitor you've run. Process ohh I have run process monitor process on to its. Friends, some of you that have been in my case. And explain talks. Get when in doubt. Run Progman and that's a OK. So some of you like one person has been there, no? I, I, I, I just want to say that you, you imply you, you gave me the vibe that the entire audience was gonna say when in doubt. Yeah. And they did not. That's the vibe I. Had when in doubt. Run product. Yeah, there it is. So it's actually the most useful tool for troubleshooting it. And the reason it's when in doubt is there's so many cases like. You know, my daughter came home from school with the homework problem and we ran Pacman and it solved the problem. Like it just solves everything and so just when in doubt, just try it. This is a really important point though, because a lot of people feel that Windows is a black box and you can't see inside, and that's all lies. Like the one thing that I learned in 25 plus years of using sysinternals is there's nothing hidden from you. That's right, you just need to bring it to the front. So here we've got the registry, we've got the file system, we got the network, and now there's a thing though I found out. Talk about if you hit control T in progman, you get this and check out this corner here look at this. There's a lifetime like progress bar thing, so where the zoomit around here anywhere? It's gonna be towards the bottom because it's. Is it? Yep. There. Ohh, hang on. There's two of them though. Yeah, OK what's? Going on. So you exited 1 and that's why you've got the grayed out icons there. OK, so this is a. Vestigial. It's like it's a ghost, like, and if you take a look over here, you can see that they ran for a very short period of time and then terminated. That's why the dark green there, because they're not running. And then here's your. Your your new ones. Whoops. Think we may have zoomed to close to the sun? Yeah, right there. OK, so let's let's zoom out slightly. One of the things that's great about zoom it is it makes it available for everyone to see. But one of the bad things about zoom is when you do talks like this and you go look, it's right obvious here, and then you go there and like, isn't that clear? So you gotta be gentle. Look at that. And there you go. OK. That would have that, that, that would. Have been and you could actually if you go to zoom it, you know if you double click it'll take you to the zoom it. OK so double click here. Now it's taking start over to Ohh wow. And if you do a filter right click and say or on the PID and the process ID. OK. Go ahead. Whatever that you're the CTO. So you can say include. OK. And now you're just looking at summit and and if we Scroll down, you know here you would be able to find where it's extracting the the payload. OK, so you ohh, there it is right there. Yeah, so you can see all the different places and then look at that. There's your create file right there. Oops, wrong. Drawing too much? Yeah, yeah, there it is, right there. Yeah, nothing is hidden. And then you've even got thread creates in there now too, which is cool. Alright, when in doubt, do your. Could also look at the way it was launched. Ohh. Here. And see it. OK, so hang on though. Why are you passing yourself into yourself? This is like inception. Yeah, it's because some of the tools have command line arguments that the child needs to know about. You know, passed on from the parent to the child, and in this case there's none, but it sees its starting path. There ohh right. So then this extraction technique is something that you use across all of your things. Zoom. It doesn't take a parameter, but other things could. Take it. Alright, I like it a lot. OK so we'll come back out of Proc Mon. That's cool. Ohh yeah. When I was doing this I was drawing like this and I've got a Surface Laptop studio so I've got a pen underneath it and I was noticing that I could do two things. One, I can use my finger like you know John Madden and like I don't know sports ball, but I do know about EA Sports and then I can like draw with this and then I can also like erase. That was not always there. When did that show up? Actually in 2015 is when I added pen and touch input. I think it was 2015. You're ahead of your time. Yeah? OK, so let me go into the zoomit source code and I'm gonna say get. View history here's all of the Git history and I'm gonna put in pen. And I'm going to find out if that was true, or if you're just. Ohh wow, you're calling me out? Wow. I just want to make sure that some it could be some other mark. Glad this time I'm. Telling, writing, writing code for you? Yeah, integrate Surface Pro pen. OK, so did that happen because someone from surface called you and said? Get it in the surface stat. Or did you just buy a surface and you're like it didn't work and then you added it? Yeah. Actually, I don't remember, but I think I just add it on my own. Yeah yeah, I think I got a Surface Pro and I was like ohh I you know what, be cool is if you could zoom it and draw. Hmm. Now I want to talk about the 10 days between this time when it actually. Didn't work 10 days. I'm sorry, seven years and 10 days. Yeah, well I promise you it did work when I first checked it in. Did it though. So so I went in and I did a little spelunking and I found a non mark Russinovich person mark from John Stevens merged in a PR said fix. Touch that. OK, that's a misleading comment fix. Touch. Now just throwing that out there. Yeah, just for the conversation, can you? Alright, let's look at the code. Let's look at the code because we're 300 level talk here, so let's just double click on that. And actually, no, I don't wanna do that. I wanna see this. I want to actually do it like a git blame and compared with previous, because that's the real, that's the real work. Through. Because the comments are where they were the work. Where the fun is, yeah. Yeah, someone someone is someone's lying. I don't know. Magic value. I just saw a bunch of things going on there. That's the tray. That. That the trail OK too. I wrote down it. That's not the right one. Am I lost? Did I ruin it? Did I do it wrong? Live demo. So I found this. Went like that? Yeah, that ain't it. You have to touch that. You know, don't you think? Don't you find it because there was a comment there? No, I I wrote it down. Pause for. Something must be the yeah, must be the wrong commit. Ohh let's let's go look again. Do to do live demos at Ignite. Entertaining the crowd. Because dead air. It's no fun. Oops, I know it was in there because I did the I did the homework. And I'm going to go and say. You commit details. You know, it's so convenient that it's a 5000 line file. Yeah. Yeah, there was a it was A to do I. Remember how many to DOS are? In here, they were just there. There it is, yeah. There it is. What? Who deleted the evidence? Yeah. It was happening here. This is very concerning. OK, what's? Yeah, let's highlight all the mistakes. Yeah, let's Jacques yeah, OK, inserting. Investigate to do why this code causes touch input to fail. Hmm. Has anybody ever put in some code into your C C++ file and then other code stops working when it has? Your change has nothing to do with it. And then you spend hours trying to figure out what happened. Ohh and if you move your piece of code, the other code starts working again. Yeah, isn't that funny because it says here. Moving the code appears to resolve. Yeah, so that's the, that's the the the fun of uninitialized variables a have you that get set to random values in your release build and then OK stuff may or may not work. Because of that, have you thought about rust? What's that? Alright, so then it looks like basically you just move that code. Yeah. Farther up. Yeah, just fine. It works. Cool. Move on. Alright. Yeah. Ship. Yeah. Nothing wrong with that. Alright cool. And then ohh another thing that was interesting. Screen recording. It was so fun. As soon as y'all gave me access, you never should have given me access to the git. Response clear now. I'm like, yeah, I'm just having a hoot of a time here. So I went looking around here and I found the screen recording. Cause the screen recording is a really great feature. I wanted to learn about that. So I I go in here and I start poking around and again I'm all, I'm all about the diffs, right? So let's go and look at the diff here. I'm going to go and look at the diff not for the precompiled header but for the CCP's. And then I see this big chunk of green down here. Like, what's going on? Say, so I look at this and I was like, you know, I mean, I have feelings about this Switch statement, but I don't want to talk about that on stage. You know how when, like in the movies when someone, like, forges a document and they're like, it doesn't feel and my wife wouldn't write like that or whatever. Mark, I don't feel like you wrote this. It doesn't feel like you're code like the pros I've I've read so much macroeconomic code over the years, it feels a certain way and then it's like you just gotta thesaurus. Yeah, started using other words. Why is this this way? So. The the the screen recording functions that were added to Windows are available only through one interface. What interface is that? The win RT interface. And so that's what you're looking at is win RT code OK, which has this very, very win RT ISH style to it. Yeah, so it feels different like I'm looking at this, I mean just like. Just, and I'm not saying whether it's good or bad for the right, it's just different. It's just different. Well, and it's interesting to point out though, because one of the things that's super cool about zoomit and sisters in general is you said 26 years. Almost. Yeah, 26 plus years. No, 20. Yeah, 26. Yeah, 30 years. Yeah, you're. Very 2626. Yeah is this still works? This has been. A solid win 32 straight C code all this time. So you want this to work everywhere. Does it work everywhere? Yes, it works on everything. Win 7, Win 8, actually. So the policy that I've started following as Windows versions came out of support was just a hey, we're gonna make sure that they work on the supported versions of Windows, and if they continue to work on older versions, fine, but we're not gonna make big efforts to keep that going. So it may or may not work on Windows Vista. So not that anybody. Give you a shout out though, brother? Look at that. Yeah. That's commitment. Um, yeah, I mean. If people like Windows 8.1 then they can use. It well, both of them do, and that's exciting. So that that bit of code is really interesting. I wanted to point out this this bug here so you can control scroll, uh-huh and draw stuff and I can do my arrows and you can draw your and I want to just point out, let's make this arrow really giant. OK, I'm going to do that again. Oops, sorry. There's my arrow. And then if I control scroll while also moving it. Yeah, you're embarrassing me again. No, the same thing. But what's cool about that is that if you look at the code and you think about it, it's just an XOR. Yeah, yeah, it's yeah, it's simply. It's a simple XOR. I love that stuff. This is really, really, really clean. Now I realize that I may have been showing you. I may have been like having bugs and stuff. I hope that we're still gonna talk to me when this is done, because. May or may not. Yeah, well, day is still, they still young, right. There's a couple of other features that have been have been bothering me. So let's bring up. Something. There. Well, I mean, you know, preventing me from doing my work. Ohh. Yeah, like I'm. Utterly like zoom, it's in your way. Summits blocked my work. Great. Yeah so. So here's don't have to use it at all. Well, there was a, you know, there was a, there was a tool that came with my pointer, but the hot keys were just too complicated, so I ended up using zoom in. OK, so one of the great features about Zoomit is not only that you can go and point at something like this and I can say point that's probably that was probably too aggressive. Sorry. Ohh, there you go. I can push T. And then I can, you know, start typing right and. But could type. Yeah, thanks. Yeah, yeah. Typing. There you go, yeah, but so often, so often, like twice, I have been to the left. Of something, and then I want to go and type and then you've ruined my talk. I want it to go to the left. Ruined your talk. Well, it's just, it's there was a bad, it was one bad eval. Somebody was like, unacceptable. That I feel, yeah, I know the feeling. So what I want you to do is I want you to fix this live on stage because it's only one file, it's just all in one file. I figure you know. I don't see why this is that problem. Because if it's not an ignite or a build. If it's not writing C live on stage. OK, alright. Does everybody want to see that? Alright. Alright. Right aligned text input, that's what. You want, right? Yeah. I wanna, like, maybe I hit T right now. Maybe I hit shift and it goes the other direction. OK. Let's see. Well, the first thing we need to do is find my type mode enum. There it is. OK. Left justified? Yep, and we need to add what you want. Typing very slow for the CTO. Notice there were no mistakes though. Touché, touché. And I need to. So the way that zoom it works is that it types the and typing mode it will type the characters and it will have the characters. For a block that you input in an undo buffer so you can undo blocks of text. And if I take the undo buffer idea and I keep track of the whole block of text you've written. What I can do is at every time you type a key is just add the next key onto the buffer and then shift and then OK and then shift from and draw it from that position to the left and then record that on the previous version. So undo the. Ohh right under still. Has to work, yeah? Undo the text you wrote. And then write the new block of text, the new buffer. So I need a text buffer to store the history, so that's what I'm gonna add. Right here and. Call that text buffer. G_it's like a Hungarian. Name. Yeah, yeah, yeah. For global globals, yeah, that's which I'm not afraid of. Well, those are Hungarians. We love everyone. Yeah. Hungarian naming, by the way, is actually named after a famous Hungarian programmer, and you would see. Things still works at Microsoft, still works. Yeah, and you could say you would write a variable and you'd say LP ZC, STR, and it's a long pointer to a null terminated character array that's a string. And you would put that at the beginning of all of your types so that anytime you see like I. People, it means integer. People or whatever. So that's Hungarian naming. OK, So what I'm gonna do is delete these three lines here. And I need to. Add a conditional. Could you type a little slower please? I'm trying to keep up here that is going. OK, keep up. OK, well hang on. I wait. Draw a text. OK, I have no idea what just. Happened well so if the text buffer is not empty, remember I need to pop the Andrew undo to undo what you you know just typed and then create a new undo and then draw the new text. So this first draw text is drawing it and calculating the size and then I say well the the left side of the text box I need to shift it over to allow it. To fit against the right side, which is where the cursor is and then actually draw the text and you can see this is on the right justify code. When when you're doing stuff like this, like, I I'm one of those people who takes graph paper and like, draws the pixels and like actually, like, you know, you know, both for your for your dungeons and also for your pixel art. I'm curious, do you like, think about this stuff or do you just, like, close your eyes and, like look into the sky and then it comes? To you, it comes to me, yeah. I hate that. Alright, so the next thing I need to do is down here. I need to. Delete this. Ohh just this line. Yeah right there. Because it's left justified, right? OK, so you're gonna right justify. Yeah, and. Again check. For the yeah, OK. So this is this. Is checking for. What is this? Got here debugging here on line 3598 here. Do you like? Are you a fan of God here? Debugging. You know got here debugging is this thing got here. Got here, got here. Ohh well it must be between these two. Late here, one here 2 here 1 three yeah, that's my favorite. You still do it like that? I still do. We do have an interactive debugger. But it's too slow. OK so. This upper debug string is a function that I created back probably in 1996. OK. Speak on that. Yeah so you can see if debug and then it takes variable input and then sprints it and then outputs it. Well, up to a up to a K. Yeah, up to, OK. It's before safe strings were there, yeah. Alright, OK, so you output that, then you have a ohh if you're holding down shift, yeah. Alright, perfect. Then we're in, right? Justify and then clear whatever was there before. OK. So I instead of pushing T, I'll put shift now. Yeah. OK. And then I think one more change ought to do it. Yeah, right here. Well. Umm. Right. Where is it? Yeah, right here to. Right, so you're refactoring via deletion here. Yep. You don't need those lines. Nope. Are you? Are you almost done? Almost done. Oh Oh my God. And there you go. You weren't kidding. Yep. Everybody catch that. OK, so I don't think it's gonna compile, much less run. Why? Probably what unit tests? Where are the unit tests marker sinovich. I'm the unit test. Actually, you can be the unit test alright, yeah. OK, so I'm gonna shut down the existing zoomit because you can't have two running at the same time, yeah? Dirty little secret. There were no there was no sysinternal source control until 2007. Did you just, like, zip it up and send it to your friend? Well, we used a Visual Studio. But the source source. Source safe. Yeah, for a while, yeah. And then that was, you know. Well, I mean, I know this I noticed. That the database would always get corrupted and we'd have to. Yeah, yeah. So, well, you. Do a lot of here one here too. I assume you had backup one dot zip 2 zip? Yeah that's good. What I really want you to understand is best practices. In in software. Yeah, right. OK, so let's do a a local build. OK, so we're gonna go and build this thing and look it built. Oh my God. Now does it work? Very unlikely it because if it, I don't know how I would emotionally. Be able to deal with it if it will do the 64 bit version 6. Hang on, I'm trying to. If you're gonna run. It I'm doing a thing here I wanna I. Wanna what are you trying to? No no 64 bit you need to alright not gonna work. You need to exit the current zoom it fine. Because if you're gonna debug, you need to be. Yeah, you're because otherwise it will try to extract the 32 bit. No, you're right, you're right. OK. Thank you for telling everyone live. That's fine. That's no, it's OK. Don't have any kind of an ego. Ohh, now you're gonna. Complain. I'm just saying. OK, alright, it built. Yep, alright now now. So now I can like this. You'd have to exit the. Yeah, I did exit the existing. OK, so this is the one. This is the one that will that will not work because shift. Will what work what? Ohh. Ohh what ha ha ha. Alright, what's going on? Here you got. Me if only I could zoom in on this. You. Yeah, I'm glad you can't. I really huh. Ohh look at that. This is like a some random insertion. There's 255 so there's an is print called and is print function in there that just in the debug build will assert if it's not printable even though it just returns true or false. So run it in the. It's because I put a question mark. So it was, yeah, yeah. Yeah, that must be outside non printable. So you want to really non. Whatever. Release build, yeah, OK fine. Yeah. OK, I'll give you that building. It's not running, and then I will prove you wrong. Alright, alright. Never happened before, well this work. ? Yeah, OK. Very nicely done. Yeah. Thank you, Sir. Thank you, Sir. But that's not all. Can we release it and build it and give it to everybody else? We can. OK. Yeah. In fact, we could take a look at the CI CD pipeline for it. OK. So this was mostly Scott. Come in. Alright, excellent. So we're kicking off a build, alright. So I understand. I understand. Everybody know how to delete a commit? It's not possible. That's on the blockchain. You can't, you can't delete. OK, so there's a bunch of a pipelines in here. You're you all are building all of ohh there. It's building right there. Yeah, is all of sysinternals on continuous integration because you said you didn't have source control 2007. When did you actually start building? In about 2014, somebody named Luke Kim, who worked in developer Division, he just is like, hey, I'm a fan assist Internalist. I'll help you get a Cicd pipeline group set up for it. And I'm like have at it. And so he started to work. And that was the beginning of an engineering system for assistant kernels. Interesting. That's a that's a really great. It's actually a question I see from Mike in the chat wants to know this is gonna get into power toys or you're always gonna be your own thing. We ship it with Windows. My own thing. It's your own thing. Yeah. I need space. And you control you need space. OK, I don't know what that means, but. So look at that. We've got inside of the the pipeline here. You've got X86, you've got arms, so you're doing everything and then code Q, you're checking code quality and. That's actually inserted through policy. I mean these are official engineering build branches that the same build pipelines that Windows goes through. So there's policies for code checks like Poly check to make sure there's no I can't swear inside the comments anymore, which is really disappointing, but. It is disappointing. Someone in the chat wants to know where they can get this version of sysinternals like. How many places does this thing exist? You can download a zip file you can do when git install sysinternals. You can. You can do winget because it's in the Microsoft Store now. Yeah, so you can win get it. You can go to the Microsoft Store and get it. You're directly through the store interface. My favorite way to get it. Is live.sysinternals.com. Live.systeminternals.com what's that? Is that something I would browse to with the Internet? No no. It's actually a file share on the Internet. Using Microsoft Front page. Yeah, yeah. I think that's what it was part of, yeah, yeah, back when when they had Webdav released. Yeah, so that's web DAV, because what could go wrong with a wide open file share on the Internet? Yeah, that I could just go to. But why markovich? In the year of our Lord 2022 would you run a live share on the open Internet? You can just go there. I can't break it hurt. It no. Just read. Only don't no. Yeah, really. Double click. Double click. Go. So anywhere you are, if you want a tool, you hit Windows R slash slash or whack whack, yeah, live.systems.com/tools and they're there waiting. For you're there. Yep. That's awesome. I. Love it. Or you can, you know, do an X copy out of there to your local folder. Probably should do that. That's probably smarter. Smarter move. It looks like this build has actually happened. Let's see if I go over to the sysinternals page and hit refresh. And ohh, not quite. Soon we'll wait a minute and see if that comes out. So you release everything, you zip it up, you do all the search and all that kind of stuff and it goes out there. Yeah. Is it every single push, or when do you decide to release? Not only off the main branch is when it when it goes through that pipeline did it get and then it actually goes through an internal share. Ohh OK we're OK. So where's? That So what we just kicked off because of A tag was official publish which does a whole pipeline that gets it out onto the file. Players and and already had a a front page update ready to go. Gives it to the people. Refresh yet? Yeah, gives it to people, but normally the main build does go through the code signing process, but then it just gets dropped into internal share. That's an internal. Share. Yep, where people can run it from there. Tools. Is it tools or files? Files. Files. Do do do. Ohh and secret question show the secret things. Is this internal? I think I gave away a code name. Or something low business impact the old classification? Is that what that means? Yeah. Why would they do you like that, man? I. I really think it is my business. Medium, I thought. No, yeah. Yeah. No, it's a really good point, Scott. It is we should get that share name. Changed ohh look look what's this zoom it. And there it is. 12:34 PM released on the internal share. Yeah, so then it'll go through the checks and then you said it'll show up on the main page. At some point. We'll keep hitting refresh and then if you really want to hit a fresh aggressively, do you know about aggressive refresh, you push F-12. OK. And then it takes you into dev tools and then because you have F-12 tools open, you right click and you have your choice of light, medium and hard refresh. Nice, yeah. I didn't know you didn't know that. Yeah, that right click menu only appears when you've pressed F-12. And then what you do is you just go aggressive refresh. Aggressive refresh and and it's really it's it's a very aggressive. Yeah. OK, cool. So sorry. So that should be popping out any in a minute. So pop out in a second. How about if we have the audience just check on it for us? Yeah, the. Audience can check on us and you holler when it when that is done. Cool. So let's see what other questions that we have from the audience. Ohh. And actually I was teasing you earlier about about rust. Yeah, there was some funny little controversy that happened online because you are a fan of rust, but you also have a 5000 line C file. Why explain so the the The thing is with rust it makes mistakes like the one uninitialized variable problem go away. It makes mistakes. See does. Yeah it makes it see. It's very easy to screw up memory management and see have leaks, have use after freeze, have buffer overflows. Yeah you can do a lot of SDL type things, prefix and pre fast and linters and things to check for those mistakes and try to get them out of it, but it's really really hard to get rid of them. So Rust was designed from the start to. Try to make those mistakes impossible or extremely hard to make. And so rust is become now the the safe language that is non garbage collected so you don't run into pauses. So it's really great for systems code. So whenever you have a piece of code that's running in part of your environment that can't tolerate a GC pause, rust is a great alternative to C++. So it's actually if you're gonna write something new, recommendation would be take a look at rust and do it in rust rather than C++ and it'll make your life a little better. Yeah, it's got a learning curve, but actually once people get over the learning curve, which actually doesn't take too long for people that are familiar with C++, they end up loving it. It's actually I think for the last few years in developer surveys that the number one most loved language. And when you were, when you're learning, you know C&C very hardcore. You know, I'm a native English speaker, but then I go to London. And then everyone's on a lift going to their flat. Yeah. Is that what it's like to write rust? You're like on a level to a flat? It's maybe or maybe more jarring than that. Slightly more, slightly more jarring because the way that it makes you track memory is is very precise, yeah, but it pays dividends in terms of avoiding these bugs that are hard to track down like the one. Not like me, and now I'm just making memory. Yeah, and and that's the difference between garbage collected languages, right? You can use a garbage collected language then. That's generally you know what you should do. Go see C#. But is there a reason to rewrite anything into rest? Or are you thinking just like, hey zoom, it works? Fine, yeah, zoom. So there's no reason to write zoom. It look like if there's a piece of code that is getting input that's untrusted, that's a place that you might want to look, because you need to be very careful with how you handle that, because a buffer overflow or use after free can be exploited by an attacker with malicious input. So that, and that's what gets C++ into trouble. Rust can prevent that. So if you're going to write something. Like that, or or you got a piece of C code that is processing untrusted input. That's a place to go look at changing that code to rust. But for something like zoom it, it just makes you know no value to going and rewriting this in rust. Are there any system internals suite things that you either are doing in rust or thinking about doing it must? So we are for. So there's some sysinternals tools for Linux now, sysmon, process monitor and procdump. And we've started a proc dump rewrite in rust. Just. For the hell of it. Wow. Yeah. For the hell of it, that's a pretty good business reason. Yeah. That's very cool. Yeah. Alright, so in a couple of minutes, if not within the next two minutes, we'll see zoom in, show up on the system internals website because we kicked off an actual main build. I want to encourage everybody to make sure that they fill out their evals. And for all of these talks and future talks, you're going to see that QR code show up on your screen and you can go and join the chat and those, those will show up on our teleprompter here to ask questions and then if you don't mind, since we have such. A large group I wanted to just talk a little bit about the future of. Zooming ohh what do you got? The future of zoomit AI. Zoom. It you're not gonna AI zoom it. Yeah, sprinkling. AI yeah, using GPT 3 we're going to have a zoom. It just know when you wanna zoom. No, just just kidding. How about going off script? I was like. You are her. No, but yeah, I don't. You know, other than write it right justified text, I don't have any ideas right now. Well I think would be cool if you if you zoomed in and then at this point it starts to be like art you. Know well, actually, that's where we get Dolly too. Yeah, Dolly two would be like and you'd be like an Escher painting. That's correct. And then you zoom all the way back out it'd be. Fine, yeah, you'd actually go into another world. Exactly. That's exactly what I want. Yeah, let's do that. All right, cool. Before we go, though, let's take an Aussie, because everyone's. Yeah, scoot together. Ohh, my phone is so giant it's covering my face. Yeah. With the with the, that's, that's better. You're so tall. Alright my friends, we're gonna take a little bit of a break here and then we're gonna come up and coming up next we've got Donovan Brown and we've got a whole day full of deep technical sessions like this with no slides or minimal slides. And we've also got sessions tomorrow. And also check out our friends in the IT Pro room next door. Thank you so much for being a part of this, and thank you for hanging out at Ms Ignite.