What's up everybody, Jason here for JaspiersCaseBirds.com. This is a little filler here to give away 10 spots in the big Super Bowl mixer giveaway filler. This is a little mini filler. We'd like to call it. So we're giving away 10 spots in the big filler guys. This is a 2021 rookies and stars football one box break cereal number 25. So again guys, first we're gonna do the break, randomize because we're names team to distribute the hits out of the little cereal box. Then at the end we're gonna get all the names I bought into this filler, randomize them. The top 10 names get into the 2021 prism team all three box random teams break. With a chance to win, two spots in the 127 big game mixer break. Now of course this is part of a little promo thanks to hip pray for sponsoring this little giveaway guys. Gave us a couple boxes to give away. So basically you buy 10 of these breaks here with any fillers. You get chances to win. So this is a little filler here that is eligible for that. So we'll paste your names in there now. And like I said we still need to sell some straight up spots remaining still in the big mixer filler. But you guys will be in it here. And this one is a rookies and stars, random team number, what is this one, 25. So we'll call it right there. So you guys are all in it no matter what. So you have a chance to win a couple of nice hip pray boxes there. So let's do the break guys and then we'll give away the spot later. So break first, roll, 5 out of 4, 9 times, good luck, 1, 2, 3, 4, 5, 6, 7, 8, 9, Kevin down to Tristan, 1, 2, 3, 4, 5, 6, 7, 8, time of 8 bucks, down to the Kansas City Chiefs. And again guys this is a quick little cereal box break so no trading. Give it a quick glimpse, look at your teams there. And here let's do this quick little cereal box. Rosa Wilson, Davis Mills, Calvin Ridley Crusade and the little star studded tree lands. There you go. Switch scenes now. And again guys top 10 get into the prism mini filler or the prism big filler I should say. Top 10, roll, 3 out of 3, 6 times, good luck, 1, 2, 3, 4, 5, 6, 6 times, 6, top 10 are in. Tim, Kev, Tristan, Josh, Tristan, Devin, Tristan, Jonathan, Jeremy, poor last ball mojo and Michael P. Congratulations. So you guys are on to the next filler which now will give you the opportunity to win up to two Super Bowl mixture spots. So I might create a second filler guys. I know this one says last but we were hoping that we only had to do one just like a number 24. But of course if we stay stuck at 18 then I'm thinking of cancelling that second or cancelling 10 spots straight up and turning it into officially the last last filler. So there might be number 26 going up soon but we'll play it by ear guys. Appreciate it guys. JasperysKZBricks.com


In this video, I will be sharing the top reviews of the book called, Agent Sonia, authored by Ben McIntyre, who is a writer at large for the times in the UK and the best-selling author of The Spy and the Trader, A Spy Among Friends, Double Cross, Operation Mincemeat, Agent Zigzag, and Rogue Heroes, among other books. McIntyre has also written and presented BBC documentaries of his work. But before we get to the reviews let's see a little bit of what this book is about. In 1942, in a quiet village in the leafy English Cotswolds, a thin, elegant woman lived in a small cottage with her three children and her husband, who worked as a machinist nearby. Ursula Burton was friendly but reserved, and spoke English with a slight foreign accent. By all accounts, she seemed to be living a simple, unassuming life. Her neighbors in the village knew little about her. They didn't know that she was a high-ranking Soviet intelligence officer. They didn't know that her husband was also a spy, or that she was running powerful agents across Europe. Behind the facade of her picturesque life, Burton was a dedicated communist, a Soviet colonel, and a veteran agent, gathering the scientific secrets that would enable the Soviet Union to build the bomb. This true-life spy story is about the woman code named, Sonya. Over the course of her career, she was hunted by the Chinese, the Japanese, the Nazis, Michigan Five, Michigan Six, and the FBI, and she evaded them all. Her story reflects the great ideological clash of the 20th century, between communism, fascism, and Western democracy, and casts new light on the spy battles and shifting allegiances of our own times. With unparalleled access to Sonya's diaries and correspondence and never-before-seen information on her clandestine activities, Ben McIntyre has written a history of a legendary secret agent, a woman who influenced the course of the Cold War and helped plunge the world into a decades-long standoff between nuclear superpowers. Now let's get to the reviews. Dem from Ireland says born to a German-Jewish family, Ursula Kaczynski was a German communist activist who worked for the Soviet Union in the 1930s and 1940s. From planning an assassination attempt on Hitler in Switzerland to spying on the Japanese in Manchuria to preventing nuclear war. Or so she says, by stealing the science of atomic weaponry from Britain to give to Moscow. I really enjoyed this book and couldn't stop listening. It's impeccably researched and extremely well-written. Reading this you just can't help getting caught up in Sonya's life as a spy. The lengths she went to for a cause she believed in, I found myself conflicted as to why she would risk her children for her beliefs. This is my first Ben McIntyre book and I just wished I had purchased a hard copy of this book for my real life bookshelf. I listened on Audible and the narrator was excellent but I can't help wonder if the hard copy had photos and maps to go with the story. This is always a concern I have with listening to non-fiction on Audible. Occasionally the Audible has a file attached with photos but nothing came with this book which was disappointing but perhaps the hard copy didn't have photos. I wish the book had more information on Agent Sonya's life in Berlin in her latter years and not sure why the author choose to gloss over this period of her life. Having said that, a terrific book for readers who enjoy spy stories, history or non-fiction reads. Davis from the United States says Ben McIntyre is a badass writer of narrative non-fiction about lesser known historical figures from the World War II era. I read and reviewed his blockbuster, A Spy Among Friends. Kim Philby and The Great Betrayal, which was published in 2014. When I was invited to do the same for Agent Sonya, I didn't hesitate. My thanks go to NetGalley and Crown Publishing for the review copy. You can buy this book now. Her real name was Ursula Kaczynski, and she was a German Jew. Hitler came to full power when she was visiting China, and her entire family fled. Born before the Russian Revolution, she lived until after the fall of the Berlin Wall, and so her lifespan encompassed the entire duration of the Soviet Union.  The Chinese peasantry was so wretchedly poor that she found dead babies in the street. Starving mothers sometimes concluded that they might be able to save one child, but they surely couldn't save more than that, and they were forced to make a tragic choice. This, in spite of the vast and opulent wealth of the most privileged classes, was obviously wrong, and there appeared to be only one way around it. She signed on to be a spy for Moscow. Maine from the United States says Ben McIntyre has done it again, produced a jaw-dropping book about 20th century espionage. Sonya, born Ursula Kaczynski, lived a long life in service to the causes of anti-fascism and communism, starting 10 years before the Russian Revolution and extending decades after the fall of the Berlin Wall and the collapse of communism in Eastern Europe. Her travels and accomplishments would be unbelievable as fiction.  Born into an intellectual German-Jewish family, she was keenly aware of the growing power of the Nazis. Much of it she viewed from afar, though, because she and her architect husband were living in Shanghai, where he was working. Appalled by the state of the Chinese working class and the growth of fascism, Ursula was soon recruited to spy for Soviet military intelligence, working with famed agent Richard Sorge. Always willing to obey the orders of Moscow Center, Ursula moved from Shanghai to Poland to Switzerland to England, shedding husbands, partners along the way, but accruing children. Her hair-raising escapes from danger are mostly attributable to her wailiness, but as McIntyre makes clear, there's a little secret sauce in there, too. And that's sexism. Ursula was so outgoing, so charming, so at ease with all kinds of people, even Nazis, and so housewife-ly, that nobody ever seemed to think she could possibly be a Soviet spy, no matter what the evidence, and it reached the point where there was plenty. Essel from Canada says I can't imagine being Sonya.  Sonya is the codename for a woman of German-Jewish descent who was enlisted as a Soviet spy in her 20s. She lived in China, the Soviet Union and Switzerland and ended up living in England for several years, seemingly as an English housewife, but meanwhile passing important secrets to the Soviets. Later in life, she lived in East Germany, where she became a children's author. Meanwhile, she had three children, none of them knowing her background until later in life. Ben McIntyre does a great job of depicting Sonya's life and personality and what motivated her. It's a sympathetic portrait of an unconventional, fearless and adventurous woman. I listen to the audio, which McIntyre narrates in his beautiful British accent. I would have liked to know more about the perspective of Sonya's children on their mother but, otherwise, his was great. Highly recommended to anyone with an interest in 20th century cold war history. Bridget from the United Kingdom says although, Sonya is the main subject of the book her two husbands and Richard Sorge are also significant characters and this adds a new dimension to this wonderful account. I have enjoyed all of McIntyre's books and like his journalism, but I think this is his finest achievement to date. He has the gift of a conversational style that manages to convey facts easily, but without being trite or facile. A great gift. Sonya spied in China and Switzerland but her big hit was when she operated from a sweet English village. Bicycling along country lanes she could have been a vicar's wife out for some innocent brambling rather than checking out a dead drop with instructions from her Soviet handler. The bravery of the men who parachuted into Germany just before the collapse of the Reich to assess bomb damage took my breath away. They used cutting-edge technology to communicate with high-altitude Allied planes, and Sonya made sure Stalin's subordinates got a peek at the kit. Just one highlight of this excellent book. I have provided the sources of this video in the description, please feel free to check them out. Thank you for watching this video, if you like this video then please subscribe to the channel and share this video.


