forgive your brother when he trespasses and repents. When I tell people that nowhere in the Bible does it say repent of your sins to be saved, they might take me to Luke 17 to try and refute me by pointing out where Jesus commanded his disciples to forgive a brother that trespasses against them if he repents. And quite reasonably so, most Christians would agree that this teaching applies to us as well, not just the disciples. So let's take a look at the passage. In Luke 17 verses 3 to 4 it says, Take heed to yourselves, if your brother trespass against you, rebuke him, and if he repent, forgive him, and if he trespass against you seven times in a day, and seven times in a day turn again to you saying, I repent, you shall forgive him. So the context of repentance is very obvious here. Although this passage is about repenting of sin, we could argue that strictly speaking, it's not really about salvation. Having said that, some people will elevate this to be about salvation based on another passage. It says in Matthew 6, 14 to 15, for if you forgive men their trespassers, your heavenly Father will also forgive you. But if you forgive not men their trespassers, neither will your Father forgive your trespassers. So that forgiveness there in Matthew 6 is interpreted to mean heavenly forgiveness that is required to be saved. They will make it interchangeable with forgiveness and remission of sins that accompanies repentance in the book of Acts a couple of times, for example. But even if we made that connection, let's just say for the sake of argument, we join those two together. It's still not teaching repent of your sins for salvation in any case. Supposing that Luke 17 was a salvific requirement, it doesn't teach repent of your sins to be saved because it is not about you repenting. It is about forgiving a brother who has repented. Now when it comes to various Bible passages about forgiveness, most people make the mistake of thinking that that only ever refers to forgiveness of all of your sins for the sake of salvation and everlasting life. But forgiveness can apply in other ways as well that aren't necessarily anything to do with salvation. Now the King James Bible differs from other translations such as the ESV and so on, in that some verses actually use the word remission of sins rather than forgiveness of sins. And it does that whenever those passages refer to an all-encompassing one-time forgiveness of sins such as repent and be baptized as Peter said in Acts, even though it's the same Greek word that underpins those two words, whether it's forgiveness or remission. Now we could debate until judgment day whether it's accurate for the King James Bible to translate the same Greek word into two different English words like that. But contextually it is quite helpful that when it's an obvious salvific kind of forgiveness it translates it as remission. And in other more obscure verses it just translates it as forgiveness. Because forgiveness isn't always a one-time forgiveness of all sins for salvation. It can apply to just one-off instances of certain sins and earthly specific circumstances as well. So for example when Jesus was crucified and he prayed, Father forgive them, they know not what they do. I don't think that anybody would take that verse and argue that everybody who crucified Jesus suddenly got saved because Jesus prayed that prayer over him. Obviously it was a forgiveness only applying to a very, very specific sin which was crucifying the Christ out of ignorance, but that doesn't address any other sins that they've ever committed. And there were also examples in the Old Testament such as what's outlined in 2 Chronicles 7 in that Solomon's prayer where God would forgive sin and heal the land that was cursed by sin.  So forgiveness was specifically in that in that particular application. So we can't use Matthew 6 to indisputably assert that forgiving a brother in Luke 17 is a specific requirement for one's own salvation. Returning to the issue of repenting of sins, yes this passage in Luke 17 is about repenting of sins. However this passage does not support the repent of your sins so-called gospel message. Actually it completely utterly refutes it. Now as kind of a small disclaimer I should point out that this does depend on how exactly you define repent of your sins because different people define it in different ways. And that is another video for another day. But there are some people who just say well it just means to be sorry for your sins or well it's not enough to confess your sins you actually have to turn from your sins so you have to have a changed lifestyle. Well Luke 17 completely refutes this idea especially if we cross reference it with Matthew 6. So in the Matthew 6 passage we might assume that God is placing an expectation on us to forgive men and he will likewise forgive us. The logical understanding and conclusion here is that God is holding us to the same standard of forgiveness that he holds himself. God is not somehow holding us to a different standard to himself here. God is holding us to the same standard of forgiveness that he applies to himself. It stands to reason then based on Matthew 6 that the standard by which we must forgive others is the same standard by which God will forgive us. It would be utterly absurd to expect God to hold flawed sinful human beings to a higher standard of forgiveness than his perfect self. Why does that matter you ask? Well it's because of how repentance of the trespassing brother is defined in Luke 17 and the measuring line by which you are commanded to forgive your brother according to the specific standard of repenting of sins that he is accountable for. In Luke 17 verse 3 we are only commanded to forgive a brother if he repents and this is assuming that you have rebuked him. But we are not told in this verse how his repentance must be made evident, i.e. does he just need to apologize or does he actually need to make restitution? We don't have such context here. Even after forgiveness is applied according to verse 3 verse 4 then explains forgiveness for a brother that keeps sinning against you and it clarifies how your brother must evidence his repentance. He only has to say he repents even seven times in a day. Now this is where it gets interesting because a lot of these repent of your sins so-called gospel messengers usually say things like well it's not enough to feel sorry for your sins you can't just confess your sins that's not repentance there needs to be a change there needs to be evidence that you have correctly repented. But all it says here is that the brother just needs to turn towards me or in our modern vernacular he just approaches me and say I repent that's all he has to do just say I repent even if it happens seven times in the same single day and so long as he says I repent I am commanded to forgive him all the same. So this is amazing because there's so many things that we learn from just these two short verses to completely and utterly demolish the repent of your sins false gospel just these two little verses are so powerful and profound. The first lesson that we learn here is that repentance by which I mean of sins only requires verbal confirmation my brother does not have to get on his knees in sackcloth and ashes weeping and appealing to me my brother does not have to make restitution by agreeing a list of demands to make up for his sins against me my brother does not have to make a vow that he will resolve to never do it again he can't even sin against me multiple times in a single day and I have to forgive him this teaches us that he does not even need to prove that his repentance is genuine with a changed lifestyle by not sinning against me any further all he has to do is say that he repents this is literally the only evidence I have that he repents he just turns to me and tells me I repent in our modern vernacular this might be like a simple verbal apology the second lesson that we learn is that your brother may sin against you multiple times in a single day now most Christians would agree that brother means brother in the faith not particularly a blood relative repentance preachers tell you that you have to turn from sins to be safe so logically you have to turn from sin to be adopted into the family of God and countered among the brethren but if both my brother and I turned from our sins to be saved hence why we are now brothers in the first place then he should not be sinning against me seven times in one day he should have repented of his sins and showed his repentance with a changed life if he keeps sinning against me and his repentance is not genuine how is he then my brother notice that Jesus said day not week or year a brother in Christ who is justified sanctified saved and sealed in the name of the Lord Jesus might sin against you seven times in a single day let that sink in the third lesson that we learn is that I am commanded to forgive my brother just because he said I repent my brother does not have to prove that his repentance is genuine and bring forth works meet for repentance he doesn't have to demonstrate a change lifestyle or attitude towards me he doesn't evidently have to make any restitution necessarily all he has to do is say he repents that's it that is the standard on requirement to obtain my forgiveness so these three lessons teaches just how absurd and how ridiculous the repent of your sins gospel message really is think about this if it is not enough to say sorry for our sins why does my brother only have to say that he repents why doesn't he have to prove his repentance is genuine before I forgive him if we had to repent of sins to become brothers in Christ why is he sinning against me seven times in one day and here is the big question why does God expect me to forgive my brother seven times in a single day just because he says he repents but I must genuinely repent of my sins for God to forgive me if it is not enough to confess sins or apologize for sinning for God's forgiveness why would God have higher expectations of a fallen sinful man than for his own holy self well the answer is simple it's because the whole repent of your sins gospel is a fraud it's the whole thing is complete nonsense and it's so nonsensical that even two small verses that are actually about repenting of sin completely demolish this doctrine it's completely and utterly false this is no nonsense Christianity reminding you that nowhere in the bible does it say repent of your sins to be saved


