Hello. Hey, Matt. How are you? That's bad. I put some comments on your document this morning. Yeah, thanks. Yeah, I just saw some notifications. Cheers. I'll have a look at those and see if I'm sort of pings and replies over. Cool. It's it's mostly agreeing with what you're saying and agreeing that there's questions we need to answer. But yeah, it's it's good food for thought. Absolutely. Hello, everyone. Hello, Diego. Hi, everyone should be getting some folks from my team shortly. One sec. Let's see if I can get the last folks post a few links in the chat while we wait. I'm sure a lot of you have seen these but if not, this is the overview of this effort. The first link. The second is a component diagram for some of the things that might need to become modules. And the third link is a potential approach on the first half. And then we have a potential first approach on some things that we want to do. So I'm hoping that those have been shared earlier they're all in that base who modularity channel. I think we have a critical mass to get started Gary is kind of the last fold up and he there is. All right, sweet. So we have everybody here, like I said I shared a few links. All this stuff is in the base who modularity channel the purpose of this specific meeting is to kind of align ourselves around the goals language that we use when we're discussing this, some potential approaches, and Justin has kindly basically helped write some potential ways that we can do a first implementation. You know, I think that we need to start a little bit at the high level around around our goals and I think that, again, there's some opinions that have been put into that page that don't necessarily need to be exhaustive. The way that we in the consensus team have viewed the goals are around basically resolution of tech debt, better distribution of the client and better client modification. And those are broken down a little bit but the, the one that probably needs more explanation is client modification. We currently have the plugin API that allows for modifying a variety of different things and adding different components within base who. But, you know, that's kind of allows for certain things that fall within the API there's a certain specification, it doesn't necessarily touch every area of the client. And, you know, on the other end of that is kind of module modification right if we create modules within base you and module boundaries on inversion of control kind of approach, we can replace entire modules with other things so for looking at other clients, if you're taking a different clients approach to storage or sync or something like that, or independent modules, kind of in that approach. That's what the differentiator is there. There's also the remote API as approach where we can use things like the engine API to drive the client itself. So I encourage you guys to read those goals I'm bet most of you had. Are there any kind of discussion points that folks want to get into around step before we proceed, or any other goals that weren't mentioned. Matt, sorry, could you could we could we talk about the middle of those two options just just for clarity, if that's okay just for a moment so I sort of have an understanding of the plugin API is little and have written a sort of a dummy hello world one just to understand a bit better and the, the remote API is one with the engine API I think I have a feel for that. What what can you just discover a bit more about what you think the modules approach looks like on the ground. Absolutely. So, presumably we have, you know, functional pieces within basu. If you look at the kind of other links I shared there's the diagrams and there's the kind of vertical slices that Justin has called out and the other page. So you have you know functional areas of basu that handle things like peer to peer, you know transaction validation. You know, the EVM the consensus mechanisms, all these things are currently wired together for the most part in a kind of monolithic approach. So if we were to instead of using the plugins to kind of modify the ways that those work in basu today, we could take an approach where we create very clean kind of module boundaries where there's expected interfaces there's understood kind of moving and you have these modules that can work in theory within isolation, which also allows them to be swapped out for other potential modules that exist elsewhere right that adhere to the same interface. Or you know, with small modification can be made to work with the other basu components that's kind of what I'm getting at unless does anyone else have a characterization there that they'd like to bring up. The way I think about it is also that you have the entry point that is custom for project so the entry point will glue models together. And so if you want to have a different distribution, you just create it assembling different models why they plug in is at the bottom and say it customized some kind of feature, but you can't really drop any model. If you don't want, for example, the RPC stuff or the transaction pool you need in your distribution everything you can customize them. Why in the way I understand the module realization is that you can just create your entry point that doesn't include one module or something like that. Okay, yeah I guess I guess I was trying to understand which of them fell into the category of things which would start to live outside of the core Bessie code base. And I guess I, I see like the plugins falls into that right if I'm a third party and I want to build a custom plug in. Then I'm going to have that code in my own repo and I'm going to drop it into a Bessie install the remote API is one I think that's that's probably also the case. I guess the modules one sounds a little more like it's more about an approach to the monolithic Bessie code base that makes it more modular, but still is slightly more tended towards maintaining a lot of that code in the same sort of repo code base. Do you think that's am I ever simplifying that last one do you think there's more scope in the modular modularization approach to have things hosted in different repos. This could be an option for me. I also see a mix of the two approaches so the model are independent also develop independently. Each model could have its own plugin interface and could be extended in that way. Okay, yeah, yeah, thanks. Yeah, yeah, so I don't want to distract. I think a lot of things are option that we this is for discussing how to move forward. So, yeah, yeah, absolutely. Yeah, we don't have any. I think already any solution about how to organize the work of the code. More than just moving against different repos, I think some of these stronger module boundaries will help centralize certain code like there's handling of the privacy pre compiles sprinkled about the code base. And this will force us to centralize that and rationalize how it interacts with the rest of the system, a little bit with the proof of work as well in some of the mining integrations. So if we require them to interact with the module, then we have more surety that the privacy code has a limited impact rather than requiring special handling. So that's the big advantage I see life's health wise for the code base going forward and that kind of feeds into the tech debt. And those don't have to be done with private repos, but it makes it possible, not private repose but separate repose, but it makes it possible I mean that's a tangential mono repo versus multi repo debate. And modern repose not going to win it's just a question of how much you put in the main repo. Yeah, I think that helps clarify yeah thank you yeah. And last year I know we had some discussions of goals, like I said internally, is there anything that we're missing here that people think would be valuable to include or to help God our thinking, I think, I think, of having an expectation that this is going to be an incremental effort rather than a big bang effort is is good to good to have otherwise this could end up being, you know, along with massive feature branch or forked repo in order to make this work. I think that needs to be mentioned as a goal or is that really more of a vine. Yeah, it's kind of a vibe but I think as a goal to frame it in the context of a goal is incrementally mergeable. I'll put that here. Because we can't do it all at once. No big banks. Yep. So incrementally mergeable no big banks. That seems fine. I'm spacing. Yeah, maybe. Yeah, digestible reviews. Incremental was the word I was looking for. Yeah, make digestible reviews warrants inclusion. That's a big one review cycle to warning inclusion. Okay. Alright, so anything else on the goals here. I think we've used enough time to kind of level set anything else about the language as well are people comfortable the way that we're discussing this because I want to kind of lock it in so that we can continue to discuss about it in the right context. Diego, go ahead please. Yeah, thank you. I'm seeing like a bit overlapping between the, I mean, maybe it's something that we are going to discuss in this, this meeting but about plugins and modules I see plugins, something maybe more of a runtime or something that the the core will discover. I don't know maybe using something like SPI or something like that. While modules are more something like, like at the building blocks of what we are doing I mean the clients or the PO and for four clients. So I don't know if we are going to use both concepts towards the modularization. I mean, for clients. So what do you think about this. I think that, you know, it's, it's a good distinction to bring out right like modules are a compile time concern plugins are a runtime concern, maybe. I think I don't want to say that they're orthogonal to each other but I don't, I think they're just different tools in the toolbox. And we probably all need to be on the same page as to like what is the rubric for making that division like the following three symptoms indicate this is a plugin need versus a module need. It's something that we clarify as we more sharply define that language. TLDR I think we need both and we're going to have to come to consensus as to when organizationally it would be really nice to be able to have plugins implemented or at least you know organized in a module for in our sub module format where we have these these bounded contexts or at least these sub projects that categorize the functionality, and our plugin API is just a single one of these sub projects. And we're going to end up with this dumping ground of a sub project in the plugin API if we just dump everything there so I think that we should have, I think we should leverage module boundaries. And then we're defining these plugins that way we can at least have them someplace where this is not just a pile of code and some sub project that is completely dependency hell. And this because looking at the protocol schedule stuff how to extend my, my biggest concern is how to organize the amount of classes or data types that will be available to the plugin API so to avoid making a mess moving without any clear organization so yes I think this is a very open question. I like the approach of resembling more or less the the code model that we have for the plugin. Maybe this could also in the modularization. Yeah, did we cover your concern. Yeah, yeah, I think so yeah thank you. Let's see if we can move on to page here. This is the second document that I mentioned. Again, only one potential approach to what we could do the components that Justin has broken down here are pretty large, right. So what we have here is, as of today, we have kind of a storage module that's run through the plugins for, you know, providing pluggable storage mechanisms but it's used in this case for rocks TV. No necessarily plugins for any of this stuff or specific modules for any of these other areas like sync transaction management, the EVM the EVM is a little bit of a special case. And maybe we can have Dan or discuss some of what that looks like in the context of this discussion. And then we have P2P and consensus as I mentioned. We have more on the right hand side, like components that we have that are useful in a lot of contexts. And to Justin's point up here somewhere. We don't necessarily need these to be modules but they should be accessible in a way that the core is able to provide them to other areas of the code base. So what are the cross cutting concerns I see like some of those things like cryptography and serialization, the observability and version of control those guys I see as being used in all of the different modules like cross cutting concern in that way but API is an RPC. If you look into a lesser degree configuration. There's there seem like they're like meta, as opposed to intra. I don't know how to mention that like RPC is not usually a consideration. I guess in some cases as an execution. I know it's RPC is a weird one for me as all. Yeah, there's a couple of I think you're right I think there's a couple of things that don't quite fit as well as the others. Yeah, you know, it's imperfect. What do you do. Yeah, we could break out third catalog or category, but I wouldn't know what to call it. The difference in cross cutting versus business logic. Do you think that that would have implications for how we would modularize or those. Yeah, I think I think it does actually I think a lot of those things that are cross cutting. I think you're probably safer considering the library as being the unit of delivery. As opposed to the business logic where you need something a little bit more sophisticated because you're going to be composing them and you know providing them to each other and building an object graph out of them etc. So I do think that there is a real tangible difference in how they're implemented. Any more comments on this. Do you think they'd use the same mechanism or was there a different method of extension for something that's meta as opposed to intro component or intro intro module. No, maybe, I mean a lot of those things are functional. You know, a lot of those things maybe don't have dependencies like the dependencies of a crypto library is just like lights. You know they're working on Rawls and primitives and I think serialization is kind of like that too. I think there's there's nothing to stop you from using, you know, the same mechanism that connects all the business logic to also provide some of the cross cutting concerns. There's nothing that would prevent you from doing you could totally do that I don't see it as necessary. And if I was prioritizing the list of things that I need to modularize. Those would be much lower on the list because I don't see a lot of lift there. And they're kind of find the way that they are. And the web of dependencies that runs through them is not as problematic. I'm just wondering if there's like, if we think of the, I mean, Dano you might have been one of the original or the original architects of the plugin system. It feels like there's like a dividing line, like a very fuzzy dividing line between what, what should be a pluggable and modular versus something that would be like implemented as a distribution, like, there's an alternate implementation that's leveraging portions of basic. And we're wrapping it up differently. Like, I'm wondering if there's if. Yeah, go ahead. The original intent of the plugin system dates back to the Pegasus days, where we're looking to build value ads that we were charged for. So we weren't really looking to modularize the core. We were looking to add features that might produce revenue streams. So that was the foundation of, and the limits of what it needed to enable. So I didn't go too deep and we didn't focus on doing hardcore modular modularization of the code. You think that it could be made suitable to that. Or do you think that there's probably, yeah, okay, it's, it's got a startup life cycle to load things. It's just rebuilding the core loop to bring those components in from the plugins. It'll be the tricky part. I think some of that's already been done with the rocks DB. And if I can say it another feature, there's like an encrypted rocks DB that somebody said they'd pay for. I don't know what the ultimate outcome of that repo is, but to substitute the storage layer with rocks DB. And I think I use some of it and I was experimenting with other databases.  So that's why we're still with rocks. Got it. We've been, we've been doubling down on the plugin API lately, but it's with, we've not had a like kind of an overview, we've just been kind of being reactive to what needs to be pluggable. And it's, it's kind of one off here one off there. There's like the trilog shipping feature and the RPC extension feature. Yeah, it seems like we're at a point where we, I think we need to have a top down approach. I mean, if not top down approach, then at least a paved path or a notion about what belongs as a plugin and what belongs as a separate distribution that's leveraging the core basic components. So when I'm gathering the, there's kind of like two ways that Gary that that's kind of being viewed right. So there's the, the, we could essentially level up the plugin system, like Dano says to incorporate a bunch of these modules at startup, and then basically turn the client modification portion of the plugin API into something else. Whereas we make kind of that the ability to use like to, to replace and load and use these modules kind of as a core component of the basic client and then we basically consider the plugin API. Something different. Are you, are you kind of following what I'm saying, like just that modification portion. Or if you need to create new modules, etc. Because if we don't go that route and we go the route, or excuse me if we exclusively. If we ignore those kind of module batteries that were mentioned in the previous section, like when we're talking about privacy and PW code, I think we'll lose out on the tech that resolution that we're looking for. In certain instances, unless we modify the plugins to because it's also a lot of complexity when you're, you know, we're as we're bringing in these modules right. Am I making much sense or am I. This is hard to follow. Yeah, I think it makes sense. It's almost like a spirit of the thing like you have and make clear intent. We're trying plugins right like we need to find a way to make a distinction between like we're plugging together a bunch of these basic modules and we'd still would need to find what those module batteries are and make those interfaces clean. And etc. etc. In order to, like Daniel said have predictable testing and impact of code and all this other stuff that which were, which is one of the primary reasons for doing this. So I think it's I think to Diego's previous point it's kind of a mix of the two approaches, but it would change the way that we think of the plugins today as like a means to modify the client right. See we got a hand up. Yeah, I'm wondering it might be a question, but what's the value nowadays for the plugin system. Okay, I could speak to that with with current context base who is being used for the linear L2 largely because you know, most L2s are just kind of doing their own bespoke forks of death. It's sort of a nightmare to is not that much of a nightmare but it's certainly a pain to just be reactive to a code base that doesn't want to incorporate your changes. And basically what we don't want to do is pollute basically with layer two concerns that are specific to certain chains but we also want to support that use case. So like I was saying, there's a as a trilog shipping bonsai feature that's been made into a plugin. There's like some specific zk avium tracing that has been implemented as plugins. That's really the goal is to be the kind of support the modular blockchain use case, but still leave base who as primarily a main net client you know main net compatible Ethereum client without turning it into this this like nightmare of special cases like kind of currently exists with privacy. And my opinion. Yeah, it's really just kind of a way of keeping the code base clean and separating these concerns out that are usually network specific. Okay, but maybe that those cool became modules eventually. I don't know, maybe it sounds like we were using the plugins API because that was we already had. Maybe I don't know. I mean, it was there. I mean, it was something to use. And it allows us allows us to do multi repo without having to have everything in the mono repo. I mean it also allows them for some degree of. I don't want to say private but I mean, I don't really over what what the, you know, you don't have to get something merged into main to have specific pluggable behavior. I think that it's kind of empowering to developers who wanted to not necessarily fork basu but use basu on different use cases. Okay, thank you. That's just my opinion. And so I think distributions are an interesting aspect as well. I'm supporting these different chains. So I think these are two approaches that we could. We can embrace both approaches. And it's just like when is it appropriate to do one versus the other is what's a question in my mind. From your experience with that, what could be the individual consensus algorithms, the implementers plugins today from from what you've done recently do you think that's feasible. So, I don't think so. I'm pretty confident in that, but the engine API is a really much, I mean it really is just a stripped out how to interact with an execution engine right. So I am, my campaign is to kind of treat that as the entry point for consensus related things. I don't expect that to be complete but I think it could get us to, you know, 9095%. So, you know, to entertain the concept though, there would be a lot of things that would have to be added and exposed through the plugin API to enable the consensus mechanism to be there's a lot more work to take that path than there is to adjust the engine API extend or expand it and allow everything to go through there. I need to just give us more. Okay, thanks. That's useful. What do we think then about kind of, I think we're trying to do a one size fits all approach when we have a few different tools in our toolbox. The one thing that we don't necessarily have figured out is the module approach if we're thinking about client modification at like, I think those goals are a little kind of weirdly stated but think about it this way right or one of our big goals is is client modification in order to get the other two goals is better distribution and a reduction of tech debt, hopefully via whatever we've done. So the three tools we've outlined are the base of the engine API, the plugin API, and then this third so called module thing, which we don't necessarily have a tool for can we discuss what it would look like to not like one size fits all tool How can we potentially use all these tools to accomplish all of we want against these different business logic areas and we still have kind of the to flesh out that third one right we'd have to do a lot of work to define all these module interfaces. What makes sense for these abstractions. And then how do we accomplish that right is it via plugins is it via something new. Do we modify the plugin API. Do we have the option to have like kind of a compile time modular approach or do we keep it and then we make the runtime modifications more like what we think of as the existing plugin API and we kind of retool how it works. Any thoughts on any of that I think that we haven't really fleshed out that third notion of kind of what it would take to get to that module boundary clean interface kind of loading approach that kind of compile time approach. Do we want to make module boundaries plugin boundaries, because I think that an easy way to do that would be to have like an interface project that that way we don't end up, you know, with a plugin project that has, you know, this spider web of dependencies and then a bunch of unrelated code. I mean I don't know if we want to have module boundaries be, you know, modules be plugin boundaries. Right. Right. Yeah. But I've, I think I've written a lot on the subject so I'm going to hold my comments here from others. You should go ahead Justin. Yeah, it's gonna say. Okay. So, when we talk about modules and things like that you know I'm, I'm thinking of this as a software architecture problems with compile time concern. And I don't think all is lost like I think there are a lot of these divisions are already there invasive I think that we have a lot of those things they just need to be updated and sharpened a little bit and maybe clarifying the interfaces and doing a little bit more thinking about that. And there are, you know, to discuss packaging, the greater modules there's a lot of them, and they're reasonable divisions they might not be, you know, might need to be updated that might need to be rethought and and revisited, but I think they're reasonable. So, I do think of this as a refactoring problem. And I think it's mostly orthogonal to either exposing the results of that through the engine API, or the plugin API, or maybe X some other thing that exposes it, but the underlying work to sharpen those interfaces is make those implementations. The best coupled is is a big, big chunk of work that we're going to work on iteratively. I have, I think written a lot about how I think inversion of control is the approach that we need to be taking to reduce the coupling. If I was to, you know, treat this as a ongoing project a death march if you will, I find a way to measure that coupling over time, and make sure that it's going in the right direction and that the things that we're building become less and less coupled. Once we accomplish that, we can expose them through a plugin API, or a rest API or a RPC API or whatever it becomes. It becomes, you know, not as big of an impact to move those things around and use those. So, I think I am planning on, you know, taking a pass at this in small ways, where I find these problems, and specifically address the coupling. The document that I've been updating, which is very rough, and I am, you know, smoothing it out as I go. I have a number of examples where, you know, if you want to add metrics capability, for instance, to a deeply nested part of the code. You may have to go through and make, you know, nine 1015 different classes aware of what a metric system is just so it can pass along to the place that it's eventually being used so this is, you know, this is a textbook inversion control problem. I've already introduced dagger in the VM tool. I've already introduced dagger very small fashion into base to itself. And I think that's probably, you know, I don't want to start this whole conversation on what tool do we use, but we need something. And that's kind of there and I started to adopt it. So, I think, for next steps, we're looking at find a place where base to hurt you. Try to fix it using an inversion of control pattern, bring it back to everybody else discuss the merits strengths weaknesses of it, and make a small PR that we could move forward. And that was a condensed description of the things that I've been writing and it wasn't to rambly or broad thoughts questions concerns. I think I think personally, I know I've hit that kind of scenario that you describe the metrics one is a classic one. I suddenly decide you need to populate a metric from some, some new bit of the co base and I've certainly seen that recently and not in Bessu but I think I think generally I buy into that approach from what you've described. And I think it's, yeah, I'd be very interested to see how that was sort of a first place of introducing that elsewhere would be, yeah, having a look at that. So, will the inversion of control mechanism dagger in this case how are we going to make that work with runtime discoverability via plugins, can we use dagger can we use that subsystem to to allow for runtime extensibility. I don't know, and yes. So I don't know exactly how we would go about doing that. But I don't think there's anything about any of this that constrains us or prevents us from doing that right like you can say, you can have dagger have compile time far wired. You know, here's a collection of implementations that are specific to each classic and here's a different competing collection of implementations that are specific to main net. And now at runtime, choose the ones that you want a third thing to be providing right so you have these modules in your version, it's a service locator pattern you can extend the service locator pattern and say, before you start choosing the services that you want to locate go down this runtime specified branch, and now choose from those. So the specifics of like how we're going to implement that I don't really need to prescribe that at the moment. I don't see any reason why we would be able to implement that with dagger. Yeah, I think until we have that though then we will, you know, there's going to be the clash of runtime discoverability versus compile time discoverability. So we should prioritize that I think is making sure that we know how we can use dagger specifically since that's our IOC of choice. How we can do that at runtime. Well, I don't disagree, and I don't really see any risk. I guess the only question would be like okay well cool like if you build the runtime mechanism first you got nothing to actually expose so it's kind of like, you know maybe it goes third, I don't know. But you know that's kind of a scheduling implementation detail that the notion that well if we can't make that choice at runtime anyway, we would want to know that sooner is compelling. What do other people think that sounds like try and see. Yeah, I would think try and see is a good approach. We have a identified area that you'd like to target, or we have to do a wholesale selfishly. The interfaces that are necessary for a linear scheduler would be timely. I think you're nominating yourself in that case Gary. I'm nominating Fabio actually. I think we should frankly go for something that as maximally like useful as a demonstration. If we're trying to get a collaborative effort where we get a bunch of different people working on this so that we can chip away at the different use cases. What is a single slice that would be kind of maximally useful and demonstrating that kind of approach. What do you think Justin. Can you rephrase that I'm not what what what say we pick something to like to some part of the code base as an for an inversion of control pattern and you want to demonstrate like you said a small PR that shows this change. If our goal is to catalyze everybody on this call and have them understand what we're talking about so that we can all go off and work on other modules. I picking something that maybe touches privacy. I'm going to go back to the main net like multiple use cases so that we can use it as a demonstration point for this working group and come back together, talk about the goals what we accomplished and like the impact on the code base, essentially. I wouldn't do it that way. Because if you think of it as your, your, you're solving an object graph problem.  Like you actually want depth, I think. So we actually take the opposite approach where I find one thing that goes deep into the code. And instrument that way you know maybe the metrics, you know provide metrics to something that doesn't already have it. And I think that that and the document that I'm working on there's a PR that was that was merged and you can see it, the thing that needed to be instrumented was fairly deep in the object graph. And I think that if I'm imagining us implementing this incrementally that's, that's a more analogous demonstration. And I think if we demonstrated doing it broadly and it touched a lot of things. It kind of wouldn't help us be confident that we could iterate on it and small PRs that we can, you know, keep, keep getting into main and incrementally improving the situation. Okay, I will not claim to choose or, you know, do you think that I think it's. It's a more ambitious target but I think, you know, we talked about maybe not making sluggable proof of work but like, we have enough examples of consensus mechanisms, proof of work click IBFT QBFT. And if the goal is the long term goal is to transform those into users of manipulators of an engine API. That seems like that would be maybe it may as perhaps a large first go but at least it's well defined, and there's multiple existing implementation so it's not like we're going to be, you know, going off on a tangent somewhere with no other examples and making it too tightly the interface is too tightly coupled. Hmm. Make click use the engine API that'd be pretty dope. That would be that would be harder than proof of work I think you think. Yeah, just because of the protocol modifications and the P2P stuff. I think that the click makes. Okay, you have a question. And it was also a suggestion about another possible things to see as a starting point. That is not big, but is used at the many different places. The JSON file, the parsing of the JSON file, the querying the JSON file options. For example, in this we have custom. Some custom data that is relevant only to privacy, IBFT and so on. And it seems to be a kind of prerequisite for making good so on the moralizing the consensus, but also click as its own entry in the JSON in the Genesis, right. From what I saw, literally, it seems that this is not something so big like the protocol schedule seems more limited and quite used inside the code. What the discussions that were happening in the discord. Yesterday. There's some back and forth around the protocol schedule. Yeah, that's something because I'm interested in moving forward with customizing the transaction validator block validator and the main challenge that I'm finding is fine to reusing the current plugin API. The main challenge is how to manage the growth of the plugin API in a clean way. Because maybe the goal at the moment is very wide. So make all the protocol schedule as a plugin. It's also possible to reduce the scope and put the focus on the section validator block validator and but all those need to be scheduled according to milestone so some kind of protocol schedule functionality need to be exposed in the plugin API. This means that a lot of interfaces that types could be moved there. But how to do that without say creating just a mess of different interfaces object. Because at the moment, we, we, I don't think we have a clear organization there, maybe I'm just missing the history. Usually the plugin were touching limited surfaces so it was only you need to move some a few interfaces, some data types and this was more or less simple and trivial. But if we need to move much more stuff there. How to do that without let's say, I said before, creating confusion and making it, let's say, not clean. This is my main point. What I'm thinking to do is to try to reduce the scope, following some of the approach that I've been shared on the scope channel and share a proof of concept something that we can further review and see if there are limits or not in that, that kind of approach. Then I let other, let's say, report anything that they feel is relevant for the discussion. So, can we like just summarize what we think the candidates are for a path forward for it sounded to me like we discussed runtime, runtime discoverability via dagger, and also, like a first candidate for, or maybe not a first candidate for modularization. And Justin, did you want to use the cast Merkle trial loader as the as the example for the second thing. For the second, yes for the second problem. Yes. I do for the runtime discriminator on choosing that graph. I don't think that's appropriate. And I'm not quite sure what would be yet. So we'll probably need to keep thinking about that. Like what, what configuration option that a user can pass in that startup could choose a different implementation of an interface. I think that's the question that we need to ask and sort the answers by smallest. You know, narrow, however you want to think about it right. Yeah currently one of those is not even a runtime option, as much as it is a directory that's scanned for additional jar files additional code code base. I mean we can I mean if this is a proof of concept we can always fake it. I would say like, oh transaction validator. Alright there's command line option now to use transaction validator foo. And then we demonstrate that like okay. They're all wired up correctly at compile time, but when you start providing that via the service locator pattern you get the one with the config configuration specified. We could contrive something I guess. I think something we should consider adding to the to the plugin context right now you can register one service with one interface. I think we need to have something where you can register multiple items like for the milestone stuff. I don't know if service is the right word, maybe multi service or component where you can register via class that would say this represents a milestone definition, and then you would just add to it. So that way you could make all the etc forks a plug in, you can make your customized enterprise forks a plug in if you want to have a fork that has that custom transaction processor. That's where it would come in. So, I agree that the protocol schedule is a great opportunity for this. I think you looked at this recently and it turned into it turned into a very broad graph to resolve. Because there are so many things so you know. Yeah, this is exactly my point out to organize the plugin API around this. If we can narrow that down I think that that's, you know, great. So, talking about transactional editor. The point here is that, for example, you need to have a way to define a protocol schedule for that transaction validator in the in a plugin so because you can't simply say at that time use this transaction instead of because the the transaction validator is linked to a milestone in a protocol schedule so as this kind of life cycle. So, unfortunately, let's say that this kind of things requires some kind of protocol schedule implementation as a service to be be used also in a simple concept. Now, on the other hand, even just the active designing that would give you a really good menu of things that that you need to implement right. Yeah, yeah, exactly. For this, for example, the first dependency is that you need to to be able to understand to query at least the the the Genesis file option into the plugin. Because the marathon are defined there so this is a clear dependencies. This I say before, I mean the JSON file, the Genesis file could be a little project to start so should require less of a full blown protocol schedule. Yes, Diego. Yeah, I have a mother, you know, open question here. To be able to, I don't know override any dagger module through a runtime, because if that's the case, I'm seeing that like a bit risky. I don't know you might download. I don't know this distribution out of a sudden you get something into some directory that is load up in runtime, and it may break things or thinking mindlessly to replace the whole behavior of something important. Yeah class path injection things like that yeah. Yeah. Mm hmm. I think I think yeah I think we would be very intentional and very careful about things that we expose like that. Yeah, cool. Yeah, it's a very kind of time yeah. Some, I'm trying to think what the first approach would be Justin based on all these things we've just said. I think Fabio and Justin both have a candidate a modularization candidate that they're looking at. We could, if we still have this notion of there's there's two classes of action items following this in terms of development efforts. I would. Yeah, I would call this a decoupling exercise. Yeah, try and convey that this is like a very small foundational thing that we're eventually going to build modularization, plugability, remote API is all those other things that we want on top of that so I would just to you know marketing point there just to kind of. It's a refactoring exercise. Yeah, yeah, exactly. So, so, so, sorry, go ahead, Fabio. Yes, I would like also to use this starting task starting activities to talk about how to organize the plug in API and how to move things there in a way that is clean and is future proof action, just that. Gotcha. Okay. So it seems like we will nominate some folks in the consensus engineering team to work on some of these as basically an initial pass and then we'll share the results and design of anything that we produce in another follow on session within a couple of weeks. And then we can go through it as a as a group to discuss what was changed lessons learn outcomes. You know where like there's probably will be a very specific PR. And then I think that at that time it can be a good point to discuss like how we want to continue down that route. From what I'm gathering Justin we're building and we're starting with a decoupling exercise and then we have decoupled groupings of modules, we can decide next on how to organize and continue the work against a modularity goal at that point correct. Yeah, I think I want to just, you know, take a second to phrase it a little bit differently again like I want like a lot of people. One of the major goals that we have here is to decouple consensus specifically right like that's, that's what cost there are customers out there that want to be able to do that they want to be able to run private networks and they want to, you know, they want to be able to iterate on that apart from what we're doing from main net so I think like. Yes, I agree with like the way that you outlined that I want to make sure that those people are contributing and making their voices heard as well so like. I'm kind of just writing documents in the wiki and having discussions in discord in the modularity channel specifically, and I'm hoping that you know people that, you know, care about that consensus decoupling part of it, are throwing out ideas and we can start using those as some of the building blocks, if we can find small enough once right, like it's like oh yeah you should totally do the entire consensus back and it's like okay well I can't write a PR that anybody would like, you know, approve to do that. So, just try to be inclusive just try to be inclusive of the, the major use case that we have which is decoupling out the consensus. To add to that I'd say, I don't think we want to block on our results on, you know, the consensus engineer results, there's this parallel paths that could be taken. Like, I think that the the refactor of proof of work into a driver of the execution engine. That's an entirely parallel track that could inform and make progress on this goal, at the same time without having to block on results and will. I think it'll allow the conversation to be, you know, a decentralized conversation like there's more contributors rather than just we're waiting on consensus engineering to tell you how you're going to do it. Perfect. Yeah, that wasn't my intention but I see how that's read. That's good. Yeah, and like I said we have a menu of options here and a bunch of different tools. So, perhaps we will schedule a follow up actual get together in maybe three or four weeks. And as Justin said in the meantime use the discord to go through this topic and potentially even share code snippets PRs branches that folks can just kind of look through and see in the short term. Anybody who has an idea to to contribute in a separate separate area or another, you know, different subject area and in this in the modularity discussions, just pop it on the hyper ledger modularity channel and run with it I think. Yeah, we anything else interfaces. Okay, I will gather some notes from this and share them in the wiki and on discord. Thank you for those but yeah I think this is a great approach. Also check out your calendar for. Like I said probably three or four weeks just so we have enough time to make progress without. You know with summer holidays in August and all the normal August stuff. Cool. Alright thanks everyone for the hour today. It's good to see everybody on this call. Thank you. Thank you. Yeah thanks everyone.