Good morning and welcome to class. Thank you Lubega, Jeffina, John Paul and Zalutoli for joining class this morning. We'll begin. We'll continue our study on Romans chapter 12. So we'll start studying verses 9 following. So before we do that, can one of you please lead us in prayer please? Yes, Jeffina. Thank you. Dear Heavenly Father, we come to understand Him on Jesus. We thank you for this day. We thank you for the class you're about to have. May we learn more about you, more about who we are in your Jesus. But I just pray that every truth that we learn will just apply it in our life and it will be planted in our heart that we will see the harvest of the word in our life, Jesus. We believe that you're faithful to your words. Let every word that we learn stay in our mind. Help us to live this life in much more better way. My classmates worry I have to come. We give you all the glory and honor in Jesus name I pray. Amen. Amen. Thank you, Jeffina. We lost you in between. I don't know whether my internet connection was bad or the others as well didn't. Here, Jeffina, but anyways, thank you. Okay, so we began studying Chapter 12 on Monday and Chapter 12, Paul is writing to the church at Rome more about practical ways of living their Christian life. And so he's telling the believers that, you know, he begins by saying that they have to present their bodies as a living sacrifice, which is holy, pleasing and acceptable to God, which is their spiritual sacrifice, spiritual worship unto the Lord. And then he goes on to talk about how they need to renew their minds and also about, you know, how they can serve in the body of Christ. So he says that, you know, even as each one of them have been given one or more functions in the body of Christ, they also have the specific gifts to fulfill that function. God's given them specific gifts to fulfill that function. And every believer has been given the grace of God and the gifts that they require to serve and fulfill that function that God has called them to. So it was his nine following. The focus is more on relationship with others in the body of Christ. What, how do we relate to others outside the body of Christ and also within the body of Christ. So he's basically talking about the relationship aspect with people outside and inside the body of Christ. Okay, so we look at verses nine following. So can somebody read verses nine to verse 16, please. Can somebody read verses nine to verse 16. Am I audible faster? Yes. Yeah, Romans chapter 12, right? Yes. Yeah, verses nine to 16. Distributing to the needs of the saints, given to hospitality, bless those who persecute you, bless and do not curse. Rejoice with those who rejoice and weep with those who weep. Be of the same mind toward one another. Do not set your mind on high things, but associate with the humble. Do not be wise in your own opinion. Amen. Thank you, Jafina.  So he's saying first of all, you know, of the, of all the virtues first of all Paul addresses is love. And he says, you know, we need to be genuine in our love, which means don't pretend to love people be genuine in your love to others, you know, and your love must be heartfelt. It must be genuine care and genuine help that you want to offer people. West End, he says be kindly affectionate to one another with brotherly love in order giving preference to one another. So says the way we express kindness and genuine love is by giving preference to one another. So in ministry, you know, we think that, you know, if God uses us mightily, or, you know, we're very gifted in a specific function that God has called us to we have immense grace, the grace of God just is overpowering us empowering us, you know, and, you know, when God is using us mightily, we feel entitled. We feel, you know, we need to be given preference. So if there are, you know, if we are good at worship, and if there are two or three other worship leaders, then you feel entitled that you need to be given that, you know, the responsibility to be the worship pastor, the worship leader, or for that specific conference, or, you know, for that specific program that you're having in church, a conference, you have to, you know, lead the worship on all the days. So you feel entitled to that.  And it's so powerful, your teaching and preaching is so anointed by God.  So Paul is saying, hey, you know, we need to come to a place where, you know, in honor where we're giving preference to others, which means we're giving a chance to others that, and that should be our attitude. Our attitude is not that we be prominent, we be seen, but we give a place to others as well. Okay. In verse 11 he says, not lagging in diligence, but being fervent in spirit and serving the Lord. Be diligent means not being sluggish or lethargic or slow, you know, lazy, idle, sluggish or inactive.  Okay, so that is how we need to serve the Lord, not being, you know, slow and lethargic and sluggish and lazy or inactive, but just being fervent and excited and enthusiastic and passionate in what God has called us to do. And then in verse 12 he says rejoicing in hope, patience and tribulation, continuing steadfastly in prayer. So he's saying rejoice in hope, because he's always spoken about, you know, hope of the glory that we will receive, the future hope, you know, that all of creation will be redeemed. We also, even though we are partly enjoying the fruit of eternal life, we would experience in fullness and we have that hope in the future. So he's talked about the hope of the glory that we will receive, that we will see, that we will experience, that we are experiencing partially in part and also, you know, the hope of creation being restored and all of that he's spoken about it, but he's saying, you know, rejoice in that hope, which means he's saying, hey, now I know you are going through tribulation because, you know, the church at home was facing a lot of difficulties, persecutions, tribulations. It was, it was more than just, you know, what we can think of and how Nero was persecuting the Christians, you know, how he was treating them, how he was what he was making of them.  You know, why is he saying be patient because there is hope, you know, there is an eternal hope that we have. And so, because of the eternal hope that you have, and the hope that you have now in the present, rejoice. And he's saying, even as you go to this hardships, you know, rejoice in the hope that you have, and also be consistent in prayer. That is what is going to take you through patiently in tribulation and rejoicing in the hope because prayer is something that would open our spiritual eyes to the things that God has for us in store for us, and the peace and the covering and the grace and the strength that we would receive through prayer. Okay. He was 13 he says distributing to the needs of the saints given given to hospitality. So he says bless others, give to the needs of others, be generous and kind. Okay. And then was 14 bless those who persecute you bless and do not curse. So he says don't retaliate when people persecute you because the church at Rome was going through persecutions and accusations. And so he's saying don't retaliate, you know, when people persecute you, bless them.  So that is what Jesus has taught us.  So he's saying don't retaliate, bless and do not curse because they're very in that situation, you know, which is very, very difficult for the church at Rome, the Christians. So that is why Paul is writing to them. And also in this present situation which we are in, you know, or we'll find ourselves soon in where we will face persecutions and difficulties and hardships, you know, we are called to bless those who persecute us and not curse them. Okay, verse 15 says rejoice with those who rejoice, weep with those who weep. Okay.   So when they rejoice, rejoice with them.  Do not set your mind on high things, but associate with the humble. Do not be wise in your own opinion. So he says be willing to associate and think with people of different levels, you know, at times we will have to relate with people who are in higher level places of high influential authority, the rich, the intellectual, you know, so, you know, when we relate with them, you relate with them in their level, you know, and sometimes you're called to relate with people was simple, lowly, the poor, you know, we need to learn to relate to them in their situation or in their level. So as God's people, he says we need to work and we need to learn to relate with people at all levels of all status of society of all spheres of all places of position or levels that people are in society. And he says this is how we can fulfill the command to be of the same mind toward one another. And it's a simple command, you know, what is the command is to be considered to the feelings of others, you know, instead of waiting for on them to be considered towards your feelings, you need to be considered towards their feelings. So when we do that, so we fulfill the command of being of the same mind toward one another. Okay, if you look at this verse, how it's rendered in the ESV, the English standard version, it says live in harmony with one another, to not be hotly but associate with the lowly, never be wise in your own site. So in this verse in verse 16, you know, there are three injunctions here. Okay, three orders or rules or sanctions. The first one is be of the same mind. Means he says, be of one mind, live in harmony, get along with one another. And he says be of a humble mind, which means don't be high minded, be willing to associate with the lowly. And then he says be of a true mind, which means he has a proper opinion of yourself. You know, when we don't have a proper opinion of ourselves, we begin to think that we are wise in our own ways. And you know, we can become self deceived. Okay, so Paul is basically addressing an issue here of how we think, you know, he's talked about a renewed mind. And so he's think saying that we need to think out of that renewed mind. So a renewed mind is able to think this be of the same mind in unity and harmony with one another.   Okay, so he's talked about this in the opening was in the, it was two of this chapter, but he's talking about this again. So we're looking at the backward view and the forward view. Okay. So in relationship to six and three says for anyone who thinks himself to be something when he's not, when he's nothing he deceives him self. Okay, so, like we said, a true mind is someone who has a proper opinion of themselves and if you don't have a proper opinion of yourselves, you think highly than you ought to think about yourself.  You know, we know that Lucifer was filled with pride. We read about this in for Timothy chapter three was six. And it says, you know, how did pride enter Lucifer? It was because it was true self deception. He thought of himself more highly than he should have thought about himself as we did in Isaiah chapter 14 versus 13 and 14. So, you know, when we are drawn away by our own desires, you know, we can we become self deceived. That's what we read in James chapter one versus 14 and 16.  And so he became self deceived that he could have it. And that brought him to a place of pride and pride brought his downfall. Okay, so it's very important for us, you know, to be of a true mind, which goes back to having a renewed mind, because if we don't have a true mind, we become wise in our own selves, we become self deceived. Okay, was 17. We didn't read was 17 right. Okay. Any, any questions so far to was 16. Any questions. I just have a little question then it says, we with those movies. What does it basically mean. When those who are mourning or grieving for their loved ones, you know, we stand along with them, we comfort them, we console them, we be part of their mourning and weeping. So sometimes when, you know, people lose their loved ones and we are very close to them, we also, you know, feel their broken as we feel their grief. Also could be when people are going through brokenness and pain. And, you know, a morning or, you know, going through loss, you know, we just stand beside them, we stand along with them, we feel their pain, their burden, we carry their pain and burden, and we minister to them, we encourage them, we strengthen them and we offer whatever help we can in that time of mourning and loss and, you know, in their brokenness and in that pain. Thank you. Any other questions. Okay, if not, if can somebody read versus 17 till the end of the chapter was 21 please Roman chapter 12 versus 17 to 21 can somebody read that please promise. Verse 17 the pain no one evil for evil have regard for good things in the sight of all men. If it is possible as much as depends on you live peaceably with all men. Beloved do not avenge yourselves, but rather give place to Lord for it is written vengeance is mine. I will really says the Lord. Therefore, if your enemies hungry feed him. If his thirsty give him a drink for in so doing, you will heap holes of fire on his head. Do not be overcome by evil but overcome evil with good in. Thank you, Rosalind. So was 17. Paul says repay no one evil for evil have regard for good things in the sight of all men. So it says, you know, we must be careful to do things that are good in the sight of all men. So whether it's believers or non believers. He says when when when anyone looks at us, they must see that, you know, what we are doing is we're doing things that are good. And no one should point an accusing finger towards us. And we need to be blameless in the sight of those in the church, the believers and those outside the church. So it says whatever you do, do it in a way that is beyond reproach. Was a pain if it's possible as much as it depends on you live peaceably with all men.  You know, it implies that hey, I understand that, you know, there can be some situations where having a peaceful and harmonious relationship with people may not be possible. And, you know, sometimes in some human relationships, things might be difficult. And things can go outside of control. We can't control people's attitudes, wills, emotions, mindsets, their behavior.  But, you know, there are times when even when we want to live peacefully with all people, they want to fight with us. They want to argue with us and accuse us. Well, at those times, what do we do?  But even in those two situations, we just, you know, choose peace. If we either don't retaliate, we don't argue, we don't answer back, we don't accuse, we just let go. Okay.  How can you let go? Because he knows the situation that the people in Rome are, you know, the way they're being treated, the way they've been persecuted, the way they've been burned, the way they've been beaten and, you know, made of sport off. You know, it's difficult for them to not retaliate. It's difficult for them to live peacefully with the, you know, the Roman citizens, the unbelievers.  And so he goes on to say, you know, don't avenge yourself, but rather give place to Roth for the citizen vengeance, his mind, I will replace as the Lord. So he is quickly saying that, you know, why should you live, try to your best to live peacefully, even if situations do not allow you to be peaceful.  So, you know, he's saying, Paul is saying, don't take revenge. Don't try to get justice done for yourself, but leave it to God.   That is what even Jesus did, right? He did not retaliate. He did not fight back, you know, he just let go and he looked up to the for God's wrath and his vengeance or his justice to be done in his case. Okay, so, you know, we have to live beyond reproach. Okay, that's what even Christ did. Okay, so instead of fighting our case, instead of, you know, getting justice for ourselves, we need to just leave the justice and righteousness for God to bring about righteousness and justice in our case. Instead, what we need to do is we need to focus on what God has called us to do, and that is to bless people, which is very difficult for us to do. But Paul has already laid the basis. He's already laid the foundation for what he's, for all the difficult things he's asking them to do. And he's saying that, hey, if you have a renewed mind, this is what you will do. If you are willing to offer your bodies as a living sacrifices, living sacrifice daily as a worship to God, this is what you will do. You will live peacefully even if it's not possible. You will not take revenge or vengeance or you'll not fight your case. You'll leave it to God even when you are in a position you can do it. You leave it to God, why?  This is your acceptable or pleasing worship to God. This is how you will behave. And then he says, renewed mind, this is how you will behave. So, you know, Paul is actually, if you look at his, the way he writes, very smart, very intelligent. The way he's so structured in his writing and his, his arguments and the way he brings in his arguments and tries, gives a strong basis in the foundation so that nobody can, you know, retaliate and question. Back because he's all just, you know, strongly based and strongly founded and then he builds on that. He says that so even in you, we look at it, you know, it's, it's difficult. And, you know, when we, we get, we should keep quiet and how long should we keep quiet, how long should we, you know, put up with all of these things. But if we ask people who are offering our bodies as a living sacrifice, as a worship to God, and we're living out of a renewed mind, you know, this is what we should be doing. This should be our lifestyle, our culture, and this is how we should live. Okay. And Psalm 103 verse six says, the Lord executes righteousness and justice for all who are oppressed. Okay. So the Lord will bring about righteousness. He will bring about justice for those who are oppressed. Okay. Verse 20 says, therefore, if your enemies hungry feed him, if he's thirsty, give him a drink for in doing so you will heap coals of fire on his head. Okay. So in verse 20, he's saying, since you have rested your case with God, you've, you know, giving your case to God and saying, God, you bring about justice, you bring about righteousness in my case.  But, you know, Paul leaves out the last part in this verse in which is in Proverbs, he said, and the Lord will reward you. So, you know, he leaves out this part, which is there in the Old Testament, because you know, this is what something he already has addressed in verse 19, which means when you rest your case with God, God will reward you by executing justice or bringing about righteousness on your behalf or in your case. And then he ends this whole chapter, you know, verse 21, he says, do not be overcome by evil, but overcome evil with good. So he's saying, you know, this should be like a default response, you know, a response that is automatic, that is something that is routine, that is part of just a culture, a lifestyle as a kingdom citizens.  Okay, so evil refers to anything that is worthless, that is harmful, injurious, that is depraved.  Okay, instead, he says, when faced with anything that is evil, which is worthless, which is harmful, injurious, you know, is depraved, you have to conquer it. And how do you conquer it with good. So when someone is hurtful, you know, he's basically a renewed mind will think how we can bless them and not just think but do it. Okay. And when someone is unfair, a renewed mind will think how you can show them mercy and kindness and not just think about it, but also do it. Okay, so we see how beautifully he lays the foundation in the first two verses in chapter 12 about Christian living and then how he builds on it, because all of what he's saying later on in verses nine, following verse two, verse 21 is extremely challenging and difficult for the church at home, but he's saying, you know, do this because of who you are, you are people who have offered your body's living sacrifice, that's your worship to God, and as a renewed mind. And when you do that, automatically, this will become your culture, your lifestyle as Kingdom citizens. Okay. So that was chapter 12 for us. Any questions on chapter 12. No questions. Okay, if there are no questions, then we'll move on to chapter 13. Okay, so can think chapter 13 has 14 verses, I think. So can we begin reading chapter 13, please. So each of you can maybe read four or five verses. So can we begin reading chapter 13 Romans chapter 13. Romans chapter 13 verse one to five, let every soul be subject to the governing authorities for there is no authority except from God and the authorities that exist are appointed by God. They forever resist the authority, resist the ordinance of God, and those who resist will bring judgment on themselves. For rulers are not adhered to good works, but to evil. Do you want to be unafraid of the authority? Do what is good and you will have praise from the same. For he is God's minister to you for good. But if you do evil, be afraid for he does not fear this work in vain. For he is God's minister and Avenger to execute right on him who practices evil. Therefore, you must be subject not only because of right, but also for conscience sake. Thank you, Zerotholi. Can somebody read verses 6, 7, 8, 9 and 10, please. For because of this, you also pay taxes, for they are God's ministers, attending continually to this very thing.  Customs to whom? Customs. Fear to whom? Fear. Honor to whom? Honor. For no one, anything except to love one another. For he who loves another has fulfilled the law.  Love doesn't harm to a neighbor. Therefore, love is the fulfillment of it. Amen. Thank you, Subashish. Can somebody read verses 11 to verse 14, please. Do this knowing the time that now it is high time to awake out of sleep. For now a salvation is nearer than when we first believed. The night is far spent, the day is at hand. Therefore, let us cast off the works of darkness and let us put on the armor of light. Let us walk properly as in the day, not in revelry and rungerness, not in lividness and lust, not in strife and envy, but put on the Lord Jesus Christ and make no provision for the flesh to fulfill its lust. Amen. Thank you, John Paul. So in chapter 13, who do you think Paul is talking about? What is the main point of discussion? What who is he writing about? Any thoughts? You can unmute your mics and speak or you can even type in the chat. So who is Paul talking about in chapter 13? Referring to in chapter 13. The discussion is about what? Yes, thank you, Paul. Good to hear your voice. Thank you. Yes, so in Romans chapter 13, you know, basically has to do with how to relate to the civic government or civic or the government authorities. Other than first Peter chapter 2, this is the primary place in the New Testament where there is teaching on civic authorities. I think Paul writes to Timothy as well. You know, there is a little mention about government that he talks about there to Timothy when he writes to Timothy. So we know that Paul is writing to the believers at Rome and Rome was ruled by the Roman Empire who was in control. And the Roman emperors were ungodly people and they were very, very terrible. They were known for their treacherous acts, inhuman treacherous acts. And, you know, Nero was in power when Paul was writing this letter and he was an extremely wicked man. And he was so much against the Christians and so harsh, so inhuman towards them that he even used them as torches to light his garden. And he also used them as entertainment, making a sport of them, throwing them in the arena where, you know, they'll have this ravenous peace, hungry lions and, you know, animals come and make us, and it was like a sporting game for the people to enjoy. And we see that, you know, eventually even Jerusalem was destroyed by the Roman Empire around AD 17, okay. So the Roman government were not kind people, they're not godly, they were not fair, they were not just. So for Paul to write these words to believers at Rome is quite astounding. It's not Paul writing, it is the words of God, it's the Holy Spirit imparting to Paul. And hence, you know, even as we study it today and we read it today, we need to take it very seriously and we have to apply it in our own day and time. So verse one, he says, let every soul be subject to the governing authorities for there is no authority except from God and the authorities that exist are appointed by God.  So can we submit to a good government, if it's a bad government, we don't submit to them. What if the leader is inhuman, you know, treacherous, rude, so we don't submit to him.  And he says, for there is no authority except from God and the authorities that exist are appointed by God. And so the view that Paul brings to us is that, you know, those in governing authorities are appointed by God. And I think this was something that Church at Rome could be quite shocked to hear or read when, you know, when his letter was being read that, hey, you know, how can you say Nero was somebody who was appointed by God. But that's what the Holy Spirit reveals to Paul and that's what he's writing. In verse two, he says, therefore, whoever resists the authority, resists the ordinances of God and those who resist will bring judgment on themselves.  He's saying that, you know, those of you who resist the ordinance of God, ordinance means the institution of God. Because in verse four and verse six, he noticed how he refers to the civic authorities or the government. He calls them as God's ministers. This is something again would be very shocking for the believers at Rome that he's calling those in civic authorities, calling those in government, in authority, in position. He's calling them as ministers of God. So Paul mentions to us that the civic government are appointed by God, which is something which is too much for the Church at Rome to take. And then he says it's an institution of God. And then he says that they are God's ministers. Okay. So Paul is basically saying that they are instruments in God's hands. So he's saying regardless of the form of government, whether it is a monarchy or whether it is democratic or whether it is a dictatorship kind of a government, you know, whatever kind of government, no qualifiers, you know, he mentions no qualifiers here. And he says, and it's also wrong for us to put qualifiers. He says whatever form of government is there in place, we need to view them as appointed by God, you know, they are the institution of God and they are God's ministers. So sometimes as Christians in our present day and age, we can say, hey, you know, we have, we don't have a democratic kind of a government, we have a dictatorship kind of government. So I'm not going to, you know, obey or be subject or come under this government, you know, or I'm just going to follow a monarchy government because that is what this was in the Old Testament, God is king. And, you know, so I'm going to follow that kind of a government, not democratic, not a dictatorship, but we can't, you know, have our own qualifiers to whom we're going to submit to and who we are going to adhere to. But he says, irrespective of the kind of government authorities, you know, he says, we need to be subject to them, we need to submit to them. So, even as these governments have been appointed by God, they're the institution of God, they're God's ministers, as believers, what should we do? In verse one, Paul says we need to be subject to them. And in verse two, he says, don't resist them. That means don't oppose them, don't fight against them. And verse three, he says, do what is good. And verse seven, he says, render therefore to all their due money and respect and honor, which is something more difficult for the Christians. Okay, and even the Jews. Okay. So, first of all, the Jews would not be subject to the Roman government, they would resist them, fight against them. And then, you know, not even pay their taxes or respect them and honor them because they think the respect and honor is only due to God. But here Paul is saying, you know, we need to give them all their dues in terms of the taxes that we have to pay and also respect and honor. Okay. So, verse three. Okay, verse three, to verse eight, you know, he says, for rulers are not a terror to good works but to evil. Do you want to be unafraid of the authority? If you want to be unafraid of the authority, then do what is good and you will have praise from the same. For his guards minister to you for good. So he's referring to the government as guards minister. But if you do evil be afraid for he does not bear the sword and vain for if for his guards minister and Avenger to execute what on him who practices evil. Therefore, you must be subject not only because of Roth, but also for conscience sake. So he's talked about a great deal about conscience in chapter one. Okay, so he's and also in the other chapters. And so he's talking about for conscience sake here. He says, well, because of this, you also pay taxes for they are guards ministers attending continually to this very thing.  In, in verse four, in verse five, in, in verse four, and also in verse six.  He says, Oh, no one accepting a love one another for he who loves another has fulfilled the law of fulfill the law. Okay, so even as we look at these scripture passages, you know, let's consider some questions with regard to governing authorities. So in what sense are governing authorities appointed by God. What about unjust corrupt and wicked leaders. So we can ask this question.  Are they also appointed by God, you know, now we see throughout history that they have been different kind of leaders. We've had kings rulers civic leaders, etc.  The first thing is that God is instituted governmental authority. We studied this in the kingdom of God, if you can remember, you know, that we have all been placed under authority. Okay, and we need to recognize that, you know, we have been placed under authoritative or governmental structures in each and every area of our life, whether it's in family, whether it's in the local church, or it's in the body of Christ, or it's in the workplace or in the society. We all come under an authority, a governmental structure, and we recognize that all authority flows from God, and God has instituted authority structures through which his purposes are unfold on the earth, whether it's family, you know, we saw that there is a governmental structure that God has ordained in the family, where the husband and wife, even though they are equal in God's sight, they have equal access to word of God, the gifts, the functions, to everything, you know, the love of God, everything. But yet in God's authoritative structure of God's government in the home, we think that man is the head. So also in the church, you know, all of us are saved by grace. We're all heirs of God, co-heirs with Christ, and we all have the right standing with God. All our righteous God loves us all the same, you know, but yet in the church, in God's governmental structure and authority in the church, he has placed leaders, pastors who are in charge. Okay. And so we need to submit to the government or God's authoritative structure or God's government in the local church or in the body of Christ. So also in the workplace, there is leadership. So also in our society that we live, there is a government and that is God's governmental structure of God's authority that he has placed in the workplace and in the society. So in every level, God has placed us in authority structures and each of these authority structures are from God and God has permitted these and instituted them. Okay. And through this, God is fulfilling his plan and his purpose. Okay. We'll stop here. We'll continue in the next class. Anyone has any questions? Any questions? No questions. Okay. Thank you all for joining class. Have a blessed weekend and I'll see you on Monday and we'll continue studying about Romans chapter 30. Thank you, everyone.


