In compiler development, the middle-end phase involves managing intermediate representation (MIR) structures like basic blocks and terminators, where developers implement transformations such as cloning terminators and setting terminators to optimize code. This phase requires careful handling of control flow structures and often involves significant code cleanup and refactoring to ensure correctness. The speaker demonstrates this through practical implementation work on a C compiler project, highlighting the iterative nature of compiler development where understanding of good and bad code evolves over time.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
studying compilers every day until i land a compiler role (day 212)Added:
Okay, we're live. Um hello all. Hello world. It's been a second. Um I was out this weekend for a trip, but I am back and I've got a lot of homework to catch up on. So, that might cut into my stream time a little bit. We'll see what happens, but yeah. Uh this is day 212 of studying compilers every day until I land a compiler role.
Um and how do I how do I speak again?
How do I speak in intros?
Um what's up, Panda? Good to see you.
Uh last time I think we continued doing like middle end stuff or like we started doing the rewrite in the middle end and it was like kind of slop.
Um we have like an interesting bit of middle end stuff to clean up this time.
So, hopefully we can finish that up. Um if we can finish up all the middle end stuff, that would be great. If not, then that's also fine and we will just save it for next time.
Um I have a hard cut off at the end of this hour. So, um yeah. Hopefully hopefully we get close to done on that. Um yeah. It's It's going to be a good time.
So, yeah. Let's Let's get straight into it.
Um yeah.
So, where do we even look?
Oh, man.
Uh Oh, right. Yeah. We were messing around with simplify CFG.
So, let's let's do that for now, I think.
Yeah.
I applied for a tutor position at my school. Ooh.
Um honestly, I don't really I don't have any good advice for that, unfortunately, interview-wise. Um I imagine like a lot of it is just like I don't know. I imagine there's like a question of like why that will always be asked. So, I think that might be something they would have a good answer to, but beyond that, I don't really have any great advice.
Um I'm sure it'll be fine though. If If it's something that like you have a genuine like passion for and or like a reason to do, I think that's fine.
Um yeah, you should be fine. I wouldn't I don't think I would worry about it too too much.
Um Okay, yeah. So, we don't have the swap thing anymore.
So, we need to change this up.
Uh yeah, what's up Isrith? It's good to see you.
Um okay, yeah. We need to We need to add We need to add new functionality to our MIR.
So, let's go to wherever basic block is.
We need a set term We need like set terminator.
So, we'd set that.
Um Yeah, we'll just do this, I guess.
Uh What do we call What do we call these in setters? I think we had like a very specific way we named it.
New terminator, I guess. I don't know.
We'll just call it that.
Yeah, how How have y'all been? It's It's been a second. It's been a weekend and then some. Hopefully Hopefully y'all are still doing all right.
Starting to feel weird? Yeah, I mean, so it goes.
I don't know. I don't I don't know. I I had a I had a thought about it and then I forgot it. Whoops.
Um Yeah.
Yeah.
Um let's see.
So, we have new Terminator.
Let's see. What else do we need?
I guess we can just make Terminators just from other Terminators unless you want to do like a clone thing maybe.
I think that might be interesting at least.
So, maybe I'll do that.
Maybe we'll implement like clone for these things.
Hm.
We could also just like hm The other thing we could do is we could do like consume Terminator or something. I don't know.
That would be That'd be a really funny solution to this.
Um Yeah, I don't know.
Just keeping busy and trying to not die in this heat. Yeah, that's it's rough.
Like over here it's like it's been like 70-80 degrees um Fahrenheit. But, I heard like it's I heard it's rough in Europe right now.
Or even just like everywhere else more generally speaking. It seems It doesn't seem like a great time at least.
Um okay. I So, the thing is we need to rewrite the swap. I had an idea of how to do it and then I forgot.
So, we're just going to hm I think we'll just we'll just make like a clone here.
Yeah, we'll just we'll just do that.
What's wrong with this again?
Oh.
Do we need to include like what?
Utility?
Memory?
Yeah, there we go.
That's really funny. Okay.
All right. So then we can just we're just going to need to print these a little bit, which is fine.
Yeah, I don't think that's like the ugliest solution, to be honest. I think it's I think there's worse things we could do.
Uh we're going to need to change this.
on branch Uh what's up, Texan?
That's not all three. That's all three.
Nice.
So Mhm.
All right, let's implement this first.
I think.
And let's have the header open on the right for reference, so I can look at things.
Learn how to build an LLVM compiler?
Yeah, that's um I followed the uh Kaleidoscope tutorial. So that's like that's like sort of checked off my list.
Um I want to I want to do an MLIR project at some point, but I just don't have any great ideas for it.
Um if anyone has any ideas for that, let me know. I think that would be I think that would be quite helpful, at least to me.
Um aside from that, I also have like a research project that is working with LLVM proper. So I think I think I'm at least like soft set on that in the short term.
Um I still want to do more with it, though. But, we'll see we'll see how time allows, at least.
Building my own programming language, nice.
I don't know, like building tails is like cool and all, but like the the thing I've always cared more about is like the optimizer. So, like like I've never really cared about the compiler front end, at least.
So, it's kind of like, yeah, you know.
Like, if if you find a cool domain, like all the more power to you. I'm not like I'm not like throwing shade at all.
Uh, not sure what that is in Celsius. Let's do the let's do the conversion.
Uh, don't question why I was looking that number up.
So, it's like 70. Oh, yeah, yeah.
Yeah. So, that's like the range we're at over here.
Let's see.
Let's go the other way.
So, at 30, oh man, that's rough.
Yeah, okay. That that is that is super rough. I holy [ __ ] Okay. Yeah, you're melting over there. Um Yeah, I I hope all goes well. That does not seem that does not seem very enjoyable.
Yeah. Nice work to you, as well. That seems I don't know, like a lot of the um a lot of the lang dev stuff is like really cool to me. And like I I do admire like I admire how people are able to like make languages and think of like new features that could be like useful, cuz I sure as hell struggle to do that.
Um, it feels like it feels like there's a lot of like usability thinking that I just don't really think about a lot or I'm I don't think I'm great at at least.
Learn a bit of binary and IO before touching uh before touching compilers. Yeah.
That sounds That sounds pretty reasonable.
Uh okay. So, what do we even give this?
Value or val?
Is that it?
Yeah, this is This is fine, I guess.
Uh this is branch.
Learn Rust. I mean, you say that, but like there's [snorts] there's a lot of like legacy C++ code that needs maintaining, which is kind of just the unfortunate reality of things.
So, I mean, like what what can you do, right? Like it's it's just rough.
But yeah, I'm I don't know. The The big research project that I'm working with is um is pertaining to I guess optimizing Rust, so yeah, we've we've got that one in the bag as well. It's It's going to be a good time.
Um right now I'm like I'm struggling to get my LLVM pass working on Rust because like Rust ships with its own stupid version of LLVM and like not only is it distinct from like whatever LLVM system install you have, but it also just doesn't come with like the LLVM config, so I can't even like build a version of LLVM that I guess is compatible. So, it's like Oh my god.
It pisses me off so much, but that's that's a whole that's a whole 'nother story. I'm I'm partially streaming to run away from doing that right now cuz I don't want to fight the Rust compiler right now.
Um Oh, yeah. Anyways, before I before I rage bait myself Oh, let's type more boiler plate.
Um okay, so con T successor F successor.
There we go.
Uh what's up, blocker? I don't know you, but hope you achieve your dream. Thank you.
Um okay, I think this is sufficient for this file.
And this file should be good.
Um okay, so now we need to implement the set terminator thing.
Yeah, we'll just Let's see.
Hm.
Which language is I working with right now?
Um this project is a C++ implementation of a C compiler.
Um My research work in is primarily in C++, but it's it's for Rust.
Um I'm only using C++ because like LLVM's infrastructure is.
I guess it'd be interesting to build in Rust, huh? I know there's like bindings someone made.
Right? It was It wasn't It wasn't this one.
There is a Inkwell. That's what it is.
Um I learned Python. I've never touched a line of Ruby before.
Yeah, this is This is like something I've been thinking about.
I'm not sure if Inkwell lets you like write passes, though.
Um ooh, wait.
Wait. Okay, wait. This is interesting.
So, what's happening here?
Only supports up to 19, really?
Sure.
Uh Uh Python. Actually, I don't even know what my first language is. I think I think it was Java.
Yeah.
It was either Java or JavaScript.
Um in terms of like as far back as I remember.
Um and then I wrote Python for a while, but yeah. It's I'm most comfortable in C++ now.
Um anyway, take care, man. Thanks for stopping by.
Um okay. Set terminator. Let's see.
Where does this go?
This goes here.
Right? No, it doesn't go there.
Right?
Oh, wait. No, it does go there.
Do this.
That's a wild take. I don't think so. I kind of I kind of see where he's coming from. Like eventually, like I think most code bases will either have like a Rust replacement or like be written in Rust from the beginning.
Like even the Linux kernel is like starting to get um get some like Rust-related code.
Um both in in of like both in terms of like virtualization and in terms of like uh drivers. I I know I know has driver code in Rust nowadays, but but anyway, point is I don't I don't remember exactly which parts are being written in Rust now, but there is like some Rust code being introduced into the Linux kernel.
So like it's definitely like something that is just like slowly picking up popularity, and I think it will I don't know. I think the value proposition of Rust is just very strong.
So it's it's really hard to like I don't know. It's hard to see a world where like Rust falls out of favor in the long term or in the long run. Um Like yeah, like y'all aren't wrong that C++ will probably stay relevant, but like I kind of see the rationale behind at least like uh Yeah, I I I don't know.
I kind of I kind of see where he's coming from at least.
Um What was I going to do here?
Is this Is this it?
Do I even need the move?
Yeah, I need the move. Okay.
Well, that is a Wait, that's a crazy sequence.
Yeah, I mean starting with I actually I kind of get it.
Average average Windows experience for for better or for worse, much to everyone's detriment.
I think there's like there are still like large legacy code bases that are in C++ outside of like game dev, right?
Like like the entirety of LLVM is still in C++.
So, at least in terms of what I'm doing, I'm going to need to write a lot of C++.
Um PHP is PHP might be a little bit insane.
Um okay, let's let's fix this up now.
So, pred we want to set terminator.
And then we want basic block get terminator.
Oh, wait.
So, what do we What are we trying to update here?
We're trying to We're trying to erase the current block, I think. It seems like.
Yeah.
So, we want to get the current current one.
Oh.
Whoops. Wait, I forgot to do a thing.
If If you know what I forgot to do, then you're you're goated.
Let's see on this.
I got to put this up here.
We got to do this, actually, and we got to change this up.
And we can't do this type.
Okay.
Uh let's go sleep.
I mean, yeah, like Rust Rust is just better. It's It's a shame that it's really slow for companies to migrate code bases, right? Like I don't really I don't really know what to say.
I'm looking spectacular. No, it's It's quite lazy today.
But I I appreciate the sentiment.
[laughter] Saying Rust is easier than C++ is a take of all time. I don't I don't particularly agree with that one.
That works, actually.
Okay, we can do that, I think. So now we can clone like that.
And then we can get rid of that. And this should be correct now.
I think like I think it's harder for someone to understand like ownership and borrowing if they haven't had a lot of experience with like C or C++.
Yeah, like there are just like very large code bases that are very that are not going to be ported anytime soon, for better or for worse.
Um as much as I want a world filled with Rust, I think I think A, the language still has a ways to go, and B, it's It's just going to be a long time. Like that's That's just the reality of it.
There's still a lot of like C++ jobs in like the quant space, for instance.
Like it's It's just going to be a while.
Uh what?
The hell?
Are you dead ass?
Rust also using OSS development? Yeah, I mean like again, that's going to take a while to like reach maturity as well.
So like What the hell?
Oh, what the hell?
Oh duh, yeah we okay.
Let's just make.
Are we dead ass?
What changed? Where what the We're not even touching the front end. Why is this changing? This Are we Okay, let's let's think this through.
So we're going to 136 Okay.
Yeah, I mean that makes sense I guess.
Oh wait, we don't okay. We can do that.
And then the rest of this is fine, right?
Oh yeah, okay. We we changed dependencies. That's why this is breaking.
This should all run perfectly fine. This might fail one test cuz it always fails one.
Uh Rust is better as a blank face than the shallow. I think like I think like Hm.
It's Yeah.
I That's That's a very reasonable take to have on it.
But I mean, what do I know? I'm I'm sitting here spamming C++ code and staring at test cases running. So, like Anyway, um middle end. Let's add MIR.
Uh re-add functionality in MIR.
Let's do that.
Uh Just use Go. That's That's a take.
I think like I don't know. Go is like fine.
I actually haven't written Go yet. So, I think it's It's very short-sighted of me to really say anything.
Okay. So, let's go back to Let's go back to transform hell.
So, we've we've cleaned up MIR to replace the functionality that we lost.
Um Are you using make to build not C make?
Um oh man.
So, we are using C make.
But, I don't want to deal with C make stuff. So, I have a makefile wrapper around C make.
You might think this is insane.
You're not wrong.
Yeah.
Yeah, we're we're just in we're just in super hell pretty much. That's kind of that's kind of where we're at.
I don't know. Low-key, I don't I I'm fine with I'm fine with engagement bait. I I will never complain about I'll never complain about more more chat interaction.
Personally, for very selfish self-promotion reasons.
It's like I don't know. We we got to have something to talk about. Like, I don't want to just like if my stream is just like staring at me writing code for like an hour, I think that's low-key kind of boring.
So, like I mean we got to we got to get the engagement up in some way or another even if it's a little bit even if it's a little bit of bait.
Um okay. It seems like nothing else broke though, which is a very good sign.
So, we just have to do a little bit of reformatting, I guess.
It's all like very minute stuff though.
So, I think it's I think it will be fine.
Um let's see.
This is per function. So, I could probably do the same like we could do this like program function level split as well here actually.
I made a worse C make wrapper.
I guess that's fair. There it It's all It's all really funny to me cuz like it is necessarily just going to be very ugly sometimes.
I mean like there's there's worse things to do, you know? Like it could be worse.
It could We could be We could be in like Uh >> [sighs] >> We We could be avoiding CMake altogether and just writing make files.
Um We might just make this every time to be honest. It might be easier.
Hello it's Frankie. Um Is anyone good at Prefect and Python?
Um I have I have like some Python experience, but like Prefect I've not heard of up to this point. So, you Hopefully someone else in chat got you.
Okay. Right now we're just This is one big for loop over a function. So, we're just going to We're just going to make this a thing.
Um at the uh function level as well as the program level.
Just for Just to simplify things.
So, we can get rid of that and then we can get rid of one more layer of bracing, I believe.
Yeah. I I appreciate the support. Um What is Prefect actually?
This is not useful.
Oh, that is useful.
Okay.
What's the uh Uh Let's not use word anymore. I can I don't I don't know what's happening here.
Is this a better description?
Crontab or Python, I see.
Workflow orchestration framework for building data pipelines. We could not have put more words out in here.
Uh Yeah, I I hope I hope someone else I hope someone else got you there.
Um star Oh, um it's So, these are like the angle braces and there is a there's a pointer inside of the angle braces.
Um my formatting separates the star from the type. So.
Yeah, that's that's all that is. It's I promise it's nothing complicated.
Um Okay, this looks fine.
Yeah, okay. This is good.
Uh oh, we need to change this.
This needs to be F.
And this should just be F.
There we go. Much much nicer.
So, my Python will run every X minutes.
Yeah, that that's fair enough.
Just out of curiosity, why why wouldn't you just like make a cron job that runs the Python scripts instead.
Just Just wondering. Cuz like that If that's what it does, then why not do it the simple way?
Um oh, we need to reorder this as well.
Um and all of this is fine. Okay.
Remember to I just cleaned up Well, clean is a relative term, but it's it's cleaned up in air quotes.
Does a bunch of additional things.
Interesting.
I guess I could see why that'd be useful.
Holy [ __ ] I forgot about this code. Oh my god.
Oh my god.
>> [laughter] >> Holy [ __ ] Okay.
Um okay, let's let's clean this up.
They just wanted a nice UI. Okay. I mean, like fair enough, I guess. I can't I can't fault them for that.
That seems That seems fair enough in some capacity.
Formatted like an abstract painting.
Yeah, that's so real. Uh what are you making? I'm making a compiler from C to x86-64.
Um and the only I guess external dependency I have is like a parser generator cuz I'm too lazy to make a the by hand, but um yeah. The idea is to like kind of motivate more of LLVM's design choices and just like kind of re- kind of like rebuild a lot of it from the scratch.
Um Yeah, I want to focus more on like the optimizations that a compiler makes. So, a lot of the frame- a lot of the like plumbing work is like the front end, which like converts the C code down to like the optimizer language and the back end, which converts the optimizer language to assembly.
Um I want to do more stuff with the middle end, but I need to have like an interesting language to do interesting things in the middle end.
So, unfortunately, I've done a lot more front end work than I wanted to, but like, you know, it's that's how it is sometimes. So, like, oh well.
Um right now I'm doing a bit of code cleanup because it turns out after writing C++ code for 200 days, your understanding of what good and bad C++ code changes a lot.
So, yeah, that's that's where I'm at right now.
Um Yeah, let's let's yoink.
Oh my god, what the hell?
Oh my god, okay, let's let's move away from that line swiftly.
I mean, like, it's I'm kind of just like reinventing the wheel in some capacity. So, like, I don't I think there's like a ceiling to the how complex the stuff I'm doing is, but like, it's all it's all for fun at least.
Um Is it an assembler? Um not quite. An assembler would be translating x86 to like Yeah, an an x it'd be translating x86 to like actual machine code.
Um, the compiler specifically I don't know, compiler is kind of a vague term. Like people used to use the term like transpiler to uh describe compilers that go between languages. So, like a compiler from like Python to C.
But, nobody really says that anymore.
So.
Um Yeah, everything's everything's kind of a compiler. Um, I made like a stupid little table as a joke on one stream.
Um, let's see. Where did this go?
Here it is.
So, it's like you know like the like sandwich alignment chart?
Um, yeah. So, like you could go like you could be like very pure with like your language choice or you could be like as abstract as you want about it. So, like yeah.
I I freaking love this. I freaking love this. I need better I need better examples for like these bottom two though.
Cuz I think these don't really fit that well.
Um, but yeah. This is This is in my Discord. You should join my Discord if you haven't. It's linked in the description.
Yeah. And then like there's also the whole like compiler can be as broad as like a compiler toolchain as well. So, it's like Yeah, it's it's crazy. It's crazy stuff.
Um What type is this? Is this correct?
What's wrong here?
There we go.
Um okay, so we need to replace this.
I should just make a macro that like influence this.
Uh okay, what else is broken? Something is apparently broken.
Oh.
Oh, come on.
Uh okay.
>> [sighs] [gasps] >> My poor My poor choices have come to bite me once again.
Um okay, that's that's great.
All right, we can't de-nest this. We We cannot de-nest this one.
Cuz we need we need our stupid manager that I implemented thinking that it was a good decision.
Unlucky, all good.
Let's just do that.
We did need to reformat this spot, so that's fine, but Um this is ugly as [ __ ] We need to We need to do something about this.
I think that will have to do.
I think we had something similar in here as well.
Let's try to reorder this, though.
Um the reason I do it like that, by the way, is so that things line up, so I can like reorder these as I want.
So I I think it's pretty. There is There is no other reason.
Call me insane for it. I don't care.
Um okay, this looks correct though. So, we're we're we're all set here.
Um okay, let's let's do the rest of this now. I think this is the last file for the most part.
All right.
So, this one we definitely can split up.
How would you describe yourself as?
Um I think like So, I am technically a student right now. So, I think that's probably the primary description I would use. Um I'm a master student.
Um I want to I want to end up at a job where the position is like compiler engineer or like or like compiler verification team or whatever.
Um I think I lean more towards the systems-y side of things rather than uh more towards the systems-y side rather than the I guess PL side.
Why do I need MR here? Oh, I know why I need it there. Okay.
Uh okay, so we need this.
Function star F.
This one we definitely can pull out, I think.
Um but the instant I can't pull it out, I'm going to need to I'm going to need to do a lot of rewriting.
That should not be quoted out of context, by the way.
Um okay, we want run on F get.
So this we need We can just that might be faster.
Did I already change that to return?
That's really funny.
Wait, this might fail some tests now actually.
That that might be an insane bug to have caught. Hold up, unless I changed that by hand already.
That should not have been returned before. That should have been continue.
I appreciate it. Hopefully hopefully I end up somewhere.
We'll see we'll see where the world takes me.
Yeah, we need to do something about that.
I think the rest of this looks fine.
Yeah.
Okay.
Do I need anything else here? I think this is all good.
Let's just make This might fail like two tests.
And if it does that's probably a good thing cuz that means we had a bug.
Or at least we caught a bug then.
Okay.
Um that skipped file is fine. That's all fine. Okay.
Uh update formatting for all transforms plus add some function as putting Okay.
So, that's all of middle and done, I believe, which is very nice.
I don't Oh, yeah, we did all the analysis before.
Um All right.
So, now we just got to we got to clean up the driver and we got to clean up the back end, neither of which I'm looking forward to. I think driver we already did a lot of the work for.
It seems like we did at least.
Well, it's going to be ugly.
We can clean up some of this.
Yeah, we need to figure that out at some point.
I think most of this is good.
This is not even whip anymore.
I need to stop how you write the test for this.
Um I So, the only testing I have is regression testing cuz I tried I was going to write unit tests and then I got lazy and then I didn't. I should write unit tests, but again, I'm a little bit lazy.
Um Oh my god, what the hell am I doing here?
Uh What the Something seems wrong here.
Wait.
Anyway, um I'll I'll worry about this in a second.
Um Yeah, I I try to do like pre-commit tests when I like write a new feature.
So, um or at least I like write the test beforehand.
Or at least I make an effort to. So, like an a good example of this is when I was implementing pointers, I wrote this pile of tests pretty much before doing a lot of stuff, or at least like these three basic ones.
And then once those worked, I started like thinking what other insane stuff I could do.
Um this is actually like missing func- um missing functionality. Um I need to add like a uh what's it called? I need to add like a right to deref sort of test instead of just like this generic slop.
Um but yeah, it's all like stylistic. I don't think there's a right or wrong way to do it.
But yeah, that's that was kind of jumble of thoughts.
Let me know if like any of that made sense.
Or if any of that didn't make sense.
Um Okay, I got to figure out what I'm doing there.
Uh compiler flags or GCC flags.
That's actually That's not the GCC I was thinking of.
Okay, let's go here.
Uh okay.
Okay.
Uh stop before assembling.
Or wait.
Other way around.
There we go.
Yeah.
This seems right.
Why would I test anything else? Um because there's like there are some like interesting cases with like parsing that it needs to handle differently.
Um again, like the way I write tests is kind of [ __ ] So, I would not seek to emulate it whatsoever.
Um but there uh there was like a very substantive parsing reason for it.
Um there's also like how it interacts with like other um other parts of the compiler, like how it optimizes in the middle end that I was curious about.
Um okay. So, that's fixed. I think this is all fine.
Yeah, we should we should write more utilities at some point.
Yeah, I think this is all fine at a glance.
Okay.
Yeah, I mean like testing is just like rough, right? Like I don't I don't blame you for that one.
So, don't question this runtime library.
This [ __ ] is ugly as hell.
Okay, we cleaned up driver now.
Okay. So, now all that we have left is the back end. There's a lot of stuff to clean up here.
Um maybe I'll save this for like next time or I'll do it like off stream. I don't know.
Um I'm not sure how interesting a lot of this like cleanup work is. It's all just like very boilerplate.
But after all this stuff is done, I think we will let's see.
Let's just Let's just update this for next time.
So, that's just everything there.
This is all the stuff that we're trying to fix.
Um all of this is in preparation for just this whole pile of stuff left over here that I want to get done eventually. Um the stack is like the original pile that like all of this is to the end of.
Um the whole reason I underwent this big rewrite is because we couldn't like we couldn't properly generate D refs.
Um because we couldn't or we couldn't really handle like accessing some uh or writing to a memory address.
So, uh I had to rewrite a lot of stuff for that. And I was like, we may as well do some cleanup work. So, that's why I did that. So, we're going to we're going to fix that up. It's going to be great. And then all of that is just so I can implement arrays because I want to do array stuff in the future. And hopefully after this I will be almost done with all the front end stuff I will ever want to do. Um eventually I will add types.
I don't want to add types right now.
Types suck.
Um for loops I should add. They shouldn't be that bad.
But, yeah. I think the rest of the stuff I will hold off for for the time being.
I do want to add for loops.
Um more operators.
I want those. Those will be interesting.
Um back end work, there's a lot of stuff. I think that could get its own like sub series in the future.
Uh one of the cool things I thought about recently was adding remarks, which is like a um like LLVM has this thing called remarks.
It's basically like an optimization record. So, every time it tries an optimization, it records whether it passed or failed and why that happened.
Um I want to do something similar. I think that would help both with debugging and with um uh with just like writing my optimizations as I go.
Um but, yeah. there's a lot of stuff to do.
The short-term is just getting everything to get a race working.
Uh, what terminal are you working in?
I'm using Westerm.
Uh, but yeah, we're going to save this for next time.
Um, I got to go I got to head out now cuz I have a call I need to take in 5 minutes. Uh, thank you all so much for showing up today.
Like the stream if you haven't, sub to the channel if you're new.
Um, also while you're down there, check out the description. My Discord is there.
It's the best place to get pinged when I go live and stay connected with everyone else and also with me uh, outside of stream hours.
Um, yeah.
There is a bunch of other stuff down there. You I'm sure you can read, so I will I will avoid yapping.
Um, take care, y'all. Take it easy and I will see you all tomorrow.
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 views•2026-05-28
How agent o11y differs from traditional o11y — Phil Hetzel, Braintrust
aiDotEngineer
450 views•2026-05-28
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation💯✅
LearnwithSahera
1K views•2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 views•2026-05-29
Search Algorithms Explained in 60 Seconds! 🤖💨
samarthtuliofficial
218 views•2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 views•2026-05-30
Introduction to Problem Solving Part - 1 | Lecture 1 | Intermediate DSA
ascensionix
107 views•2026-05-29
So What's Odin Lang Even Good For
TechOverTea
131 views•2026-06-01