The Irish food portion sizes database contains median, 25th and 75th percentile portion weights for a variety of foods and beverages for Irish children, adolescents and adults. The data were collected from three large, cross-sectional food consumption surveys conducted in Ireland between 2003 and 2010. The data can be used to estimate typical portion sizes for various foods and beverages, and can also be used to compare portion sizes among different demographic groups. This article was authored by Jacqueline Lyons, Janet Walton, and Albert Flynn.


Hong Kong pop star Coco Li has taken her own life at the age of 48 now This also follows a lot of other Asian stars that have recently taken their life as well And a lot of people are asking questions such as like how do you actually stop this and why is this happening for sure? RIP Coco Li for the people who don't know she was almost like the Britney Spears of the Chinese speaking world You know in the late 90s. She had this US billboard chart hit do you want my love in 1999? I always remember that one and Yeah, a lot of people are just wondering what's going on And because this sort of comes on the heels of a lot of people from from various media platforms in Asia That have also followed the same path, right? Yeah, so we're gonna go through the comment section There's a lot of different thoughts out there But we also want to give our own thoughts as well and kind of give a little bit more details About what's going on, but yeah, please hit that like button check out other episodes of the hot-pot boys as we get into this Yeah, I mean I think anytime somebody who is a big pop star passes away and or especially in this tragic way you know There's a lot of speculation right especially about the drama and the messiness she was going through a messy divorce You know with this guy Bruce Rockowitz who you know a lot of people don't know was he a billionaire? Was he a fake billionaire who had more money was it actually Cocoa was it him because now he's contesting the will and of course It turns into a lot of like Internet going against the people that they're blaming it on right, but it's unclear I'm sure it didn't help, but nobody knows what was the the factors when it goes into something so extreme like this Yeah, I mean I think Details aside, which I think there could be so many different holes that you dig you can go down the rabbo You can try to be the internet cheating you could be the internet investigator You could be the internet detective and try to pick these things up Oh, well this happened and then she made this post and I think that one thing you have to realize is no matter How rich and famous you are and no matter almost what you do? Anybody is capable of doing this of taking their own life like people at all different levels Poor people that aren't famous to rich people who are very famous have done it So I guess what it's so hard, but I think the key is like you having Strong mind and having good people around you and usually those things are the things that are lacking But I do think you know she was famous from the time she was 18 until still famous at 48 That's not a regular life to live though No, I mean listen Britney Spears was famous ever since she was a kid and she had that crazy mental breakdown I'm sure tons of people thought and thought that she would take her own life.  She had breast cancer You know, I guess there were some things within vitro that weren't working because she was trying to have a kid But it didn't work for a number of years and obviously I guess that opportunity had passed. I mean We got to get into the comments section, but a few quick thoughts are Andrew There's this saying that somebody put me on too recently that said, you know, there are happy mouses in sad tigers You know, I think people look at people who quote-unquote have it all because she had money and she had fame But a lot of people don't understand Especially if you got the money through entertainment, there's a lot of pressure that comes along with that too Yeah, and also for sure and especially if you're kind of like fan centric And you know if you're always relying on fans to pick you up and and the fans say good things about you But sometimes fans can also say horrible things about you So then that if you put your self validation into what fans say Then you are also subject to that and letting that affect how you feel about yourself But anyways, let's get into the comment section because I think that a lot of different people know Information or we're bigger fans of her than than we were so so like let's get to see what they're saying Somebody said this is so heartbreaking no matter how successful a person looks on the outside We never know the demons that they are battling behind closed doors That is why it is important to take care of your mental health seek help and check up on your loved ones Depression looks different for everyone. Yeah, I think it's very easy to just say check up on people And oh you got to get mental help. You got to get therapy. I think those things are very easy I think that at the end of the day like having a strong will and a strong soul and a strong mind about yourself is It takes more than just like some therapy sessions. It kind of takes your whole system around you I don't think you can just uh, you know, I'm not an expert in this at all But it's probably takes a whole life change like let's just say life is made out of ten parts It probably takes a change to more than just one out of the thing If you don't have that around you and you need like a remedy for something for your depression I'm sure it's gonna it's gonna come out and more extreme But certainly depression is no joke guys and I don't care who what there's a lot of people who have accomplished a lot of things in life Andrew very successful whether it's in business or this field or that field who suffer from depression. That is clear Um, somebody said sad thing is that mental health is very overlooked in being raised Asian I mean we've talked about this before is it true That mental health is like not looked after however Andrew in American media and entertainment whether we're talking about Bourdain or Robin Williams or even back to Marilyn Monroe or like James Dean There's been a history of Taking your own life through depression as well. Yeah. Yeah, and I think also I wouldn't doubt that social media has to play into this or You know Sometimes some people even feel like Like oh like other famous people do it so like, you know, that's a way to go out Somebody said she should have looked for true love instead of just going with the billionaire Of course, these are the judgy comments that sort of come out in there I don't know. I was not I didn't keep up with like any of the gossip until these stories started coming out I mean Michelle. Yo is married to a billionaire. I feel like she's gonna be fine People were just sort of memorializing her dude. I grew up in Thailand in the 2000s She was bigger than Brittany to us man She was just the king queen of late 90s Asian pop especially, you know, mixing it with the English and in language stuff Somebody said man She was more like Christina Aguilera because she did the Mandarin version of Reflections when Mulan the Disney one came out And somebody said sometimes professional help will solve the issue But sometimes it will not and a lot of people were talking about ideation versus follow through because the truth is Andrew a lot of People probably at some point in their life have contemplated suicide, right? Yeah, like of the general population. Yeah, even Tupac said he did, you know, a lot of people a lot of people have Yeah, um, somebody said I hope that she found the piece that she was looking for and of course This turned into a whole you know debate about whether it's the right thing to do wrong thing to do If you are at a point where you cannot find any further, you know what I mean like what what is the morality in it, right? Right, I mean I would say It'd be probably worse to hurt other people out of depression, you know But yeah, this is a pretty this obviously one of the most extreme things you could possibly do somebody said the eyes never lie They are the window to the soul Yeah, I do think the eyes are more telling oftentimes than the smiles though because the smiles you can kind of fake a smile But it's hard to fake the look in your eyes, but definitely yeah I don't know if that what the science is behind this, right? Somebody said it could be hormonal too because when women go through menopause, you know, there's a depression relatable I do think that a lot of stuff is Hormonal too though like a lot of we're not unless you go to medical school or you take classes on it You are not like trained to understand the the multitude of chemicals that make up a brain well I mean honestly when you start to look at all the factors and Whether or not these are true or not I mean it seems like there's a lot of elements coming together, you know That could be kind of sad like given everything that we just said that what based on what people know about Her life and then not to mention the details that we don't know about her life You know, yeah Somebody said maybe medicine helps or maybe it hurts though because a lot of people are debating right now and about you know You know it goes into a whole debate in the Western War right now about big pharma And whether people should be on drugs or not drugs or because a lot of people date You know how we're talking about earlier about shifting all ten aspects of your life a lot of people They're like oh just keep all those the same and then you take a pill and then people are also talking about like what type of drugs Like are we talking about the less regulated ones like a shrooms or something? That's supposed to make you more like euphoric or like give you a different sense of being, you know things like that could that have helped I don't know. Yeah, somebody said man I had wished they had access to drugs like shrooms in Asia or at least weed possibly I think um, you know guys Like I said, I'm not a subject matter expert. I would say Allowing certain things is so tough to say and or because probably for some people it could help their situation But if you institute some sort of like mass allowance of certain things some people who are allowed access to those things It's gonna hurt their situation because each of these issues is so incredibly individual That's what I think somebody says how come it seems like there's such a rise of addiction and mental health issues Society in 2023 seems broken. Um, do you think this is just a media cycle Andrew? Or there is something legitimately wrong about the times that we're in is it social media because like we said this is not just Isolated to one region. I mean, it's all of Asia. It's all of East Asia in particular But a lot of stars whether you're talking about drama singers, etc. Etc. Yeah I think a lot of famous people who have been in the public eye and kind of are these people who want to leave a legacy I think sometimes it's easy that it could cross your mind like hey Well, what would happen if I took my own life if I died right now like how would my legacy be left? And I think that I Think anybody can think about suicide But I think particularly if you're famous you're thinking about your legacy and what do people act like or think like after you're gone And you know a lot of people think like that there's been a lot of songs about that too Somebody said one piece of advice that I actually learned is that you just have to talk to somebody and just bring it up directly Asking them. Hey, are you thinking of killing themselves? Studies have shown this does not increase the risk that they'll do it But it does increase the risk that they will tell you that something is going on So basically somebody said I want to just use this as an opportunity to let everybody know you should normalize bringing it up Yeah, no, I do think even if you think someone is having thoughts of killing someone else and you bring it up to him Be like, hey, are you thinking about killing somebody and then they're like, oh shoot? Well, maybe if it's that obvious Consciously people are like dropping hints Yeah, I think so. I'm not sure man I'm not a psychologist But it seems like people would rather drop hints and make it kind of like mysterious But if you kind of call it out and it brings it up to the public then people are like, oh, oh It's almost like shining a light on it and then everything scrambles away.  Oh, she didn't exercise enough. Oh, she didn't do yoga enough She didn't meditate enough. Oh, she wasn't really just oh, she needed like a lot of people were saying Oh, man, if you work at an animal shelter that has been shown to be the number one suicide She didn't save enough kids all these factors we could look at and kind of give it a percentage and guess about it in our minds But some people are maybe just gonna like they're just like I don't know if you can fully stop this, you know Oh, because it's been a part of actually society for forever. Yeah as long as written history goes I think whether it's you know people in the royal court or high-profile people in any world Yeah, but the best way is to have mental health checkups along the way You know, I think you can't check up on someone when it's too late when they're already nine out of ten ten out of ten They're already like, you know older. It's almost like her whole rise up People gotta be checking, you know, and then it's still even then you never know what's going what's going through someone else's brain So I think that's the hardest thing about it I do believe people are normalizing in Andrews something that sort of shocked me And I know was viewed as very taboo in the NBA world Andrew John Wall recently came out and said that he had contemplated Taking his own life. Yeah, and that's super something you would not think that John Wall would say. Yeah No, some other NBA players had said that they they suffered from depression too. Kevin Love, right? Yeah, Kevin Love, Jamar Drozan I think that You know, I think it takes a lot of courage especially to talk about that as an athlete because it makes you sound weak But even as a pop star, you know, a lot of people don't want to mention that A lot of people just want to put on that public image like I'm strong, you know, I do it for my fans You don't want to be vulnerable But sometimes I do think you know when you feel like people are being overly dramatic Sometimes that's what their way of saying. Hey guys, I've thought about it But the way that it's publicly sounding is like it's a cry for attention Because you know what I mean how some fans might look at her being depressed as a cry for attention But it could just be her releasing also her thoughts about it as well So then you never know because as a fan are you judging it? Are you judging it? Like oh, they're just doing that for attention and they want everybody to feel bad for them or oh wow This is actually a real thing, right? It's very very difficult to judge. I do think being a star in Asia You are and I'm not saying that this played into it all But I do know the structure of being a star in Asia and or is different than being a star in the West Like you almost have to be a really good role model in the East versus in the West There's a little bit more room to be like I guess what self-destructive. Yeah. Yeah, I would say so Yeah, I mean, what do you think about the final comment that people were just like saying, you know Obviously, there was a lot of people in the comments again Man all these people that seem like they have it all like they're rich and they're famous They're in all these elite circles of you know this owner of this company or something like that and But yeah, it clearly goes to show you like I said earlier like it's not about just like How much money you have in the bank or how high your status is right if you're unhappy. Yeah, I think that I Don't those things don't truly make you happy and happy for a long term and happy is dude happy's just a feeling man like you kind of have to have a larger mission and Whether that's having kids or that's having a charity or having some type of other mission besides just music and being rich or being famous or being pretty or or being like Having all this attention then this I would say that those things more bring dopamine than they do Long-term it's not about feeling happy. You can take a bunch of drugs and feel happy, right?  I think it's so different like I said person-to-person I'm not a subject matter expert. I'm not trying to pass judgment, you know at all I'm just trying to bring it up and one thing that I would think that would really help Andrew in Asia specifically is if there was a Different way to explain mental health. There wasn't so necessarily, you know how like the Western version is all about like Explaining it through these terms that I think a level is a lot of very hard for Asians to understand I think a more technical understanding of more valves and different chemicals wouldn't help Asians understand Oh, you mean like you know, it's not gonna be like this flowery read like seven books version and go because Asians The culture is different.  That's what even resonates with me more than you know, the other style So anyway guys, let us know what you think in the comment section below Of course keep it respectful Do you think that Asians need to look more into mental health specifically for the celebrities in the media or just in society in general? And of course, let us know what is your favorite moment of Coco Lee in the comments section below But of course our main goal is to always have a takeaway for the community and you know, just so everybody can like Have take away something from this RIP until next time we to hop up boys. We out. Peace