So how's the conference going for everybody? I feel like I should get up here and whoop, cheer, right? Yeah, a couple of good talks I've seen so far, so that's good. Hopefully this will be one of the decent ones. So I'm going to talk to you today about Squirrel and Apache Accumulo. So I am CTO of Squirrel. Squirrel is a startup focused around big data with an emphasis on security. Accumulo is an Apache Software Foundation project. And we're going to go into details on how they work. We're going to talk about some of the motivation, particularly in the real-time perspective. I'm going to try to derive some of the elements of what's needed in a real-time database to support this stuff. We won't go too deep on that part, but we will go pretty deep in Accumulo technology. And hopefully you guys will be able to go code up a big database after this talk. All right, so again, two halves of real-time. We're going to talk about data-driven and query-driven real-time analysis. We're going to talk about Accumulo and Squirrel. And then in particular, since we have a big emphasis on security, I'm going to talk about data-centric security, how that fits into big data analysis in general. We'll talk about some table designs to support a variety of applications, given this context of real-time and security and all that. And then I'll share some performance benchmarks so you guys can get an idea of how this actually works, how well it works. OK, so just to derive this definition of real-time, I'm breaking things up into two different halves. So on the left, you see the data-driven side. In data-driven real-time, real-time generally means you're trying to reduce the time between an event happening and the time that you react to that event happening. So this is typically the realm of stream processing engines. Things like Storm are in that category. I've got Twitter showing up there. IBM has InfoSphere Streams.  Then there's this other half, which is query-driven. And in query-driven, the real-time typically means reduce the amount of time between ingesting data and querying that. So an event happening and the ability to see that event affecting the results of the query. And there's sort of a connection between the two. So on the data-driven side, many of the challenges have to do with increasing the state space available. So if I have to make a decision on the fly and I can only look at what fits in cache on the chip, I can't bring in a whole lot of context. But then if I can query out to a database and get an idea of when was the last time I saw a similar event, what's the background model behind it, is it anomalous, there are a number of those types of queries, which I would want to be able to enrich the data as it streams by. And then on the query-driven side, typically there's an ETL process. So query-driven is often complemented by data-driven capabilities of processing data, transforming data, and contributing to a database. And the way I see it is there's no SQL database layer. That's really what kind of combines these two has. So people moving to denormalize data models to bring data together so that you can ask very quick low-latency questions of a very rich data set. That's tying these two halves together. So here's my basic pseudo architecture for query-driven and data-driven real-time analysis. So here we have data flowing in from the left. The data at the same time gets put through a stream processing engine and gets stored in some type of database. I've just got that labeled as no SQL plus for today. And then there are a whole bunch of interactions there. So on the right side we can take actions, we can display dashboards, we can support operational and exploratory analytics on it, like through interactive analysis tools. And each of those things is gonna use a different set of interactions here. So if we just go through that, effectively we're talking about as data streams through the stream processing engine, we're gonna enrich it using no SQL queries, again, denormalize model. Results of stream processing engine often get written to the no SQL database to give you that longer-term storage of some transformed version of the data. It might be kind of a map into it or a graph view of it, link extraction into de-extraction, these things fit into that model. And then all of these things flow into the human interaction. Could be human, could actually be automated analytic on the right-hand side. In this particular talk, we're not gonna focus on the whole space, we're really just gonna focus in on that no SQL part and in particular, a cumulo and squirrel as an implementation that supports really all of these types of interaction. All right, so, a cumulo and squirrel technology. So I'm just gonna kind of dive deep into what a cumulo is. For the most part, a cumulo is a sorted key value store that's derived from Google's big table paper.  So it's in the category of HBase and similar to Cassandra in some ways. But really what we're storing is sorted key value pairs. A key in this case is a structured element. So we're trying to take Hadoop and provide some structured interaction with it. That's kind of the general space of no SQL. So let's just go over a couple of examples here. Keys in a cumulo are sorted lexicographically and hierarchically. So I can group data by rows and in these examples, everything shares the same row identifier. So this is a row about John Doe, even though in this chart we're displaying four rows. We've considered this one row inside of a cumulo. A bit of a nomenclature issue there, but yeah, anyway. Things are then grouped by column family. So I've got notes and test results in here. Column qualifiers show up as basically our ability to de-normalize any data we want together and extend rows, support flexible schemas and support an arbitrary number of columns in a given row. One of the things that makes a cumulo unique is the addition of a visibility label. And I'll talk about the overall security architecture and where this comes to play. But that's inside that core data model, that core key value store, that visibility label makes a cumulo unique. And then effectively we map these things into values and the value is just an arbitrary byte array. We can provide higher level semantics on top of that in many different ways. A lot of people work on that. I'm not gonna dive too deep into that in this talk. But there you have it. We're storing key value pairs. Any questions on that? Okay. All right, so one of the things we're trying to do with that is scale up. So basic computer science approach to scaling is divide and conquer. In this case, we're dividing by partitioning our key space. So we wanna store sorted key value pairs. We can break those up into contiguous chunks of keys. Those things are called tablets. And that's what I'm displaying here in the white rectangles. So here's a table at the bottom. This is my table, Adam's table. And I've got two tablets. So I can break up my data into anything from the negative infinity key to things. And then anything greater than things goes in and out. So I split that up. I've created two, what we could call units of work that can then be distributed throughout the cluster. And I can do that with all of my tables, sort of keep a set of tablets. Those tablets, I need to keep information about them, metadata about the tablets. Specifically, what are the files in HDFS that are associated with those tablets? Where are they being hosted? A little bit of life cycle stuff and dealing with timestamps. There's a little bit of extra metadata around that. Those things are stored in a metadata table, which itself is a table in a cumulo and it's broken into tablets. And the metadata about those tablets are stored in a root tablet, giving us a three-level hierarchy of units of work that are distributed throughout the cluster. And then I can just keep a well-known pointer to that. It's a very nice scalable model, gives us that root of scalability of a cumulo. And it's all really derived from that big table model that Google published. So from a process perspective, we can take those tablets and we can distribute them across tablet servers. So a given tablet server will host a subset of the tablets. Clients on the right-hand side, our applications here, read and write directly to the tablet servers. It's sort of a shared nothing architecture in that you don't have to go through a single point to do all of the interaction there. Instead, you can go kind of directly to the machine that is responsible for hosting the data. And then there are a series of background processes here that manage data, manage availability, balance load, assign authority, delegate authority through the acquisition of locks, distributed locks in ZooKeeper. And this is the basic architecture here. So effectively what we have is a series of tablet servers. We can distribute through a large cluster. We've scaled these up to thousands of nodes and it scales up nicely and gives good parallel performance across them. So zooming in just to one of these tablet servers hosting one tablet, we have a situation here where we're really looking to support rights coming in at a very fast rate and reads coming out also at a very fast rate. And we're trying to minimize the time between rights showing up and reads coming out. So this is where we're tying back into that real-time behavior. Really, if we can write data and within a millisecond have it show up as the result of a query, that's real-time. So this is how we do it. Rights come in, we write them to an in-memory map. At the same time, we write them to a write-ahead log which is on disk. And once it's in the in-memory map, reads will see that data. The in-memory map is a sorted binary tree, a balanced binary tree. Again, since that's in memory, it supports very fast random IO. So if key value pairs are coming in in random order, I can very quickly get them into a sorted order to satisfy queries. The other thing that we're trying to optimize here is our impact on disk resources. So if every time a key value pair came in, I had to write it to a particular place on disk. I'd be seeking disk all over the place. I'd already be increasing my latency to something like the eight millisecond standard seek time of hard drives, which is, that's big. So instead of doing that, basically I'm writing sequentially to a write-ahead log. And then when my in-memory map fills up, I write sequentially to a sorted index file, something we call an R file inside of a chemulo. But the sorting happens here, this is a sequential write.  If I have too many of these files, I basically have to do a merge at query time to bring that data out. That becomes more expensive, so I want a smaller number of files. So I have a compaction operation that basically compacts those together. So this overall flow that we're looking at, that I just took you through, is the log structure merge tree technology. Goes back to the mid-90s. Google adopted it for a big table. We've coded our own version of it for a chemulo. But it's, again, that ability that allows us to do random IO with low latency between ingest and query. And minimize that impact on disk resources. So along with that, we have these operations, minor compaction, merging or major compaction, and scan. All of these things are places where we are streaming key value pairs in sorted order through the processor, effectively. And they're very natural places for extending our analytical capabilities to do real-time analysis. So this is another thing that makes a chemulo unique is this mechanism here called the iterator tree. So it writes flush to disk. We take them through the iterator. That iterator can do operations like filtering, aggregation. On the scan time iterator, we can also do some types of joins even that are localized there. So I'll take you through a few examples of that. Here's one of them. So assume I'm doing word count. I have a corpus of documents. I want to basically generate key value pairs where the word is the key, the value is the number of times I've seen it. Effectively, what I'm doing is if I have the same word repeated multiple times, I can calculate a sum across the values and then my aggregate view of that after it passes through the iterator is that the word count, effectively. So this type of operation, this type of aggregation operation, since we're operating in these compaction time scopes and in the query scope, we can provide both consistency, always give the same answer, always give the most correct answer at the same time as we're piggybacking on this efficient use of hard drive. So effectively what we're doing here is we're avoiding read, modify, write while still performing analytics that are traditionally performed using read, modify, write technology. So one way to do word count, read the previous value, increment it, write it back out. We're not doing that. We're batching things up together and sort of aggregating them on the fly through the log structure merge tree. So later on, I'll show you a performance number of why that's orders of magnitude better performance than read, modify, write. So effectively the iterator framework here allows us to do a huge number of operations and this is in fact where most of the logic for just dealing with key value pairs in general and accumulo resides. So all of these things are actually implemented as iterators inside of the tablet server. So it's not just analytical capabilities, it's also just kind of core management of key value pairs. And in fact, that's where a lot of the security is implemented inside of accumulo as well, incidentally. Okay, so let's look at latencies here. The way I write data to accumulo is through this batch writer mechanism.  Those hit the tablet server, go into the in memory map. At some point they get scanned. The scan also brings in data from files that exist there and then on the client side, on the read client side I have another scanner over here. And the time to ingest into the in memory map, there we're talking about a millisecond on the order of the latency to scan that data from the in memory map into scan iterators and the R file into scan iterators on the order of a millisecond. If we have a lot of seeks, it can be larger. If we have caching, it can be smaller. But again, on the order of millisecond. And then querying it out of that, again on the order of millisecond. So, end to end our latency is very much real time. Not necessarily real time from the perspective of making trading decisions, but it is real time from the perspective of analyzing the most up to date view of the world from a human analysis perspective. So, a big thing that we're trying to do here is really scale this up and get as much throughput as possible through this type of channel as well. So let's just look at the throughput from this perspective. And this is what I'm trying to do here is build the case for avoiding read, modify, write. So from that perspective, a cumulo, as we've written it, since we do these kind of batching things up together and efficient pipelining of all of this, we can actually support on a per node basis, upwards of 500,000 entries per second in just into a node, right? Across a cluster, multiply by the number of nodes in the cluster and that's the kind of performance you get. A query time, it can actually be a little bit more efficient and get about a million entries per second. Somewhere on that order of magnitude. If we were doing a client side read, modify, write operation and we have to sort of read the previous value, compute some new version of that and then write it back out, already we're introducing millisecond order latencies into a single write operation. So that actually becomes quite a challenge to provide greater than a single thousand entries per second, much less, 500,000 entries per second per node. So with that read, modify, write, already you're greatly reducing the rate at which you can ingest and query data in the system. So avoiding this, great, if you don't have to do read, modify, write, if you can just do inserts and sort of fire and forget, batch them up, that's great. With the iterators and with what I'm talking about there, what we're trying to do is increase the types of analytics that you can perform without going to a read, modify, write, type solution. So that's where this aggregation on the fly or aggregation through the log structure merge tree becomes a very useful tool supporting high throughput real-time analytics. Yeah, so we haven't really tied this to a particular use case yet, right at this point at this point in the talk, we're just kind of talking about abstractly what's the technology for that. But all of this actually ties into higher level concepts like search, log analysis, cybersecurity applications, graph analysis, all that. And I'm gonna go through a lot of that. Yeah, like millisecond latency type things are good. Microsecond latency type things, we can't support that with this type of architecture. We're optimized for disk-based access, right? Storing data that doesn't fit in memory, that type of thing. Okay, all right, so effectively what we've talked about is this accumulo layer here. My company is Squirrel, and where Squirrel sits is in this stack, right? So we've got HDFS at the bottom, accumulo stores its data in HDFS, provides that sort of key value IO, provides that low latency key value access with high throughput. But again, like you mentioned, this is still a pretty abstract concept. We're dealing with key value pairs, sorted key value pairs. How does that translate into the application space? What we're doing with Squirrel is to take a series of design patterns and table structures for organizing those key value pairs and bringing that into things like JSON document, ingest, and output, right? Graph analysis, did anybody go to the Neo4j talk? It was a good one, you shouldn't have missed it, but you did, anyway. We do things like aggregation, like I mentioned, very efficiently using that compaction time aggregation and this is actually exposed through a subset of SQL. So group-by type queries in SQL were very efficient at that. And then search, right? Search in general, this is talking about building indexes. So if you recall, we have the stream processing engine and the NoSQL database against the NoSQL database. We have the operational and exploratory applications. That type of search capability, and what we're exposing here is Lucene style search. That's really critical, having the ability with low latency to query with rich semantics into that very large data set and get the most up-to-date answer. That's really what we're talking about doing here with SQL. Okay. All right, so let's just, we'll take a little side tour here into data-centric security and then we'll talk about the table designs that really enable SQL. Okay, so data-centric security, simple definition of this is you have a system in which data carries around with it metadata or really elements of provenance information that is required to make decisions about that policy at query, sorry, policy decisions about the releasability of that data. All right, so I have a set of data, I have a set of users. Some of those users can see a subset of the data according to policy, but I need to be able to make that decision very quickly, supporting these high throughput streams of data, scanning key value pairs out of the database and filtering it based off of those security requirements. So effectively you can think about this as I have a database of key value pairs, I've got two different users, each of which can run the exact same query and see a different view of the data. All right, so this one gets an anonymous view of the name while this one sees the name as Jones. All right, this one sees the age of row one while this one just doesn't see that data. Those types of things, fine-grained access control that are all back-ended by squirrel and Acumula. It is cell-based, it's kind of the intersection of those, but it's a little bit deeper, so you can have two different rows that would have the same visibility and two different columns that have the same visibility, but the points of intersection there can just have arbitrary different visibility. So it's more expressive than the combination of row-level security and column-level security. Does it do what? Versions of it. Yeah, there is some versioning of it. There are ways of expressing that in it, yes. Okay, so let's just focus in on this particular example here. Whoops, okay, anyway, push the wrong button. All right, here again, we're looking at a row, which is John Doe. John Doe has some information about him. Primary care physician notes. Maybe the visibility of those is only the primary care physician of John Doe can see those notes. So in this particular case, we're looking at a healthcare example and just search over healthcare data. In the US and in many other countries, there are laws that protect that type of healthcare information. In the US, we have HIPAA law, we've got the Affordable Care Act. All these things create requirements like if I wanna see somebody's electronic health record, I have to have a relationship with them. I have to be their care provider and I have to, you know, there are sensitivities associated with this as well. So things like the fact that you have AIDS, right? Maybe even your primary care physician can't see that because it's protected at a higher level. There are certain classes of information there that provide kind of this rich set of policy and rich set of interactions there. And that's the type of thing that we can express inside of that visibility label, right? We can support Boolean expressions there as well. So maybe John Doe can see his own cholesterol test results as well as his primary care physician. And his psychological data can only be seen by his psychologists. These are the types of things that are directly derived from legal restrictions in many industries like banking and consumer internet, there's privacy policies around the data. All of those things really, if you want to share this data amongst a large group that have diverse access authorities into that data, that's where you need that fine-grained access control. In this model we have, you can think of this as we've organized our data into some key value pairs and then we stick labels on those key value pairs according to who can see them. So it's not necessarily a row per roll, but the role actually plays a part of defining the key value pair itself, right? That's right. And in fact, getting away from encryption, barring any kind of like homomorphic encryption which will allow you to do some basic analysis on it. This is a way where you can do a much richer set of analytics while preserving that privacy. And we can tailor that towards bringing in large groups of people with diverse access authorizations into a single database rather than having a whole bunch of separate databases for those separate information sets. Yes, and a lot of what we've done is, let me jump to the next slide here, provide an ecosystem in which this is a manageable system of rules instead. So, right, so how do you populate the visibility column? Effectively, this is what we're talking about in this view here. Here's our data-centric security ecosystem. Typically we have data and policies that show up that they're already there. The data shows up, the policies describe how that data can be used. The end-users exist, there are authentication mechanisms and attribute databases set up around those. These could be LDAP, Active Directory, something like that. There's a diverse and growing set of applications. So we don't have a single application that we're really designing for, but it's a growing set. At our core, we've talked about the technology to create a filtering mechanism and a labeling storage mechanism that stores those labels alongside the data, but there are a couple of key elements here, the labeler and the policy engine, and this is a lot of what we're building in Squirrel to really manage the label sets around this. So the job of the labeler is really to take some provenance information and take some perhaps schema information around the data, maybe even derive from the content of the data, things like sensitive diagnoses in healthcare, and stick the appropriate label on the data according to that. But it has to do that in a way that's relatively immutable. So if I take data and if I label it with, if I label my electronic health record with my doctor's name and then I change doctors, do I have to go back and relabel my data? If we're storing petabytes of information, that relabeling, that's hard to manage. So effectively what we're doing here is we're separating this policy into immutable elements of policy and mutable elements of the policy. And that allows us to create a more manageable structure, which still has a smaller set of labels, but allows for that user attribute to change and the mapping of that policy and user attribute to the entitlements of that user to change dynamically at query time. So effectively that's what we have here. We have tools inside of Squirrel to do both of those elements of it. And really I think this is a critical part of big data and no SQL, anytime you have those types of diverse security requirements. Yeah, so can you bypass this by going to those lower layers of the stack? Very good question. We have encryption implemented inside of Accumulo so that even if you can read the underlying data from HDFS, you can't get access to it. And all of these mechanisms for restricting access and authentication, those are shared between Squirrel and Accumulo. So you cannot bypass these mechanisms. It's mandatory access control. Yes, and that's where actually this key management comes in. So we actually do things like separating the key from the cluster even. So we can do remote unwrapping of session keys and really provide very strong guarantees of the security. A big part of that is to push those security requirements, that security enforcement mechanism into the infrastructure itself. So you can trust that, you can build your accreditation just on that infrastructure so that even though this set of applications is continually growing, the mechanism where you verify that that application is performing the right filtering and performing the right restriction of data, that's a lot easier to verify in this type of setup. That's really the promise of data-centric security in general. It can be either. Typically what we do is a symmetric key that's wrapped by an asymmetric key and then that's stored for remote unwrapping. But there are other ways to set it up that makes sense. So we can change keys over time but that key has to be accessible to the entire key minlow cluster in order to get us recovery where if a tablet server goes down I have to migrate its tablets throughout the cluster, all of them need access to essentially that key. But we can change those keys over time and cycle them and it ties into the external key management and remote unwrapping of keys. That's effectively the keys that we use on a profile basis with kind of a one master key at a time. Okay, so let me jump off this security stuff and we'll try to get through some more of this table design elements here. All right, so table design. So we have key value pairs, we have to take those and sort of organize them into a way that makes sense in an application. So this is a diagram that's a hierarchical decomposition. And in this case I've just taken a particular set of data which is focused around people and attributes, purchases and returns of those people. And I've kind of created this hierarchy in order to show a denormalized view of that data. Here's how you would denormalize that. And as we do that we can take different layers in this hierarchy and we can assign them to the different elements of our key value pair. So here's a, as a row we'll throw a person in there and then the column family will have this set of specific elements. And if I take that and if I instantiate this, what's in fact a schema here, I plug in who the actual person is, I plug in the values associated with it and I get a forest here where if I take any traversal of a tree in this forest from root into leaf, I get a key value pair. So those are my key value pairs, that's what I stick into, a cumulo. By doing scans over it, I can get the entirety of everything under bill by a range scan and it's a very quick mechanism, all that stuff is stored locally, supports high concurrency, supports low latency, ties into that interfacing with the data-driven real-time system. As well as follow on types of bulk processing that are also supported by the denormalized data model. All right, so this is a very basic model. We've created several other design patterns on top of this and here's another one. This is a forward and inverted index model. So in this case, I take a UUID, just some identifier for a document and underneath it I can group things by type and field within the type and then term within the field. So effectively, I have a collection of field terms that are grouped under a single UUID, right? That's my forward index. If I wanted to query this, basically I can take anything from the prefix of the key and create a range that just gives me the information, just gives me the key value pairs associated with that prefix, right? So effectively, if I already know the UUID, I can find all of the field term combinations underneath that. If I don't know that, if in fact I want to query for anything where field foo is term bar, in that case I need an index in order to be able to do real-time lookups, low-latency lookups. So that's the inverted index. I take the term from here, I stick it up here, I put the UUID under that and then throw the type and field underneath that. The UID is essentially a remote reference to that forward index and now I have a basic indexing technique. And this is the core indexing technique that we use for a number of customized indexes on top of it inside of Accumula. Yeah, so term in this case could be just text.  Absolutely, right? So in fact it's not a single design pattern that we're gonna use and Squirrel is actually a collection of these design patterns where if you were building an application you might create a bunch of design patterns and stick those in a bunch of Accumula tables and use those to satisfy the needs of your application. We've done that with a bunch and we've exposed them in that higher level API inside of Squirrel. So that's what you get out of it. Yep, so storm is a stream processing engine, again on the data driven side. Storm would be used to maybe reach back into the query mechanisms that we provide here. So it's a compliment to Squirrel. All right, so let me move on here. I wanna get to the interesting stuff which is the performance results. That's what everybody's waiting for, right? Okay, all right, so here's what that looks like from another perspective. I have an event, I map that to a single place in the forward index or the event table as it's called here and then I generate a bunch of index entries. In order to support the real time, effectively, I'm just generating a bunch of key value pairs as I ingest this and I'm throwing those key value pairs at the database and letting it manage them. On the query side, then I can take a particular term, look up the one place in the inverted index that has all of the references to that term and potentially go back to fetch the documents associated with those UUIDs as I get them out. And this is actually one of the places where storing a digest of the event itself inside of the index, there we're denormalizing a subset of the information associated with that event so that instead of having to do that secondary lookup all over the place in the event table, we can just get all of the information we need from that one place in the inverted index. So it's a pretty powerful design pattern there. We can extend that, right? We can do a bunch of custom indexing on top of it. So here's a case where we'll take a geohash. So maybe we have latitude, longitude, and depth. We interleave those coordinates to create a geohash. That thing becomes a one-dimensional coordinate inside of this three-dimensional space. Let me stick that in there. Do range searches across it. Again, that's a very efficient indexing technique. One of the other things that's pretty natural in this space is graphs. So the next few slides are gonna be discussing a thing called this D4M 2.0 schema. So this is some work done by MIT Lincoln Labs. And effectively, it's taking a chemo and treating it as a graph. So we have something like a t-edge table here. This one is applied to Twitter data. So we're gonna have edges that take the idea of a tweet, gets stat information, time information, user information, word information, and link these together. So you can think of these as RDF triples. And in fact, we store the transpose of that as well. The Lincoln Lab guys like to talk about this as matrices, sparse matrices. Those and graphs, very similar concepts. One of the things that they've done inside of the D4M 2.0 schema is to create an edge degree table. And in this case, this is one of those tables that has the aggregation built into it. So if we take a particular value inside of a stat and store the degree, there we can see how many times did we see that stat across, that particular stat across all records in there. So that gives us some statistical capabilities. It's a count table. It's basically used for query optimization. And then storing the text of the tweet itself. That's also a mechanism that we use here. So another view of that just from a matrix perspective. We've got that edge table up here as a sparse matrix. We store that, we store the transform of that table. That gives us forward and backward edge traversal. And then those other two tables I mentioned there too. Okay, so that's a small collection of table designs. We've gone through a huge number of them in the past. But that's the type of technique you use when you're building an application on top of a cumulative. So let me just jump into some performance benchmarks here. This one is one done with that D4M 2.0 schema as applied to the graph 500 benchmark. Have you guys ever heard of the graph 500? So it's effectively a benchmarking suite around graph analysis where you create a large graph, insert that and then do queries on top of it. So this is just an ingest performance benchmark that they did on an eight node cluster with 192 cores. So what they did was they varied the number of processes, basically the ingest processes that were ingesting into that fixed accumulo size and saw that they were able to effectively get up to about four million entries per second on an eight node cluster. So that type of performance is immensely better than published results of other databases like Cassandra and HBase. This is into accumulo hitting disk. It's not just limited to memory. That's sustainable over long periods of time. Okay, another benchmark that's done in terms of scalability, NSA recently gave a talk at CMU where they discussed using accumulo as a large graph store. So in this case, they stored, again using the graph 500 benchmark, a 70 trillion edge graph, which is about a petabyte in size on a 1200 node cluster. And you can see this is actually just a scalability of traversed edges per hour in this case. But 70 trillion edges scales up linearly from these smaller graphs. And they were able to do things like componentization of just enormous graphs using this type of technique, storing graphs inside of accumulo. Okay, and then I just have one more benchmark here, which is this is the difference between read modify write strategy and iterators or combiners using accumulo. So let me just talk about this read modify write strategy in HBase for a second here. So this particular benchmark is just looking at a single node instance of HBase versus accumulo. HBase has a highly optimized read modify write strategy, which is what they call an upsert, where if an element is already in memory, it'll look at that, change it and write it back to the exact same spot in memory while holding a lock. So doing that, they're able to get thousands of upserts per second on a single node, which isn't bad, but when you compare that to the increment rate that you can get without doing that read modify write strategy, batching things up, sorting them together, that's, you know, it's orders of magnitude difference. So avoiding read modify write, do it at all cost if you're trying to get real time. Another thing that you see here is the curve falling off here. This is where things fall out of memory, no longer fits in the right cache inside of HBase. Acumulo had the same size right cache, but regardless of whether we're hitting disk or in memory, that's essentially, you get constant performance across that, so. So there you have it. I'll take any questions from there, and I think we're a little over time, so we'll just take a couple, go ahead. Yep, so effectively we're able to introduce encryption with only kind of single percentage hits to throughput in there, and we align it with all of the organization of data that's already there with the file formats that are already there, so it's pretty small. With Squirrel, there's additional organization ripping apart documents into key value pairs, that type of stuff. There is some overhead in that, but again, it's fairly linear, and we preserve really the scalability, we preserve a very large portion of the performance with that as well. Yeah, so since we've done the encryption, the question is basically, since we're encrypting, does that limit how much we can do in the analysis space? And this is a key differentiator between us and other solutions. We rely on that fine-grained access control mechanism to really provide the restriction, and encryption essentially for us, it narrows down the trust boundary, so that a cumulo can still read all the key value pairs. It's not encryption outside of a cumulo, excuse me. So what that gives us is, as long as we are using a cumulo key value pairs to store our data and to store our indexes, we can distribute those types of index lookups and a lot of the analysis to the cumulo cluster and allow it to do those types of analytical operations while still preserving quite a bit of security. All right, well, thanks a lot, folks. I'll be sticking around if you wanna ask more questions.