Now we present Herbert Marshall as The Man Called X. The Saturday Night feature on NBC's five-show festival of comedy, music, mystery, and drama brought to you by The Makers of Anderson for fast relief from pin of headache, neuritis, neuralgia. And by RCA Victor, world leader in radio, first in recorded music, first in television. Herbert Marshall as The Man Called X. Wherever there is mystery, intrigue, romance in all the strange and dangerous places of the world, there you will find The Man Called X. When we ask you to try Anderson for the relief of pain due to a headache, neuritis, or neuralgia, we are not asking you to try a new or unproved method. For there are many people listening in now who have been introduced to Anderson tablets by their own dentist or physician. You who have received Anderson this way know the effective, incredibly fast relief these tablets bring. Anderson is like a doctor's prescription. That is, Anderson contains not just one, but a combination of medically proven, active ingredients in easy-to-take tablet form. People by the thousands are using modern Anderson today instead of other ways. Doesn't their experience seem worth following? Try Anderson the next time you suffer pains from headache, neuritis, or neuralgia. You will be delighted with the results. Ask your druggist for Anderson today. Anderson is spelled A-N-A-C-I-N. Inside a tiny engineer's shack at a uranium mine near the village of Kutu in the Belgian Congo, two white men sit in pitch darkness watching, watching the natives outside dressed in the skins and claws of leopards and panthers as they writhe and turn in the firelight to the age-old rhythm of the Congo drums, the rhythm of death. I'll tell you, Dubeck, I don't like it. Those devils are working themselves up to no good out there. We, I know what you mean, Monami. And after what happened, it was so cold. Yeah, and a Jolu and a Kela. But what can we do about it after all? Wait, look. Yes, I see. They wave now the spears like a dunce of war. What do you mean spears? Those are guns. Guns? Is it impossible? Do you see the glint of them in the firelight? But how could they have guns? I don't know, and I'm not going to stick around to find out. Guns like a dojo. Come on, we've got to get out of here while we're still in one piece. But where? Behind us is the jungle. And in front? Listen to them. Now, chance it through the jungle. Here, help me with this window. We can make it to the river in the old Power Bowl. We can... Dubeck! Right, Monami. You are hurt. Go ahead. Keep going. Run for it. No, I cannot leave. Thurston. Kim Thurston. What? What? New York. Thurston. The Macleod. Thurston. Thurston. I know about him as well as he says in his letter, chief. He was associated with Fred Stevenson in the Mining operation in the Congo. Oh, Stevenson, yeah. And apparently Fred told him to contact me just before he died. You remember Fred? He helped us out in that Brazilian copper setup. Oh, of course. Top notch mining engineer, wasn't he? That's right. Oh, that's too bad. But what is he doing in Africa? He's working as mine supervisor for an outfit called Congo Uranium Limited, a Belgian-American British combine licensed under a Belgian government permit. He had been shipping out a lot of high grade ore, most of it directed to Oak Ridge. Oh, well... According to... to... to Quebec, four of the company's five major installations have been forced to shut down because of local opposition strikes and native raids. Oh, yeah. I guess that's what's apt to happen when civilization starts to cramp the style of the petty native chiefs and witch doctors. I wish I could be sure that's all that's causing this trouble. I don't get you, Kim. Suppose some foreign power were interested in cutting down our supply of atomic weapons. Why wouldn't they stop it at the source by sewing up our supply of uranium ore? Yeah. An over-agent who really knows those natives could make a real play on their superstitions. They're taboos and they're magic. Kim, I'll have Miss Brooke's contact Sabina Airlines right away and get you on the first plane for Leopoldville. Um, already done. Hmm? Well, then I'll cable this Dubec fellow that you're on your way. Oh, I did that the minute I read his letter. Salon Chief, send you a postcard. Those little luxuries, Monsieur Thurston, but it is the best we have in Leopoldville. Now, if you will come with me to the bar, perhaps say, vermouth cassis? Well, that will dry Martini with an onion. C'est bon. But our bartender Galou is a full-blooded Congo tribesman. Galou. I do not think he will understand the Martini. However, let us sit down and try. Yes, let's. Monsieur Dubec. Ah, Galou. Vermouth cassis. Hey, Martini, you're back on your own promise here, Thurston. What? Galou, you have a good memory, aren't you? But... You have good memory of a good amoeba, sir. Ah, Martini, I bet. You have been here before, Monsieur Thurston? Oh, a couple of times. Then perhaps you know what our trouble is all about. No, I'd like to find out. Why not start a scratch, Dubec? Then we start with the natives. The natives on whom we must depend to work the mines. But it may be you know them as well as I, Monsieur. Go on, Dubec. We have all thought of them as just a sulky child. Monsieur Jerry Pickens has often said... Jerry Pickens? Yes. The what you call cockney trader at Lucala. He says they are nothing but children. Treat them that way and they are all right. And that is what I used to think myself. Until six weeks ago, when the trouble started. You all had to say something about playing on their superstitions. Yes. We employed some 3,000 native workers. And one day, none of them reported for work. We know how much you offered them in trinkets and money. They wouldn't come back. It was as though some spell had been cast. Four of the mines were destroyed. The buildings burned to the ground.  I can believe that. What about the witch doctor? Is it always the same one? I think so. For he always wears the same skin that of the giant black leopard. Well, is he from one of the loyal tribes? Who knows? He might be from here, or the Ivory Coast or Mozambique. He might even be a white man. Or a woman. Who knows? You're back. You haven't told me how you managed to escape the night Fred Stevenson was shot. Maud Cassis. Martini. Oh, fine. Here. I'll do. Merci, merci. Martini in the middle of the jungle, your friend, must be a very important man to deserve such a luxury, Gaspar. I should enjoy meeting him. It's Tanya Stevenson. Mr. Thurston. I did do. Tanya was afraid as well. Oh, I can't tell you how sorry I... Thank you. Oh, please sit down. Why don't you join us? Well, just for a moment. There. Thurston, I'm sure I heard Fred speak of you. Oh, but of course, you're Ken Thurston from New York. Isn't it? More or less. Whatever are you doing in Africa? Oh, I spent a lot of time just traveling around. Mr. Dubeck has been kind enough to invite me to visit the mine at Lucala. Oh, what a coincidence. If you are leaving tomorrow night, we shall be on the same riverboat. Tanya, surely you are not going to Lucala? Well, but of course, Gaspar. The company has been kind enough to offer me work as a bookkeeper to carry on the work that Fred was doing. The work that cost him his life. And now, if you will excuse me, I must begin packing. Until later, Mr. Thurston. Goodbye, Gaspar. Ah, a man can never understand a woman.  Any woman do back all that one in particular? That one especially. While her husband was alive, she refused to go near the mines. She hated Africa and begged him to give up his job. She even threatened to divorce him if he would not. And now? Yeah. Let's see what you mean.  Tanya? Russian, isn't it? Why, yes, quite Russian. Of course it is. Oh, this trip of the river is really quite fascinating, isn't it? The jungle in the moonlight, the birds, the sound of the animals. No, fascinating. You really think so? Of course. Oh, I see. Gaspar has been telling you about me. Well... It is true. I despise the Congo. Everything about it. It is a land of heat, disease, and darkness, and death. And yet you're staying here. Why? What choice is there? Fred left me no money. I have no friends, no family, nowhere to go, not even a passport. Who is the wife of an American citizen? I have made application, but everything takes time, Ken. So I have taken a job with the mining company. There was nothing else. Right now it might be a good idea.  I shall hate it. The mines killed my husband. I warned him, begged him to leave, but he would not listen.  Remember that, Ken, don't stay up, Lucana. Go back to America as quickly as you can. The devil's there. Hmm? Sounds like a... Yes, that's the Geiger counter. Oh, yes, one of the passengers.  Oh, no. Excuse me, Tonya. You won't forget what I told you. No, I won't forget. All right, Pegon. Oh, hello, Mr. Rex. What are you doing on this boat? Well, I've been riding up and down this river for the past ten days waiting for you. I know every nick and cranny. I was visiting my cousin in Brazzaville when I heard about the trouble in the uranium mines. So I said to myself, I said, Mr. X will be turning up and needing my expert assistance. No thanks. But it won't cost you a thing. Well, maybe just a fair back to United States. No dice, Pegon. All right, all right. If that's the way you feel, I'll go along for free. It isn't that as though I have broke or something. Well, when 10,000 smackers ride in my lap... 10,000 what? Sure, didn't you know? That's what you get for finding a uranium mine. What do you think I rented this gadget for? Any uranium found here belongs to the Belgian government. But they can't do that to me, Mr. Restless. It's an American. Good morning, Mr. Furster. Oh, hello, Quebec. We ought to be getting to Luccalda pretty soon, aren't we? Yes. The village is just around the next bend. But from there to the mine is nearly a six-hour trip. I see. Quebec. Yes? Is that the village up ahead? Why, yes, it... Mr. Thurston, that smoke, there must be a fire. There was a fire. What? Luccalda's been burned to the ground. This must have been the trading post right about here. Sure. There's what's left of the sign, Jerry Pickens' proprietor. Now, you see what I was talking about in the boot camp?  Well, here comes Quebec. Maybe he's found out what happened. Who's that character with him? And what's he wearing all that pain on his face for? Those markings show his tribal rank. It is as I expected. The witch doctor. He roused the tribe to another frenzy. They attacked the village and burned it. The natives who lived here have fled to the hills. What about the trader, Pickens?  I had almost forgotten. Embo, where was Mr. Pickens last night? Em go up river last morning, not be here. He owns another trading post at the next village. He must have been staying there. I picked a good night to be somewhere else. Embo, did you see the raid? Hear drum, see fire. Come down from mine. What for you? And the witch doctor. Do you see him too? Not see face. See black leopard skin. Ah, yeah. Well, let's go look at the mine. If we are to arrive before dark, we must leave at once. Embo, bring Mrs. Stevenson's luggage. And do you want to embo follow? Quebec, how long has embo worked for you? Perhaps six months. Why? Oh, it's strange that he stays loyal by all the other natives of running off, especially when he's of such high rank. High rank? What do you mean? Oh, that red line across his forehead and the way his hair's cut. Yes. They indicate that our friend embo is a tribal chieftain with the powers of a king among his people. What? Are you sure? Yeah. I'd say we have a very important man carrying luggage for us. Do we have to keep going so fast, Mr. Thurston? We've been walking all day and I'm getting tired. You invited yourself on this safari pig, huh? I don't like that embo character behind us, neither. He looks like he would double-cross his own grandmother for a half a buck. Hello. It's Jerry Pickens. Oh. I've been trying to catch up with you chaps all day. Oh, hello, Mrs. Stevenson, huh? She was coming up to work at the mine. Sorry. I don't believe I've had the pleasure of meeting you, sir. This is Ken Thurston. Jerry Pickens. My pleasure, sir. Surely we've met before, maybe at Leopardville. I don't think so, Mr. Thurston. At least it ain't likely. Ain't been there for the last six months. Spends all my time trying to keep my trading posts running. Not that it's done me much good. I am most sorry about the fire at Lucala, Mr. Pickens. We saw what is happening.  There's not five shillings of salvage left. I just takes one look and decides to eye-tail it after you. How'd you find out where we were? Some of the natives come sneaking back. They've been watching you from the hills and tipped me off. I practically had to run all the way to catch up. We, uh, we had better move on. It will soon be dark. Embo! Deal. Embo lead way now. That won't be necessary. Embo, we... Then see in dark. Embo will lead way. All right, whatever you like. But we must hurry. Hey, Mr. Thurston. What's that noise? Talking drums, big'um. The natives are sending some sort of message. Embo. Yes? What do the drums say? Not know. Of course you do. What do they say? I know what to tell. Embo, answer Mr. Thurston's question. Drum say, evil one in jungle. Very evil. Destroy mine tonight. Destroy power of evil one. Evil one? What does that mean, Embo? Drum say, man called X. We will continue with the man called X in just a moment. Here's a word from RCA Victor. What do most people wish for during the new year? Health and a happy home. Making your home happier is the specialty of your RCA Victor million proof television dealer. He knows, as well as over a million families know, that RCA Victor million proof television brings excitement, adventure and beauty right into your living room. And the moment you see the new RCA Victor million proof television, you will easily see why it's America's favorite television. Your RCA Victor dealer will show you RCA Victor million proof television in a wide variety of models. Every one a thrilling buy. But the most exceptional buy of all is an RCA Victor television radio phonograph combination, which gives you five great instruments in one luxurious cabinet, for much, much less than comparable instruments would cost separately. See your RCA Victor dealer soon, and make your home happier in 51 with RCA Victor million proof television. Now act two of the man called X, starring Herbert Marshall with Leon Balasco as Pagans Elschmit. Ken Thurston has reached the uranium mine near the village of Lucala, deep in the Belgian Congo. In the distance, native drums reiterate their baleful message, and Ken knows that a leopard skinned witch doctor who has roused the natives against the mines and focused their heat by witchcraft is waiting to kill him. This is the main administration building. It is a better construction than the others, but it is still only wood and straw. Oh, you hear? The drums have stopped. They will now prepare to attack us. How long would you say we have to be? Oh, an hour, perhaps two hours, until the moon goes down.  She's got a point there. How about weapons, Dubec? At least we could give these blighters a taste of their own medicine. Yes, yes. The guns are hidden in the mineshaft beyond the compound. I took that precaution when I left for Leopoldville to meet Mr. Thurston. Good idea. Embo, bring us the rifles. Never mind, Embo. I'll get them. I saw the shaft as we came in. They're on the first level, but you do not mean... Come on, Pagans. Well, I... Come on! So this is a uranium mine, eh? Well, maybe we'll have to stop and take a few samples. Hey, maybe there is a billion dollars' worth in here. Well, shut up and flash that light over here. Well, what do you know? A pile of rifles just like Mr. Dubec said. Yeah. Only one trouble, these guns are empty. How do you like that? What are we going to do now? I'll take these rifles to the others. You wait here for about five minutes and then join us in the administration building. Wait here? But, Mr. X, I don't like this. You're one of the richest spots in the world, Pagans. So relax and enjoy it. Ah, you found the rifles, c'est bon! Here you are, Dubec. Here are chickens. What, oh? Ah, wait a minute here, Thurston. Hmm? If this gun weren't too much good, there ain't no bullets in it. Huh? No, no, in this one. We had a little trouble finding the cartridges, but Pagans will be along with them in a minute or two. No, it's not true. Shells are not... Go on, Embo. Shells aren't what. Oh, you mustn't pay no attention to him, Thurston. These natives don't know what they're talking about. Embo knows what he's talking about. He got rid of the ammunition on somebody's orders. I do not understand. Whose orders? The witch doctor who wears a leopard skin. Thurston, I think you've got something there. If we only could get our hands on him. If we knew who he was, we might... We do know who he is, Pittons. What do you mean, Monsieur? Remember when we left the car and started with the mine? Embo followed us, but as soon as Pickings joined the group, Embo insisted on marching in the lead. Yes, I thought it's strange at the time. It wasn't strange. The natives of the Congo tribe believe that it's wrong to walk in the footsteps of a witch doctor. They believe the witch doctor stamps down evil as he walks along, and anyone who touches his tracks will pick up that evil. That's why Embo wouldn't walk in, back of Pickings. Pickings? I'd heard about you, Mr. Ragser. You was plenty smart, but I didn't expect you to figure out things this fast. Not that it makes much difference, you see. This here pistol has got bullets in it. Huh, I'm sure it has. Embo, tell your tribe we've made prisoners of the evil spirits that's cursed your land, and we're going to bring them to quick justice. Why are they keeping us in this hut, Mr. Rags? Well, I imagine they're preparing the fires big, huh? Fires? Yeah, these natives think that the only way an evil spirit can be destroyed is by flames. You mean if I ask what's cooking, the answer will be me? Everything ready. You really intend to burn us, Embo? Maybe he hasn't got much choice, Thurston. Evil must be destroyed. Natives won't have it any other way. That's the nature of the religion, I know that. But what about the preliminaries? Preliminaries? Sure, the accused is entitled to trial, trial by poison. Huh? You've had all the trial you get, Mr. Rags, as witch doctor, I'm the only judge here, and I says you're guilty. What about it, Embo? If we really are evil ones, the trial will prove it. And if not... Empeak, true. Old wise men always test by poison. I'm your wise man now, Embo. Can I say that... Embo's still chief. Embo say evil wants to have trial. Huh? You fix poison. Come. Now! All right, all right, but it'll only prove what I've been telling you all along. I don't get it, Mr. Rags. What's all this talk about poison? The natives who practice black magic... Black magic! ...believe in what they call trial by poison. Yes, I have heard of it. The accused person and several other members of the tribe drink a mixture concocted by the witch doctor. Then the guilty one falls to the ground in agony, while the others apparently feel no pain.  They don't make sense. Psychology, Pagon, like all witchcrafts. Say, you're right, Thurston. Sure, the so-called poison is just strong enough to cause a little nausea. But the guilty one exaggerates the sickness in his mind, and thinks he's rarely been poisoned. Well, I'm glad to hear that, Mr. Rags. You know, I was afraid I might lose. You're not a chance of that, Pagon. You see, you'll have to drink the poison, too. Yeah. The Jerry Pickens character sure looks like a fugitive from a nightmare, Mr. Rags. He even forgot to take the head of that leopard skin coat he's wearing. Yeah. But, hey, why he's keeping dancing around that pot and scraping pieces of bark into that boiling water? It's not sanitary, and we got to drink it. That's the bark of the blood tree. These neighbors think it makes the poison I told you about. Mr. Rags, if you don't mind, I don't feel very thirsty. Mr. Thurston, blood water is ready. We are ready, Embo, and unafraid. For our hearts are free of evil doing, aren't they, Pagon? Yeah. Oh, yes, sure.  I cheap drink with you and three elders from village. Wait, Embo. As the person on trial, it's my privilege to pick who must share the test with me. It's true. It's tribal law. Then I choose your witch doctor, Mr. Jerry Pickens. Aye. What? You're crazy. I makes the stuff. You drink it. This time, you're going to drink it, too. Oh, no, I'm not. You heard, Embo. It's a tribal law. Or are you afraid that my magic will turn out to be good, that you'll double up in pain from the evil inside you?  Make him drink up, Embo. Let's get this over with. How about it, Embo? Your chief and the law is the law. Embo, I ask elders of tribe. Aye. Elders say witch doctor drink or no make true medicine. All right, all right, but he takes his first. No. If you're not evil, blood water no hurt. You drink first. No. No, I won't do it. You go on, Jerry.  You know it's under the bark of a tree, isn't it? I'll tell you. I won't touch the stuff. Great. No. No, no, no. I won't do it. You can't force me, Jerry. Get away from me. Drink. No. Yes, Embo. Your people can take off their leopard skins now and go back to the mines. But taboo is over. The evil spirit that cursed the jungle is gone. A good one, Amacubra. A good one. Mr. Rex, that blood water sure finished off that Pickens character. You see, Monsieur, why I tell you we must almost believe in this witchcraft? It wasn't witchcraft that killed Jerry Pickens, Quebec. The stuff in that cup smelled to me like potassium cyanide. What? Pickens realized that bark mixture wouldn't affect me because I knew what it was all about. And the test would prove me innocent. But Mr. Rex... Couldn't risk that. So he put some real poison in it. Ha! I knew all the time there wasn't any such a thing as black magic. Oh, but there is big, huh? Hmm? And not just in the jungles. It swept whole countries of the world.  The most evil witchcraft of all. And only truth and faith and courage can destroy this false belief. Well, here is our star, Mr. Herbert Marshall. Thanks for being with us. Next week our story is called Operation 50 and it concerns the most important $50 bills in the world. Though, come to think of it, any kind of money would be important only on belasco. I mean, pay conselture. And I think you'll agree it's an important story too, especially in these days. So join us once you are next, I will turn without a code, I hope, as the man called Rex. Good night. The man called Rex, starring Herbert Marshall, is a Saturday Night Feature on NBC's five-show festival of comedy, music, mystery and drama brought to you by the makers of Anderson for fast relief from pain of headache, Neuritis, Neuralgia, and by RCA Victor, world leader in radio first in recorded music, first in television. The man called X is a J. Richard Kennedy production with music composed and conducted by Felix Mills. Tonight's story was written by Robert Libet and Frank Burt. All characters and incidents on this program are fictitious and any resemblance to actual characters or incidents is purely coincidental. Be sure to listen tomorrow evening for The Big Show with Tallulah Bankhead and The Great Parade of Stars, the Sunday Night Feature of NBC's All-Star Festival. And until next week, same time and station, this is Jack Latham saying, good night for The Man Called X. Now the hit tunes on your hit parade. Tomorrow it's The Big Show on NBC.