Chapter 28 of The Spirit of the Border by Zayn Gray. This LibriVox recording is in the public domain, recording by Leonard Wilson. Chapter 28 Zayn turned and cut the young missionary's bonds. Jim ran to where Nell was lying on the ground, and tenderly raised her head, calling to her that they were saved. Zayn bathed the girl's pale face. Presently she sighed and opened her eyes. Then Zayn looked from the statue-like form of Winganund to the motionless figure of Wetzel. The chief stood erect with his eyes on the distant hills. Wetzel remained with folded arms, his cold eyes fixed upon the writhing, moaning renegade. "'Lew, look here,' said Zayn, unhesitatingly, and pointed toward the chief. Wetzel quivered as if sharply stung. The cold glitter in his eyes changed to lurid fire, with upraised tomahawk he bounded across the brook. "'Lew, wait a minute,' yelled Zayn. "'Wetzel, wait, wait,' cried Jim, grasping the hunter's arm. But the latter flung him off as the wind tosses a straw. "'Wetzel, wait, for God's sake, wait!' screamed Nell. She had risen at Zayn's call, and now saw the deadly resolve in the hunter's eyes. Firstly she flung herself in front of him. Bravely she risked her life before his mad rush. Frantically she threw her arms around him, and clung to his hands desperately. Wetzel halted, frenzied as he was at the sight of his foe. He could not hurt a woman. "'Girl, let go,' he panted, and his broad breast teed. "'No, no, no, listen, Wetzel, you must not kill the chief.  He warned me to flee from Gertie. He offered to guide us to Fort Henry.  For my sake, Wetzel, do not kill him. Don't let me be the cause of his murder. Wetzel, Wetzel, lower your arm, drop your hatchet. For pity's sake, do not spill more blood. Wing and und is a Christian.' Wetzel stepped back, breathing heavily.   He had hunted for so many long years.  Her voice sweet and earnest. "'I reckon not. But this engine ain't one,' replied Wetzel slowly. "'Put away your hatchet. Let me have it. Listen, and I will tell you after thanking you for this rescue. Do you know of my marriage? Come, please listen. Forget for a moment your enmity. Oh, you must be merciful. Brave men are always merciful.' "'Engine, are you a Christian?' hissed Wetzel. "'Oh, I know he is. I know he is,' cried Nell, still standing between Wetzel and the chief. Wing and unspoked no word. He did not move. His falcon eyes gazed tranquilly at his white foe. Even or pagan he would not speak one word to save his life.  Yellow hair the Delaware is through to his race.' As he spoke gently to Nell, a noble dignity shone upon his dark face. "'Engine, my back bears the scars of your brave swipes,' hissed Wetzel, once more advancing. "'Dead wind, your scars are deep. But the Delaware's are deeper,' came the calm reply. Wing and unsheartened bears two scars. His son lies under the moss and firms. Dead wind killed him. Dead wind alone knows his grave. Wing and unsdaughter, the delight of his waning years, freed the Delaware's great foe and betrayed her father. And the Christian god tell Wing and und of his child. Wetzel shook like a tree in a storm, just as cried out in the Indian's deep voice. Wetzel fought for mastery of himself. "'Dalloware, your daughter lays there with her lover,' said Wetzel, firmly, and pointed into the spring. "'Burr!' exclaimed the Indian, bending over the dark pool. She looked long into its murky depths. Then he thrust his arm down into the brown water. "'Dead wind tells no lie,' said the chief calmly, and pointed toward Gertie. The renegade had ceased struggling. His head was bowed upon his breast. The white serpent has stung the Delaware. "'What does it mean?' cried Jim. "'Your brother Joe and Whispering Winds lie in the spring,' answered Jonathan Zane. Gertie murdered them, and Wetzel buried the two there. "'Oh, is it true, Crannell?' True last whispered Jim brokenly, holding out his arms to her. Indeed he needed her strength as much as she needed his. The girl gave one shuddering glance at the spring, and then hid her face on her husband's shoulder. "'Delaware, we are sworn foes,' cried Wetzel. Wingenund asks, no mercy. Are you a Christian?' Wingenund is true to his race. Delaware, be gone. Take these weapons and go. When your shadow falls short on the ground, death wind starts on your trail. Gertwind is the great white chief. He is the great Indian foe. He is as sure as the panther in his sleep, as swift as the wild goose in his northern flight. Wingenund never felt fear. The chieftain's sonorous reply rolled through the quiet glade. "'If that wind bursts for Wingenund's flood, let him spill it now, for when the Delaware goes into the forest, his trail will fade. Be gone,' roared Wetzel. The fever for blood was once more rising within him. The chief picked up some weapons of the dead Indians, and with haughty stride stalked from the glade. "'Oh, Wetzel, thank you. I knew.' Nell's voice broke as she faced the hunter. She recoiled from this changed man. "'Come, we'll go,' said Jonathan Zane. I'll guide you to Fort Henry.' He lifted the pack and led Nell and Jim out of the glade. They looked back once, to picture forever in their minds the lovely spot with its ghastly quiet bodies, the dark haunting spring, the renegade nailed to the tree, and the tall figure of Wetzel as he watched his shadow on the ground. When Wetzel also had gone, only two living creatures remained in the glade, the doomed renegade and the white dog. The gaunt-beast watched the man with hungry, mad eyes. A long moan wailed through the forest, it swelled mournfully on the air, and died away. The doomed man heard it. He raised his ghastly face, his dull senses seemed to revive. He gazed at the stiffening bodies of the Indians, at the gory corpse of Deering, at the savage eyes of the dog. Every life seems to surge strong within him. Hellfire! I am not done for yet, he gasped.  I'm pulling out!" He worked at the heavy knife-hilt. Awful curses passed his lips. But the blade did not move. Retribution had spoken his doom. Suddenly he saw a dark shadow moving along the sunlit ground. It swept past him. He looked up to see a great bird with wide wings sailing far above. He saw another still higher, and then a third. He looked at the hilltop. The quiet black birds had taken wing. They were floating slowly, majestically upward. He watched their graceful flight. How easily they swooped in wide circles. He remembered that they had fascinated him when a boy long, long ago, when he had a home. Where was that home? He had one once. Ah, the long, cruel years have rolled back. A youth blotted out by evil returned. He saw a little cottage. He saw the old Virginia homestead. He saw his brothers. And his mother. The cruel agony tore his heart. He leaned hard against the knife. With the pain the present returned, but the past remained. All his youth, all his manhood flashed before him. The long, bloody, merciless years faced him. And his crimes crushed upon him with awful might. Suddenly a rushing sound startled him. He saw a great bird swoop down and graze the treetops. One year followed, and another, and then a flock of them. He saw their gray-spotted breasts and hooked beaks. Bussards, he muttered, darkly eyeing the dead savages. The carrion birds were swooping to their feast. My God, he nailed me fast for buzzards! He screamed, and son, awful frenzy, nailed fast. Ah! Ah! Ah! He died by buzzards! Ah! Ah! He shrieked until his voice failed. And then he gasped. Again the buzzards swooped overhead, this time brushing the leaves. One a great grizzled the bird, settled upon a limb of the giant oak, and stretched his long neck, and another alighted beside him. Others sailed round and round the dead treetop. The leader arched his wings, and with a dive swooped into the glade. He alighted near Dearing's dead body. He was a dark, uncanny bird, with long, scraggie bare neck, a wreath of white grizzled feathers, a cruel, hooked beak, and cold eyes. The carrion bird looked around the glade and put a great claw on the dead man's breast. Ah! Ah! Ah! Gertie, his agonized yell of terror and horror echoed mockingly from the wooded bluff. The huge buzzard flapped his wings and flew away. But soon returned to his gruesome feast. His followers, made bold by their leader, floated down into the glade. Their black feathers shone in the sun. They hopped over the moss. They stretched their grizzled necks, and turned their heads sideways. Gertie was sweating blood. It trickled from his ghastly face. All the suffering and horror he had caused in all his long career was as nothing to that which then rendered him. He, the renegade, the white Indian, the death's head of the frontier, panted and prayed for a merciful breath. He was exquisitely alive. He was human. Presently the huge buzzard, the leader, raised his hoary head. He saw the man nail to the tree. The bird bent his head wisely to one side, and then lightly lifted himself into the air. He sailed round the glade, over the fighting buzzards, over the spring, and over the doomed renegade. He flew out of the glade and in again. He swooped close to Gertie, his broad wings scarcely moved as he sailed along. Gertie tried to strike the buzzard as he sailed close by, but his arm fell useless. He tried to scream, but his voice failed. Slowly the buzzard king sailed by and returned. Every time he swooped a little nearer and bent his long, scraggy neck. Suddenly he swooped down light and swift as a hawk, his wide wings fanned the air. He poised under the tree and then fastened sharp talons in the doomed man's breast. End of chapter 28 of The Spirit of the Border by Zane Gray. Recording by Leonard Wilson of Springfield, Ohio. Chapter 29. The fleeting human instinct of Wetzel had given way to the habit of years. His merciless quest for many days had been to kill the frontier fiend. Now that it had been accomplished he turned his vengeance into its accustomed channel and once more became the ruthless Indian slayer. A fierce, tingling joy surged through him as he struck the Delaware's trail. Wingenund had made little or no effort to conceal his tracks. He had gone northwest, straight as a crow flies, toward the Indian entampment. He had a start of sixty minutes and it would require six hours of rapid traveling to gain the Delaware town. Where I can heal make for home, muttered Wetzel, following the trail with all possible speed, the hunter's method of trailing an Indian was singular. Intuition played as great a part as sight. He seemed always to divine his victim's intention. Once on the trail he was as hard to shake off as a bloodhound. Yet he did not by any means always stick to the Indian's footsteps. With Wetzel the direction was of the greatest importance. For half a mile he closely followed the Delaware's plainly marked trail. Then he stopped to take a quick survey of the forest before him. He abruptly left the trail and, breaking into a run, went through the woods as fleetly and noiselessly as a deer, running for a quarter of a mile when he stopped to listen. Wetzel seemed well, for he lured his head and walked slowly along, examining the moss and leaves. Presently he came upon a little open space where the soil was a sandy loam. He bent over then rose quickly. He had come upon the Indian's trail. Cautiously he moved forward, stopping every moment to listen. In all the close pursuits of his mature years he had never been a victim of that most cunning of Indian tricks, an ambush. He relied solely on his ear to learn if foes were close by. The wild creatures of the forest were his informants. As soon as he heard any change in their twittering, humming, or playing, whichever way they manifested their joy or fear of life, he became as hard to see, as difficult to hear, as a creeping snake. The Delaware's trail led to a rocky ridge, and there disappeared. Wetzel made no effort to find the chief's footprints on the flinty ground, but halted a moment and studied the ridge, the lay of the land around, a ravine on one side, and a dark and penetrable forest on the other. He was calculating his chances of finding the Delaware's trail far on the other side. Indian woodcraft, subtle, wonderful as it may be, is limited to each Indian's ability. Savages as well as other men were born unequal. One might leave a faint trail through the forest, while another could be readily traced, and a third, more cunning and skilful than his fellows, have flown under the shady trees for all the trail he left. But Redmond followed the same methods of woodcraft from tradition, as Wetzel had learned after long years of study and experience, and now satisfied that he had divineed the Delaware's intention. He slipped down the bank of the ravine, and once more broke into a run. He leaped lightly sure-footed as a goat, from stone to stone, overfallen logs, and the brawling brook. At every turn of the ravine, at every open place, he stopped to listen. Arriving on the other side of the ridge, he left the ravine, and passed along the edge of the rising ground. He listened to the birds, and searched the grass and leaves. He found not the slightest indication of a trail where he had expected to find one. He retraced his steps patiently, carefully, scrutinizing every inch of the ground. But it was all in vain. Winganund had begun to show his savage cunning. In his warrior days, for long years, no chief could rival him. His boast had always been that when Winganund sought to elude his pursuers, his trail faded among the moss and the ferns. Wetzel, calm, patient, resourceful, deliberated a moment. The Delaware had not crossed this rocky ridge. He had been cunning enough to make his pursuer think such was his intention. The hunter hurried to the eastern end of the ridge, for no other reason than apparently that course was the one the savage had the least reason to take. He advanced hurriedly, because every moment was precious. But a crushed blade of grass, a brushed leaf, an overturned pebble, nor a snapped twig did he find. He saw that he was getting near to the side of the ridge where the Delaware's trail had abruptly ended. Ah, what was there? A twisted bit of fern, with the drops of dew brushed off. Bending beside the fern, Wetzel examined the grass. It was not crushed. A small plant with triangular leaves of dark green lay under the fern. Breaking off one of these leaves he exposed its lower side to the light. The fine silvery hair of fuzz that grew upon the leaf had been crushed. Wetzel knew that an Indian could tread so softly as not to break the springy grass blades. But the underside of one of these leaves, if a man steps on it, always betrays his passage through the woods. To Kean eyes this leaf showed that it had been bruised by a soft moccasin. Wetzel had located the trail, but was still ignorant of its direction. Slowly he traced the chicken ferns and bruised leaves down over the side of the ridge, and at last near a stone he found a moccasin print in the moss. It pointed east. The Delaware was traveling in exactly the opposite direction to that which he should be going. He was more over-exercising wonderful sagacity in hiding his trail. This however did not trouble Wetzel, for if it took him a long time to find the trail, certainly the Delaware had expended as much or more in choosing hard ground, logs, or rocks on which to tread. Wetzel soon realized that his own cunning was matched. He trusted no more to his intuitive knowledge, but stuck close to the trail as a hungry wolf holds to the scent of its quarry. The Delaware trail led over logs, stones, and hard-baked ground, up stony ravines and over cliffs. The wily chief used all of his old skill. He walked backward over moss and sand where his footprints showed plainly. He leaped wide fissures and stony ravines, and then jumped back again. He let himself down over ledges by branches. He crossed creeks and gorges by swinging himself into trees and climbing from one to another. He waited brooks where he found hard bottom and avoided swampy, soft ground. With dogged persistence and tenacity of purpose Wetzel stuck to this gradually fading trail. Every additional rod he was forced to go more slowly and take more time in order to find any sign of his enemy's passage through the forest. When things struck him forcibly, Winganond was gradually circling to the south-west, a course that took him farther and farther from the Delaware entampment. Slowly it dawned upon Wetzel that the chief could hardly have any reason for taking this circling course, save that of pride and savage joy, in misleading, in fooling the foe of the Delaware's, in deliberately showing death-wind that there was one Indian who could laugh at and lose him in the forest. To Wetzel this was bitter as gall, to be led a wild goose chase, his fierce heart boiled with fury, his dark, keen eyes sought the grass and moss with terrible earnestness. Yet in spite of the anger that increased to the white heat of passion, he became aware of some strange sensation creeping upon him. He remembered that the Delaware had offered his life. Slowly like a shadow, Wetzel passed up and down the ridges through the brown and yellow aisles of the forest over the babbling brooks out upon the gold-inflected fields, always close on the trail. At last in an open part of the forest, where a fire had once swept away the brush and smaller timber, Wetzel came upon the spot where the Delaware's trail ended. Near in the soft black ground was a moccasin print. The forest was not dense, there was plenty of light, no logs, stones or trees were near, and yet over all that glade no further evidence of the Indian's trail was visible. It faded there as the great chief had boasted it would. Wetzel searched the burnt ground, he crawled on his hands and knees, again and again he went over the surroundings. The fact that one moccasin print pointed west and the other east, showing that the Delaware had turned in his tracks, was the most baffling thing that had ever crossed the hunter in all his wild wanderings. For the first time in many years he had failed. He took his defeat hard because he had been successful for so long he thought himself almost infallible, and because the failure lost him the opportunity to kill his great foe. In his passion he cursed himself for being so weak as to let the prayer of a woman turn him from his life's purpose. With bowed head and slow dragging steps he made his way westward. The land was strange to him, but he knew he was going toward familiar ground. For a time he walked quietly, all the time the fierce fever in his veins slowly abating. Calm he always was, except when that unnatural lust for Indian's blood overcame him. On the summit of a high ridge he looked around to ascertain his bearings. He was surprised to find he had traveled in a circle. A mile or so below him arose the great oak tree, which he recognized as the landmark of beautiful spring. He found himself standing on the hill under the very dead tree to which he had directed Gertie's attention a few hours previous. With the idea that he would return to the spring to scalp the dead Indians, he went directly toward the big oak tree. Once out of the forest a wide plain lay between him and the wooden knoll which marked the glade of beautiful spring. He crossed this stretch of verdant, better land and entered the cops. Suddenly he halted, his keen sense of the unusual harmony of the forest with its innumerable quiet sounds had received a severe shock. He sank into the tall weeds and listened. Then he crawled a little farther. Doubt became certainty. A single note of an oriole warned him, and it needed not the quick notes of a catbird to tell him that near at hand, somewhere, was human life. Once more a wetso became a tiger, the hot blood bleeped from his heart firing all his veins and nerves, but calmly noiseless, certain, cold, deadly as a snake. He began the familiar crawling method of stalking his game. On, on, under the briars and thickets, across the hollows full of yellow leaves, up over stony patches of ground, to the fern-covered cliff, overhanging the glade, he glided. Lithe, sinuous, a tiger in movement and in heart. He parted the long graceful ferns, and dazed with glittering eyes down into the beautiful glade. He saw not the shining spring nor the purple moss, nor the ghastly white bones, all that the buzzards had left of the dead, nor anything save a solitary Indian standing erect in the glade. There, within range of his rifle, was his great Indian foe, Winganund. Wetzel sank back into the ferns to steal the furious exultations which almost consumed him during the moment when he marked his victim. He lay there breathing hard, gripping tightly his rifle, slowly mastering the passion that alone of all things might render his aim futile. For him it was the third great moment of his life, the last of three moments in which the Indian's life had belonged to him. Once before he had seen that dark, powerful face over the sights of his rifle, and he could not shoot because his one shot must be for another. Again had that lofty, haughty figure stood before him, calm, disdainful, arrogant, and he yielded to a woman's prayer. The Delaware's life was his to take, and he swore he would have it. He trembled in the ecstasy of his triumphant passion, his great muscles rippled and quivered for the moment entirely beyond his control. Then his passion calmed. Such power for vengeance had he that he could almost steal the very beats of his heart to make sure and deadly his fatal aim. Slowly he raised himself. His eyes of cold fire glittered. Slowly he raised the black rifle. Wingan understood erect in his old grand pose with folded arms. But his eyes, instead of being fixed on the distant hills, were lowered to the ground. An Indian girl, cold as marble, lay at his feet. Her garments were wet and clung to her slender form. Her sad face was frozen into an eternal rigidity. By her side was a newly dug grave. The bead on the front side of the rifle had hardly covered the chief's dark face when Wetzel's eye took in these other details. He had been so absorbed in his purpose that he did not dream of the Delaware's reason for returning to the beautiful spring. Slowly Wetzel's forefinger stiffened. Slowly he lowered the black rifle. Winganand had returned to bury whispering winds. Wetzel's teeth clenched and awful struggle tore his heart. Slowly the rifle rose, wavered, and fell. Something terrible was wrong with him. Something awful was awakening in his soul. Winganand had not made a fool of him. The Delaware had led him a long chase, had given him the slip in the forest, not to most of it, but to hurry back to give his daughter Christian burial. Winganand was a Christian. Had he not been, once having cast his sword, he would have never looked upon her face again. Winganand was true to his race, but he was a Christian. Suddenly Wetzel's terrible temptation, his heart-wracking struggle ceased. He lowered the long black rifle. He took one last look at the chief's dark, powerful face. Then the Avenger fled like a shadow through the forest. CHAPTER 30 It was late afternoon at Fort Henry. The ruddy sun had already sunk behind the wooded hill, and the long shadows of the trees lengthened on the green square in front of the fort. Colonel Zane stood in his doorway, watching the river with eager eyes. A few minutes before, a man had appeared on the bank of the island and hailed. The Colonel had sent his brother Jonathan to learn what was wanted. The latter had already reached the other shore in his flatboat, and presently the little boat put out again, with the strangers seated at the stern. I thought perhaps it might be Wetzel abused the Colonel, though I never knew of Luz wanting a boat. Jonathan brought the man across the river and up the winding path to where Colonel Zane was waiting. Hello, it's young Christie, exclaimed the Colonel, jumping off the steps and cordially extending his hand. Glad to see you. Where's Williamson? How did you happen over here? Captain Williamson and his men will make the river eight or ten miles above, answered Christie. I came across to inquire about the young people who left the village of peace. Was glad to learn from Jonathan they got out all right. Yes, indeed, we're all glad. Come and sit down. Of course, you'll stay overnight. You look tired and worn. Well, no wonder when you saw that Moravian massacre. You must tell me about it. I saw Sam Brady yesterday, and he spoke of seeing you over there. Sam told me a good deal. Ah, here's Jim now. A young missionary came out of the open door, and the two young men greeted each other warmly. I wish, yes, Christie, when the first greetings had been exchanged. Well, it's just beginning to get over the shocks. You'll be glad to see you. Jonathan tells me you got married just before a girly came up with you at beautiful spring. Yes, it is true. In fact, the whole wonderful story is true. Yet I cannot believe as yet. You look thin and haggard. When we last met, you were well. So that awful time pulled me down. I was an unwilling spectator of all that horrible massacre, and shall never get over it. I can still see the fiendish savages running about with the reeking scalps of their own people. I actually counted the bodies of forty-nine grown Christians and twenty-seven children. An hour after you left us, the church was in ashes, and the next day I saw them burned bodies. Oh, the sickening horror of the scene. It haunts me. That monster Jim Gertie killed fourteen Indians with his sledgehammer. Did you hear of his death, that's Colonel Zane? Yeah, a fitting end it was to the frontiers, skull, and crossbones. It was like Wetzel to think of such a vengeance. Has Wetzel come in since? Oh, no. Jonathan says he went after Wingenand, and there's no telling when he'll return. I hoped he would spare the Delaware. Wetzel, spare an Indian. But the chief was a friend. He surely saved the girl. I am sorry, too, because Wingenand was a fine Indian. But Wetzel is implacable. Here's Nell and Mrs. Clark, too, come out, both of you, cry, Jim. Nell appeared in the doorway with Colonel Zane's sister. The two girls came down the steps and greeted the young man. The bride's sweet face was white and thin.   Tell me if Benny asks Nell, speaking softly. Oh, yes, I forgot why Benny is safe and well. He was the only Christian Indian to escape the Christian massacre. Heckweller hid him until it was all over. He's going to have the lad educated. Thank heaven, murmured Nell. And the missionaries inquired gem earnestly. We're all well when I left, except, of course, young. He was dying. The others will remain out there and try to get another hold. But I fear it's impossible. It is impossible, not because the Indian does not want Christianity, but because such white men as the Gerties rule. The beautiful village of peace owes its ruins to the renegades, said Colonel Zane impressively. Even Williamson could have prevented the massacre, remarked Jim. Possibly. It was a bad place for him, and I think he was wrong not to try, declared the Colonel. Hello! cried Jonathan Zane, getting up from the steps where he sat, listening to the conversation. A familiar softbox and footfall sounded on the path. All turned to see Wetzel coming slowly toward them. His buckskin-hunting costume was ragged and worn. He looked tired and weary, but the dark eyes were calm. It was the Wetzel whom they all loved. They greeted him warmly. Nell gave him her hands and smiled up at him.  Safe and sound, lass, and glad to find you well, answered the hunter, as he leaned on his long rifle, looking from Nell to Colonel Zane's sister. Betty, I always gave you first place among broader lasses, but here's one as could run you most any kind of a race," he said, with a rare smile which so warmly lighted his dark, stern face. Lou Wetzel making compliments, well, of all things, exclaimed the Colonel's sister. Jonathan Zane stood closely scanning Wetzel's features. Colonel Zane, observing his brother's close scrutiny of the hunter, pressed the cause and said, Lou, tell us, did you see Wingedon over the sights of your rifle? Yes, answered the hunter simply. A chill seemed to strike the hearts of the listeners. That simple answer coming from Wetzel meant so much. Nell bowed her head sadly. Gem turned away, biting his lip. Christy looked across the valley. Colonel Zane bent over and picked up some pebbles, which he threw hard at the cabin wall. Jonathan Zane abruptly left the group and went into the house. But the Colonel's sister fixed her large black eyes on Wetzel's face. Well, she asked, and her voice rang. Wetzel was silent for a moment. He met her eyes with that old, inscrutable smile in his own. A slight shade flooded across his face. Mary? I missed him, he said calmly, and shouldering his long rifle he strode away. Nell and Gem walked along the bluff above the river. Twilight was deepening, the red glow in the west was slowly darkening behind the boldly defined hills. So it all settles, Gem, that we stay here, said Nell. Yes, dear, Colonel Zane has offered me work and a church besides. We are very fortunate and should be contented. I am happy because you're my wife. And yet I am sad when I think of him, poor Joe. Don't you ever think we wronged him, whispered Nell? No, he wished it. I think he knew how he would end. No, we did not wrong him. We loved him. Yes, I loved him. I loved you both, said Nell, softly. Then let us always think of him as he would have wished. Think of him. Think of Joe. I shall never forget. In winter, spring, and summer I shall remember him, but always most in autumn, for I shall see that beautiful glade with its gorgeous color and the dark shaded spring where he lies asleep. The years rolled by with their changing seasons. Every autumn the golden flowers bloomed richly and the colored leaves fell softly upon the amber moss in the glade of beautiful spring. The Indians camped there no more. They shunned the glade and called it the Haunted Spring. They said the spirit of a white dog ran there at night and the wind of death mourned over the lonely spot. At long intervals an Indian chief of lofty frame and dark, powerful face stalked into the glade to stand for many moments silent and motionless. And sometimes at twilight, when the red glow of the sun had faded to gray, a stalwart hunter slipped like a shadow out of the thicket and leaned upon a long black rifle while he gazed sadly into the dark spring and listened to the sad murmur of the waterfall. The twilight deepened while he stood motionless. The leaves fell into the water with a soft splash. A whipper will caroled his melancholy song. From the gloom of the forest came a low sigh which swelled thrillingly upon the quiet air and then died away like the wailing of the night wind. Quiet reigned once more over the dark murky grave of the boy who gave his love and his life to the wilderness. End of Chapter 30 Also End of the Book The Spirit of the Border by Sane Gray Recording by Leonard Wilson of Springfield, Ohio