Good evening everybody. I hope you've had a great day. Many of you are at home for the first time and as we begin to adjust to the new normal in our lives. Thank you for coming back and checking in with us today. We'll continue these briefings at 6pm every day for the foreseeable future. You can also get this live streamed on the City Cable channel. As you recall, yesterday we announced a mandated reduction in capacity for public buildings, restaurants, bars, and many others to 50% of their occupancy and a maximum of 125 people at any time. In each step of this process, we've been consulting with the experts and we've been looking at doing this with our community and not to the community. We know these are incredibly unsettling times. I mentioned yesterday these are times with a lot of fear. We're trying to make it better. Today the fire chief and I met with the head of fire prevention and life safety and he reported good compliance with yesterday's mandates. No overcrowding issues, great social distancing protocol, implementation of cleaning and sanitation products and practices, and many restaurants and bars have already transitioned to carry out or delivery. Everybody knows this is a fluid situation that's continuing to evolve. For that reason, I'm announcing that within the next 24 hours you will see the City of Fort Worth enact tighter restrictions on public spaces and public buildings. Specifically, we will be announcing that we're moving all bars and restaurants to take out and delivery only. We are closely evaluating other guidelines that the CDC has recommended. We do need to make improvements in our social distancing plans that are vital for all our restaurants, for all our residents, and grocery stores, pharmacies, and others really need to think about social distancing. We're encouraging our grocery stores to become more diligent on social distancing. Everybody needs to be able to shop, but you need a great distance between you. We will be likely directing code and fire inspection staff to focus on enforcing social distancing in high traffic areas such as big boxes and grocery stores. These steps are critical as all of us move to keep this virus in control and to flatten the curve. Code and Fire Inspection staff has already been proactively talking to our business establishments about our current protocols and about potential changes for the future. Fortunately, many Fort Worth businesses and residents have made voluntary and significant changes in their daily life. You are practicing social distancing. You're staying at home with your family, but we need additional efforts. For you parents, talk to your teenagers. If you have college students, talk to them. They need to be a part of the social distancing. It's critical that everyone practice this if we're going to slow this virus. Once again, we are urging everybody to take personal responsibility.  Let me remind this community that we are not doing this in a vacuum. We are listening closely to public health, to medical professionals, and to the CDC, and we're weighing out what works best for our community, the city of Fort Worth. Educated Decisions is these critically changing, constantly changing times. Brandon Bennett, our Code Director and Public Health Authority is with us tonight, and I'm going to turn it over to him to talk to you just a little bit about a couple of issues. Brandon. Good evening. I want to assure the public that there are a number of efforts that have been occurring both in the public and behind the scenes, particularly with our restaurant and our bars. And so we knew a week ago that our places of public gathering, particularly restaurants and bars, were some of the more high risk areas. And so we started providing helpful information, providing some guidance. You saw that from the national level and the regional level, that we started saying you need to start bringing your numbers down, start helping with social distancing. And then over the past few days, you've seen a number of declarations that have come out both from the county and from the city, forcing those numbers, gathering numbers to be even lower. And one of the things we saw today, very concerning, is our restaurant tours have done a really good job. Working with them, we've been able to work through the health laws to where they can now provide healthy food as a delivery, as a takeout, as a curbside delivery, and those type of things. And then we're seeing the restaurants that have fewer patrons in them. One is the public has done a better job of social distancing, and then the restaurants have done a better job with controlling the amount of people inside the restaurant. But what we're seeing is now a lot of people that are going to the malls and hanging out at shopping centers, people that are going to grocery stores in masses and not practicing good social distancing. And so we wanted to make sure tonight that everybody understood that there was nothing magic about bars and restaurants, and if we shut them down, all of a sudden everything's okay. They were chosen because of the way that people gather together and socialize. And now that we are addressing those and shutting those down, it doesn't mean that it's okay to gather and socialize at other areas in the city. That no matter where you go, no matter what you do, you have to maintain that six foot of separation. And like the mayor said, the best thing that you can do is limit your travel, stay at home where you can. If you have to go to work, make sure that you practice the six feet of social separation. Wash your hands. If you're sick, stay home.  These are the things that will help us get through the highest risks of this viral transmission. Thank you. Thank you, Brandon. Thank you. I was at the grocery store today and I was doing pickup. I ordered my groceries online and picked them up today, but I was shocked at the number of people who were going in and out with just one or two items, but particularly elderly folks. I qualify as that category I expect, but I'm talking about people who didn't need to be out. If you've got a neighbor or a loved one that you know is going to have to go to the grocery store, offer to go for them, particularly offer to order them if they're not internet savvy. You guys are great at volunteering and helping people. Remember, those around you might need your help. I'm going to introduce you to Fort Worth Fire Chief, Chief Davis. Now he's going to talk a little bit about specific public health recommendations. Jim. Thank you, Mayor. Good evening. As far as the public health recommendations, they continue to remain the same. We're asking everybody in the community to remain diligent about social distancing, about hand washing, and about barrier protection, making sure that when you sneeze that you're not doing it in an open but into a tissue, your sleeve, and then properly discarding that after you've used that. Again, those are consistent recommendations that have been from day one that we've been working with this. And we thank everybody for their cooperation. As the mayor said, our fire prevention folks have been out in the community. They've been making sure that as we are prepared to aggressively enforce the fire code, there's been amazing compliance today, and we're very happy with everything that we've seen from the community. And so we thank them for that. The City of Fort Worth in addition has worked with Medical Direction to put together a guide for the public should they become ill. We know there's a lot of questions around what we should do or what I should do if I become sick.  When should I call my doctor? The guide will be put up online here within the next day, and it gives folks a guideline to follow in order to help take care of themselves. A couple things about it that I would really like to point out is if you feel you need assistance to call 911, please make sure that you do so. We're not asking you not to call 911. But what we are reminding you that as an abundance of caution, we are slowing down the process is about making sure that we're asking the proper questions to make sure we get you the right response. And it might seem a little frustrating to some that we're asking too many questions. Don't think that helps not on the way, but the questions will continue to make sure that we have the proper information that we need to put you in a good position and our providers. I want to personally thank the first responding agencies of the Fort Worth community to include the Fort Worth Fire Department, the Fort Worth Police Department, and the EMS providers of MedStar. They are working very hard to make sure that they are providing good quality care to you. But as this situation continues to unfold, you need to understand that there is a possibility that you will see EMS providers that are dressed fully in protective equipment to include gowns, masks, and gloves. And whether or not you feel that it's needed, we're going to take that precaution to protect us and to protect you as the resident of our community. It's also a possibility that you will not be transported to the hospital. Just calling 911 for an ambulance ride does not necessarily mean that you'll be transported as this continues to develop. And you'll be able to find all that information on how you take care of yourself online here through this document. So again, I want to thank everybody for their cooperation with the Fort Worth Fire Department. And we are continuing to stand with the other departments within the city to provide a good quality service in this time of need. And we are dedicated to making sure that you are taken care of in a safe and effective manner. So Mayor, thank you. Thank you. Thank you, Chief Davis. Chief Davis, you do need to know that our first responders, Fire Police, and then our Code Department too, are working really hard. If you see one, thank them for what they're doing. The hours they're putting in are amazing. I happen to have with me today Dr. Tim Martin, who's our veterinarian at our animal shelter. Dr. Martin, the questions come up several times today. What about my pets? And I got to thinking about that. I have two dogs and a cat, Bear, Molly, and Sophie. And what would happen if I were home sick with COVID-19? Can my pets catch it? Well, Bear, Molly, and Sophie are going to be just fine, Mayor. And all of the rest of our four-legged furry friends are going to be just fine as well. The one thing that I can say with absolute certainty is there is no evidence that pets can either get sick from this virus or transmit it to people. So we should all just embrace our pets. The other thing I can say is if you find yourself home during this time of social isolation, that we're making it super easy at the city shelter to adopt and foster dogs and cats that you can love them, and they'll give that love right back to you. So this is not a time to be concerned about our pets. We always want to take good care of them. But this is a time that our pets can really give back to us and be that social connection that we may be losing because of social distancing. Thank you, Dr. Martin. I'll tell you, my sweet Sophie came from our animal shelter and she's quite a pistol. I couldn't do without any of my pets. So I want to close tonight, and I just want to thank you all for helping us get through this, for changing your lives. Most of you have made major changes in your behavior and your actions will save lives and certainly save suffering. To all of you young folks who are going out for St. Patrick's Day tonight, for your green, you might not have the luck of the Irish. Stay home, stay at your friend's house, drink that green beer with them. We need everyone to be a part of preventing the spread of COVID-19. Let's come together while staying apart. More to come tomorrow. We'll see you then.