Six email subject line formulas that get people to click. Hey guys, emails are great. Emails can make you a lot of money, but if they don't open your email, then they don't read it and they can't click and you can't make any money. In this video, I'm gonna show you six email subject line formulas that are almost guaranteed to get clicks. Now, if you haven't subscribed so far, please do so. Hit that subscribe button down there, turn it from red to gray, and don't forget, ring the bell, turn on all bell notifications so you're notified each and every time I go live or if I upload a video. Now, subject lines are awesome, but I want you to think about them differently than you ever have before. A subject line is, well, not a subject line, okay? It's the purpose of the subject line is to get somebody to open the email. If you tell somebody what is in the email in the subject line, then they don't need to open your email if they're not interested. So, we've got to change that way of thinking right off the bat. Now, I'm gonna put a few subject lines up on the screen here for you real quick just to give you an idea of what I'm talking about. So, the first one is dammit, dammit, dammit, okay? What does that mean? Well, we don't really know what it means, so we would have to open the email. The next one is don't make assumptions. The one after that is this is ridiculous. Number four on that screen there is behind the scenes, breaking the law. Number five, super important awesome in all caps even. The single best way to get customers, period. That's how they get you and a confession. Name, new training for you. Now, wouldn't I say name there? You should insert their name and the right software is gonna help you do that. And I'll reveal to you what the right software is in just a minute. How to bring home the Benjamins. And the next one is screw the wall. So, look at these subject lines, guys. They don't really tell you what's in the email, but they're very effective. And there's certain formulations that you can use to come up with these kinds of subject lines. And I'd like to walk you through each one of those so you know what to do and then anybody can write emails that are gonna get sales. Now, some of these subject line formulas are gonna kinda break the rules as far as what you're supposed to do, but they work and that's all that really matters. And then other ones kinda follow the rules. Emojis seem to get more opens, but now more and more people are doing emojis and they're not near as effective as they used to be. So, you also wanna take into consideration as time goes on, things change and you need to adapt and change with it. The same thing that you did last week that worked really well may not work as well this week. So, I want you to take all of this with a grain of salt and try it. A-B test it. And if you don't know what A-B testing is, basically you do one form and then you do another form and you find out which one works best. Now, if you don't have the software, and I mentioned to you just a second ago, if you don't have the right software to do this, it's really hard to send out emails and A-B test or even get good results. So, I'm going to offer to you this suggestion. Get Cartra. Cartra is awesome. You can see it right down below here right now. If you use my link below, you can get it for $1, but Cartra will help you design and develop emails. Along with that, you can do all kinds of A-B testing and it will get you really good results. So, I highly recommend you try Cartra. This link here, when you go down to the link, you can click on it and you'll see a video. If you watch the video, it'll walk you through the whole thing. You don't even have to put in your email address, no credit card or any of that. And watch the video. If you like what you see, sign up for it, try it out, it's only a buck. So, that's my commercial. And that's what I use for all of my emails. Okay, the first one I want to tell you about in your subject line is to ask a question. When you ask a question, it gets people's attention and they almost feel compelled to answer it. Now, these questions have to be exciting. If you say something like, I don't know, excited about the holidays, that's not gonna really resonate with people. So, let me put some questions up on the screen so that you can see them and you can see what I'm talking about. The first one is, should you skip dessert at Thanksgiving dinner? That's a very interesting one.  When is the best time to say, I love you? Are you making this big business mistake? So, all of those subject lines kind of develop some curiosity to where I want to know what's in the email because of that subject line. Number two is to say something shocking.  But if you looked over in the coffee shop and you saw a lot of people in business attire sipping their coffee, it probably wouldn't get your attention because it's not breaking through the clutter. The Elvis guy, he would break through the clutter. You can also say something shocking like, is Twitter dead? Elon Musk. Well, Elon Musk just bought Twitter and you're gonna look at that subject line and say, well, I have to read this. I gotta know what's going on here.  And then have an exclamation point at the end of it. That's gonna get people's attention. They're gonna be saying, what are you talking about? Number three is teach them a how-to. Teaching a how-to has always worked. It's worked in subject lines and newspaper headlines for years. Let me put a few on the screen here so you can see them. The first one is how to make him fall in love. Oh my gosh, love is a big category, isn't it? How to get 1,000 new customers in a week or how to double your earnings in under a year. So you get the idea here. It's a how-to do something. Now there's another part to this how-to that I really like using and it's a how-to ex without pain. So the how-to ex without pain works something like this. How to lose 20 pounds this month and still eat the foods you love. How to sculpt your body and look better and not have to exercise a single minute. So all of those types of headlines, though they probably aren't true, can get somebody's attention. You could also say how to improve your skin tone and look ageless without using expensive facial creams. So all of those follow that formula of how to ex without pain. Number four is make them curious, okay? And I alluded to this earlier when I said the single best ways to get customers, period, okay? So that gets people's attention. They wanna know what that is. I'm developing that curiosity. I'll put three more on the screen here for you. The next one is we were amazed at how well this worked. 15 bizarre tricks to sleep better. We've got a surprise for you. So as you can see, all of these subject lines just develop curiosity. They don't tell you what's in the email. They don't tell you what's gonna happen. They are developing curiosity. So back to what I said in the beginning, a subject line has to get people interested enough to open your email. You don't wanna tell them what's in the email. Number five is use numbers. It has been proven that numbers will get people to open emails more than anything else. A good example of that is testing a subject line, and I've seen this one tested where it says how to get more likes on your Instagram post versus eight steps to get more likes on your Instagram post. The one with the number always does better than the one without the number. So when you add a number to something, you're gonna get better results. Here's some more examples on the screen. How to save $290 extra every month. 33% of people say never do this. 23 reasons you're not succeeding. All of these ways will get you more opens for your emails. And now let's move on to number six. Use FOMO. What is FOMO? FOMO is fear of missing out. When you use that fear of missing out in your subject line, you'll see tremendous results. Let's look at some examples of that. In addition to that, if you're using CarTru, which I highly recommend you do, links in the description, you can actually use Accounting Timer in your email too, which will create even more urgency. Check out these examples on the screen right now. Don't miss your last chance to save. Uh-oh, your trial is about to expire. Urgent, you only got six more hours. And the last one up there, today only get access for 50% off. So basically all of these things incorporate that fear of missing out. Now maybe you're selling physical products and you can talk about your warehouse only has 29 more of these, or there's only 17 available at this price. If you put the numbers in there, along with the fear of missing out, you can really have a very strong subject line. So don't be afraid to combine some of the things I've taught you in this video. If you combine those things, you will get even better results. But the important thing is, you've got to test these things. You got to split test these things. You've got to figure out which one's going to work better for you and your audience. Different audiences react differently to different things. I know women, when they see an email and it's a discount on a product, they want to see a bigger discount than some men do. Why that is, I don't know. My wife proved it to me one day, we were walking through a mall and something said 20% off. She goes, well, that's not a sale. I said, why is that? And she says, the sale has to be at least 50% off. And I thought, wow, that's how she thinks and that's how a lot of women think is they've got to have that percentage. So think about your audience, apply the things that work best for your audience and you're going to see great results. I hope you enjoyed this video. I hope you got a lot out of it. Make sure you use all these tips and tricks and you're going to get better results in your emails. And don't forget, use Cartra. Cartra is really important, very easy to use, very inexpensive. It offers a whole host of different things. That's why I say you want to watch that video down there. It's not just emails, it's all kinds of things that Cartra will do for your digital marketing company. As a matter of fact, when I got Cartra, I actually got rid of eight different pieces of software that I was paying for. So you'll want to check it out below. Don't forget to subscribe if you haven't done so so far. Make sure you hit that subscribe button, turn it from red to gray. As a matter of fact, if you go ahead and hit that subscribe button, I will show you a little video of a cute bird. Check this out. See, see, isn't that cute? Of course it is. You have to subscribe now that you've seen that, right? And don't forget to ring the bell. Turn on all bell notifications so you're notified each and every time I go live or if I upload a new video. I do have a course down there. It's absolutely free, $97 course. Just click and learn. Thank you so much for watching this video and I'll see you in the next one. Every time I do a new video. Also, click on one of those videos there. Keep watching on my channel.


Good morning. Welcome to KubeCon and CloudNative.com and to this Dapper Maintainers talk. We'll introduce ourselves. My name's Mark Fussell. I'm a Dapper Maintainer, and I'm also the CEO of Diagrid. And I'm Chris Gillum, software architect at Microsoft, so we're focusing on serverless cloud platforms. And today we kind of want to dive into a little bit about what Dapper is, just get a little bit of the background. We're going to spend quite a lot of time, and Chris is particularly on workflows, which is probably one of the most exciting things that we've been building into Dapper in the last few releases. And then I'll kind of follow up with a little bit about talking about some of the things in that latest release, particularly around the outbox pattern. And then we're going to finish up with sort of the road ahead and where the actual project is going and sort of dive into sort of looking beyond the future. You know, what is Dapper? Dapper is effectively a set of APIs that allow developers to build distributed applications, to build cloud-native applications. It brings productivity for you to build across distributed platforms like Kubernetes. In essence, Dapper is a set of APIs that codify best practice patterns that save you time building things like request reply or pub sub-event messaging or long-running stateful or workflow applications. And by combining these together and coming at it from any language or any runtime of your favorite, you can build applications that run on a set of VMs across Kubernetes. It's not bound to communities and platform, but it's about productivity for developers. So when you're building applications, Dapper APIs allow you to distinctly build them more productively fast and then half the time you'd expect. In fact, we did a great state of Dapper survey a few months back and it showed that Dapper itself saves developers 30% of the time getting their applications into production. Now, another way to think about this is that Dapper is a set of patterns that you can use from each one of your runtimes. So you can take one of your favorite languages, you can take your favorite framework inside of it all, and you can think of them as patterns that you see typically codified like saga workflows or request reply or long-running event driven applications. And Dapper alone is very powerful, but you can be used alongside other APIs and frameworks that you use. It doesn't have to be solely used and embraced. It's kind of a combination of effect that you can bring together with other frameworks. So when you look at this as well, you can look at it through the eyes. Well, I was using microservices.io as a place to show microservices patterns. We kind of layered the common use patterns on top of that, and so you can see that even from a microservices sense you can bring these consistent patterns to your development. Now, that is it from a developer perspective, but what does it look like from a platform perspective? One of the key questions as well that we kind of need to answer ourselves is how is it that Dapper fits in with hosting platforms that you use? So when you look at three very common hosting platforms, you get the less opinionated Kubernetes platforms, very powerful, but you have to think about a lot how to deploy and run to them, and then you get the very opinionated functions platforms. And to some degree, Dapper sort of embraces all those different levels. But one of the common questions is what's missing from the conversation about how is it that developers using those platforms talk to underlying infrastructure? And what we see commonly is that developers bring in a particular SDK and they bind tightly to particular infrastructure libraries and sort of tightly couple those two. So one of the key attributes that Dapper does is it allows you to have a separation of those concerns. It allows you to have your underlying infrastructure through the API contracts and also through the idea of a component model so you can swap out the underlying infrastructure yet make your code consistent. This is very relevant to an audience here where you're thinking about platforms and how they have contracts that fit with the application world in terms of the application developers building on top of them. So in a particular case, I'm very powerful with Dapper as you can build applications locally and you can also then move them to the cloud and all you have to do is swap out this underlying component model. Or you may have built an application that's even outside the cloud but be able to say there I'm using particular underlying technologies that I went to from Message Broker or State Store and without changing my code, I can move them into a cloud and swap out the State Store I was using for a cloud store or cloud Message Broker. So this all gets surfaced effectively in what Dapper is called the component model. You know, for each one of the... behind each one of the APIs is a component model. So for example, behind the State API, there's a component model for State Stores about how you store State in a key value store. Or behind the Message Broker, the publishing API, there's an API to plug in different Message Brokers. And this portability of code prevents you from having lock-in, it provides flexibility, and, you know, time and time again, we have conversations with organizations that go, I wish I hadn't tightly coupled my code together. Now, Dapper does layer a lot of functionalities on top of this. It's not just purely an integration play. So, for example, in the State Management Place where you have non-transactional State Stores, Dapper provides transactional semantics for multi-rights across the door. Or Dapper provides security at the topic level for security messaging that's layered on top of all those Message Brokers. So it's very powerful runtime in its own right providing a lot of features around patterns that layer on top of this component model.  Well, here I might have an application that uses PubSub to coordinate through a various State Store that sends messages to another server that's sending messages out to Twilio, and then it may do a Direct Invoke message to another service here that saves some State or talks to another cloud service. And when you look at the design of this application, binding them all together effectively is a set of Dapper APIs. And those APIs make it consistent. It allows you to have a contract that you talk about how you build your applications. And the flexibility and portability of that is incredibly important. In fact, the more we spend time with customers, the more we spend time with them. In fact, the more we spend time with customers, the more we see that this contract of having an API that keeps the portability of your code and all the rich features that Dapper has so that you can build applications quickly becomes very important to them. But what's also critical is across all these APIs is you get consistent observability, security and reliability. So if my calls fail to service invocation, they can retry or my PubSub does retry. I do end-to-end security across all of this. So you get security out of the box. You get observability out of the box. You get reliability out of the box. And by the time you put all of this together and you think about this, what really Dapper is is an integrated set of APIs that all work very well together and provide this seamless connectivity to pretty much give you 80% of the whole app you want. And with the introduction of workflow, which is in so many applications today, we have a business logic that has to run, that communicates with other systems, that does service invocation calls, that talks to external systems. You can find that, you know, you have a very powerful suite of APIs that runs on many different platforms, that communicates with... runs on many different cloud services you can hook up to, and you can see your productivity about building applications. So with that, I am going to switch over and let Chris dive into workflow and all the amazing things that have been happening there. All right, thanks a lot, Mark. By talking about what is a workflow? And I think this is an important question because depending on who you ask, you might get a very different answer. So we'll start out with the definition that we used in the Dapper workflow project, which is a sequence of software-defined tasks or activities that are performed to accomplish a specific goal or objective. So obviously that's a little generic, but sort of gives you an idea of how we see what workflows are. Diving in a little bit deeper, let's talk about some of the ideal characteristics that we think workflows should have. One is that they're stateful and durable. Right? We want them to be able to execute to completion regardless of infrastructure failures. Another is that they could be either short-lived or they could be long-running. Right? Workflow might run in just a few seconds or it might take weeks to complete. Maybe never ends at all. We believe that workflows should be virtual, meaning that if you were running a workflow in one VM and we need to load balance that thing, we should be able to do that. To unload it from memory, reload it to another node transparently without sort of impacting the availability of that workflow. Also, addressable workflows should have some sort of an ID such that we can send messages to that workflow to help it move along if it needs to. As well as clear life cycle semantics. Right? So these aren't just state machines. They have life cycle semantics such as pending, running, suspended, completed, failed, terminated. You get the idea. So given that, we came up with a set of features that we wanted to surface in DAPR workflow. Here's some of the main ones. One being activities. These are the basic units of work that workflows are responsible for scheduling. They have at least once execution guarantees and they do sort of the core processing for making out about network calls, those sorts of things that workflows often do. Durable timers. The ability to schedule arbitrarily long delays in workflow execution. Again, this could be a few seconds. This could be a month long delay. The workflow shouldn't care. Child workflows. So the ability to sort of break down a larger workflow into smaller, easy to understand subflows. This idea of external events. Workflows should be able to interact with the external world around it. Not just be completely isolated to its own set of activities. So for example, being able to take in an input. If there's like a human in the loop process that needs to be automated. And then lastly, retry policies. So if you have an activity that doesn't work and that it fails, just the ability to be able to retry that using either a static sort of declarative retry policy or even a code based retry policy. Let's jump into the code piece in a little bit here. So with DAPR workflow, you were actually writing workflows in code. And this is an important distinction that we have in DAPR workflow versus many other traditional workflow engines. Today we support .NET, Python and Java with Go and Node.js support coming very soon. But the important thing to note here is that the code that you see, and I apologize for being so small, but this is ordinary code just implemented as a simple function. Right? This is not something like Airflow where you might be using code to construct a DAG. Rather, we're just using idiomatic code in the language of your choice to actually define the workflow execution. In fact, you can even attach debuggers to this while the workflow is running to actually step through and see what's happening. And this allows you to use variables, loops, local variables, try catch, sort of exception handling, all with the guarantees that I sort of mentioned earlier about being able to run sort of reliably and durably, being able to move it from one VM to the other, so on and so forth. So if you've ever heard of, say, temporal workflow or cadence workflow, or even Azure Durable functions, it's effectively the same idea that we've sort of taken and put into the DAPR project to make available in a cloud agnostic way. So the way that this basically works behind the scenes is there are two pieces. There is the DAPR workflow engine which runs in the DAPR sidecar, and then there is your workflow code which runs within your application container. Now, the workflow engine, what it does is it takes care of all of the state management. It takes care of the sort of failure handling, retry, basically all the scheduling of actions for you, whereas the code that you write is purely focused on, you know, what is the business logic that I'm trying to implement, right? What are my tasks? What order do they need to run in? Those sorts of things. In fact, if you dive in a little bit more closely to sort of see this protocol, there's actually this two-way sort of GRPC streaming protocol that we use between the DAPR sidecar and your workflow application where the sidecar basically tells you, alright, please start running workflow X or please start running activity Y and then your code goes ahead and it runs that particular function or at least that step of the function and then it'll send back a result to the sidecar and then the sidecar then goes and saves it into the state store. Basically creating sort of an execution log so that if there is a failure, we know exactly how to rebuild that workflow and get it back into the state that it was in before. So with that, I would love to jump into an actual demo. This is an order processing demo but I do want to highlight that DAPR workflow in addition to being able to do things like business workflows is also very good for other scenarios such as infrastructure provisioning massively scalable sort of batch processing type jobs and just a variety of other workflow scenarios but we'll focus on sort of this more business order processing one for now. We have five micro services in this process. We're using the DAPR state store. We're using PubSub as well as the DAPR service invocation building block which allows the workflow basically to communicate to all these different services either directly using service invocation or indirectly sort of using PubSub via Redis. So I'm going to go ahead and switch over now to visual studio code where I have an app. Hopefully this is visible enough. I can zoom in just a little bit here but over on the left hand side you can see I've got four services, inventory notifications, order processing, payments and shipping. I also have a DAPR.yaml file which you can sort of think of as definition of our app for running it locally. Now normally in production you would run this in Kubernetes but DAPR has a lot of great tooling that allows you to also run your apps locally on the machine. The main app that we're going to focus on is the order processing app. Now this is all written in Python and if we dive into this, this is the app that's going to define our actual workflow logic and I want to spend a little bit of time on this. So we have a bunch of business classes which we have here which are totally custom and then we have a set of functions. We have a process order workflow which is our workflow function and we have a bunch of activities which are the pieces of code that the workflow is basically going to orchestrate in a reliable way. Now the workflow takes in two arguments there is a workflow context and then there is some input which is some a business entity that you define within your app in this case an order. And if we look into this function a little bit one interesting thing that you will notice is that especially if you're a Python developer you'll realize that this is a generator function and so what we're doing is making this context object which is given to you when you schedule this workflow we're able to use it to do various actions like calling an activity which is going to do some work in this case you pass in what is a pointer to the function that executes that activity and the result of this call is going to be a task and if you yield this task like we do here in this generator function what's going to happen is we're going to basically tell the dapper runtime which is running in that side car please execute this task that I wanted to execute in this case the notify one now if we take a look at the notify task it's rather simple it just takes the dapper client and invokes the publish event API to publish the message to a pub sub broker in this case it's just a redis pub sub broker but that's effectively what it's going to do now this notify activity it might run on the local machine it might run on a completely different machine basically depending on the load balancing characteristics that we need at the time but the idea is that this workflow can schedule these activities as it makes progress another thing that I'll mention to when we do this yield it's going to pause the workflow wait for this activity that it calls to complete and once it completes the generator moves to the next step which is in this case calling another activity reserve inventory that's sort of the next step that we do in this workflow when you call these activities and you yield them you can also get the output of the activity so for example when we reserve inventory we get some output back saying was it successful we can write some if conditionals to say hey was it successful if not send a notification that it failed we can exit the workflow at any time to complete it using a return statement again just using idiomatic code that you're used to to author all the steps within the workflow and again each time we do a step we do this yield which tells the sidecar hey please go execute that work that I asked you to and which point we also save our state so that if there were to be some sort of an infrastructure failure we're able to still resume this workflow load it back into memory and resume from the last yield point that we had so just quickly to walk through the last steps we'll get to this part in a minute but we sort of submit the payment after we've reserved the inventory and then we submit the order to shipping as one of the last steps here but you'll notice too that we wrap this in a try accept because if that's shipping operation if it fails for some reason well we've already submitted the payment so we need to compensate for that which is why inside of this accept block we have another activity where we can call refund payment to make sure that if for some reason that we're not able to complete the shipping we're going to refund whatever that payment was and so this is an important sort of guarantee that we offer that we're going to run through your workflow code the presence of failures and so if there is some sort of application level issue that prevents shipping you know we can have compensation for that which is often a very important feature and then once that's all done we do a final notification to say that we're done and then just to quickly oh and one other thing that I think is pretty interesting too so I've showed you so far just orchestrating a bunch of steps let's say we want to add a human approval in the loop as well let's say that if an order is over a thousand dollars somebody needs to manually approve this thing well workflow has tools for that too so one of the operations one of the tasks that you can schedule in a workflow is waiting for an external event you define what that external event is in this case we're calling it approval and let's so we're going to pause the workflow and say we're not going to continue until somebody approves this we receive the approval event but at the same time we also don't want to wait forever for somebody to approve this let's say we want to bound it to like 24 hours so we have another task which is a create timer task you can set any duration to this in this case 24 hours and we're not and basically we're going to wrap those two tasks using this when any API to say when either the approval task or the timeout expiration task complete go ahead and resume the workflow and return back whichever of those tasks was the winner so below that we can say if the winner was the timeout expiration then you know we can notify the hey we we failed to receive an approval for this and we go ahead and complete the workflow as a canceled order effectively otherwise you know check to make sure that we got the approval that we expect and then continue running the workflow so anyways that's that's sort of an interesting feature that we also have as part of workflows there's a few more but we'll focus just on that for now and then lastly I just want to show really quick we have a few API this is just a flask a flask app as well where we allow you to take adapted workflow client you can schedule new workflows say which one you want to schedule give it an input you can give it an instance ID so that you can reference it later which we're going to do so enough talking let's actually run this so I'm going to do dapper run and what that's going to do is it's going to take all these five microservice processes that I've defined within my app and it's going to start them up on my local machine and what I'm also going to do while that's starting up is I'm going to open up on the bottom half here we have our notification service which is the subscriber to all those pub sub notifications that the workflow is going to be publishing so anyways we see down here that it says connection open and we're going to go ahead and start a workflow so hopefully I can do this in a way that's somewhat readable and I go to the top here and let's go ahead and submit an order this is going to be a slightly expensive order sometimes this is a little funny okay there we go so we're going to submit this order and the order was received and immediately you can start seeing that the other service which is subscribing to the notifications is now getting those notifications that we received the order we reserved the inventory we're waiting for the approval because it exceeded our threshold so that means we need to do the manual approval now one thing that I also want to show you here which I'll go ahead and maximize this for that let's see how do I get back my here sorry okay another thing I want to show you is structure failures so I'm going to actually control see this and now I have just shut down all of my processes in my microservice sort of simulating like a data center outage or something like that so we can see in our UI that the connection is closed we've lost connectivity everything is down at some point though you know our ops team will come in they're going to get it all back and running again but you know what happened to our workflow right it was in the middle of running waiting for approval will it be okay and so the connection is open so we know that our systems are up and running again what I'm going to go ahead and do now is try to send a request that is going to complete that approval process so I'm going to go ahead and send that we received it and what we should see which we do is that the order was indeed approved the payment was processed successfully and it looks like there was an error submitting to the shipping I think that's because maybe I did it a little bit too fast but anyways the important takeaway here is that the workflow was able to continue where it left off without sort of needing to redo any of the previous steps which we can sort of see by checking on this notification service here so that's a very important capability of the service last thing that I want to show you really quickly if I can find my mouse pointer we have distributed tracing that we support with workflows as well so if you need to go and sort of debug and see what happened you can do that we have a nice display here in Zipkin which shows you first of all the full span of the workflow itself how long did it took in this case 79 seconds and you can actually see of all those activities that it's scheduled how long did they run for what was their status and so on and so forth and even you can sort of dig in and see some other details like it failed doing the shipping step but anyways sort of that end to end distributed tracing transparency that you would hope to get with a workflow system that's calling services a whole set of different microservices so anyways that's where I wanted to show Mark I think I'll hand it back to you it's pretty incredible stuff workflow is we're going to switch laptops here just a moment so we're just going to jump over here okay hopefully it should spring to life so yeah that's workflow I mean you can see how powerful it is especially combined with the other DAPA APIs let's dive in a little bit more here because I think another incredible capability we added into DAPA runtime is another pattern if you think of workflows around Saga we put also the outbox pattern what is the outbox pattern the outbox pattern is a combination of doing a transaction around a state save and also a message send so for example say you are saving in the orders or account information and then you want to tell another service to send an email you don't want to send an email saying your account has been created and then save it and you don't want to save it and tell a person that their email wasn't sent so you'd like those to be bound together under a single transaction that's exactly what the outbox pattern does so for example in this case I can save my order into the database or my account information and then send a pub some message that's sent to another emailing service and that tells my customer whoever it is that I have now created your account and it's ready to go and you want them to be consistent it turns out it's pretty hard to do in an easy way so we're going to show how on any one of the 15 or 20 state stalls that we have inside a dapper runtime you can simply combine any one of the pubs or brokers with any one of the state stalls to do the outbox pattern between them all and I'm going to do it between Redis pub sub for my message broker and I'm going to do it for my SQL both running my local machine to show you how you can put these two together let me just switch over here into VS Studio so VS Code so let me maximize this okay so I've got two services here one's an order processor service which simply creates new orders inside and it's going to save them into a SQL store locally and all it does is it does uses the dapper clients inside here to execute a state transaction into my local SQL store and it just saves a number of orders in fact I just do two orders inside this and then I have an order notification service all it's doing is it's listening on the pub sub broker to orders and it just publishes and I receive a notification from my pub sub broker in this particular case my state store I'm saving into if I return here you'll see I'm saving into my dapper store name here which is my SQL store and these component model as we talked about in the beginning of this talk is defined here as a SQL state store and I kind of have my connection string how to talk to it all but in order to take the message of the outbox pattern I simply have to add two metadata properties into my component manifest I simply have to say the order topic that I want to send on through my pub sub broker and I want to say the name of my pub sub broker that I'm going to send it to so that means any time I save a state into this state store and at the same time I want to send out a message through my broker that combination will happen through the outbox pattern so that's all you have to do and you just simply have to add these two here different types of state stores that we have and be able to take advantage of inside your dapper run your dapper project so let me put this together I too also have taken advantage of using a dapper run command I'm going to show you first though if I look into my state store I don't have anything saved inside this so this is looking at my local mysql state store so now what I'm going to do is I'm going to simply run and I've got the dapper run command inside here combined into two microservices that are run together so if I run this you'll see that it'll run the order processor it'll create an order here it'll save it into my local state store and then you'll see that notifications get sent and actually I'm going to just check here that I put this into the right sql state store and then the notifications will get received inside my pub sub broker which I don't think to have got run in this particular case so let me try it one more time inside here so these are the notes we've received okay and then you see that when I run this you'll see the order notification received through my pub sub broker combining the two with my save so there's an incredible incredible feature that you can simply do this on any one of the brokers and if you go back to my state store inside here you'll see now if I run the query inside here here's my two orders that were created and saved and if I go and look in my redis actually look into my redis actually look into my redis one which I don't have a viewer inside here you'll see that the message that gets sent to my redis broker so incredibly powerful and these are the sorts of things that we're doing inside the DAPA project we're continually innovating to make sure that we bring very consumable easy to use patterns to developers so that you can spend your time building great business code and not having to implement common patterns like this that you should find and make them available for wherever you come from today whatever language whatever framework that you're deciding to choose so where's DAPA going and where's the roadmap of where we're looking for well we release DAPA every three months we release it four times a year every quarter we just did the 112 release about a month ago that contained things like the outbox pattern and then we have the 13 and the 14 release that will be coming early next year and sometime in spring of the year after that and there we're focusing a lot on getting things stable around workflow and bulk pub sub which is in our pub sub broker APIs we're looking at how we're going to introduce a scheduled API how do I run cron jobs on a regular basis so I want this thing to happen every day or every hour it turns out to be incredibly useful to be able to have an API that schedules things on a regular basis an amazing feature that's coming is the hot reloading of components today when you change a component you have to restart your DAPA sidecar to pick up any of those definitions we're having it so that if you change a component manifest and it'll be automatically reloaded for you without your DAPA seek sidecar starting up which in itself is a huge feature which has been long asked for so now you can keep your systems running and without deploying new components inside more another deploying model is you can run DAPA as a sidecar today that runs on the Kubernetes world per pod but there are also circumstances where you want to run it on a per deployment side that means any number of instances of a particular application can have a single deployment for a DAPA runtime for them so that just allows for different deployment models which is often asked for especially when there are some restrictions in your testing environment or maybe some of your deployment environments and then finally we do a lot make sure that SDKs have consistency between them and also having the idea that you can have DAPA running remotely that you can attach to over from your SDK so those are some of the immediate things as many many more other features coming into those releases but as we look beyond that there's a lot of APIs that we still take through to stabilization that we introduced over the last year around distributed lock and crypto APIs we're heavily into security we've done amazing work today to give application identity through SPIFI to each one of the applications but we want to take and do more there in terms of deeper SPIFI integration and also integration with cert manager so you can bring in external search from external search search authorities we are always looking at improving the local developer experience you saw us for multi-app run today that allows you to run multiple services on the same machine how do we do things like local component validation more types of local components and then generally inside the project we're very fanatical about because we do multi deployment across multi clouds and testing on multiple environments we focus a lot on testing not only of the deployment models but also perf end-to-end testing and making sure that we really have a stable, resilient system around them all and then I think one of the most exciting areas we've had a lot of asks for is state storage and how to improve the types of patterns that it has you see today that we have key value store as a type of state storage but as we look towards other things that we can bring inside there document store type, blob storage and even SQL storage as general purpose APIs so that you can have that abstraction layer over all types of storage not just sort of key value storage so now you can have that component model over blob storage of different clouds for example that I think is something that will really open up the different types of distributed stateful applications you're going to build and then beyond that we are fanatical about getting DAPA integrated with other things inside the ecosystem so we've worked really, really, really hard with other projects and if you are a contributor or a maintainer of another project that you think has a synergy with DAPA we'd love to hear from you for example we've done a lot with test containers and v-cluster and open function and critics and in progress as I mentioned more integration with SPIFI we're a certain manager but bringing K-native functions together with DAPA is an initiative we're working on and generally a lot of people have come to us and said you know DAPA APIs are becoming so unique, so specific and so well adopted we'd love to see the general open API specification around it all so that you may even have other implementations of them so please come and talk to us about how we can engage with you inside the other ecosystems how we can get DAPA integrated as part of all of this you know I'll leave you with the fact that DAPA is about making developers happy you know making you enjoy what you do not focus on the plumbing don't reinvent the pattern the pattern's been done for you build your applications use the patterns that DAPA gives for you and you know we'd love for you to come and join our 3000 contributors or 7000 discord community you can find a ton of other information inside here in terms of how to get started how to contribute a community called twice a month that we often look for having demos and deep engagement with the community and I'll just leave you with go off to our repo where if you want to get a community supported digital badge to show your excitement about the project scan this put it inside your GitHub repo it kind of shows how you support the project so with that thank you very much today