Hello Hello Writers, I'm Kristin Kiefer, author of fantasy fiction and creative writing resources and you are listening to the well-sturried podcast where I share insights, encouragement and actionable advice designed to help you craft sensational novels and build your best writing life. Always in 30 minutes or less, so you can get back to writing of course. Ready for the show? Let's get talking. Hello Writers, today is Friday, September 11th, 2020 and you are listening to the well-sturried podcast. I'm your host, Kristin Kiefer and today's episode is titled, How to Define Your Character's Story Goals. If you would like to read along as you listen in, head on over to well-sturried.com slash Story Goals. Now let's get started. Are you struggling to finish your first draft? Lost in an aimless middle act or lackluster conclusion? Is your manuscript worrisomely bland, lacking a strong narrative thread to draw readers from point A to point B? Writers, it's time to rev up your story's narrative engine. The surest way to drive your platform is to arm your characters with goals they're motivated to achieve. Pit your characters' goals against one another or against their internal needs and you'll create deliciously engaging conflict that keeps readers turning pages. But how does one develop goals that effectively serve their characters and story? Is it even necessary to give every character a goal for that matter? Let's delve into this topic together, Writers. Story goals as a catalyst for conflict. A story's narrative engine is the force that gives its plot momentum, moving the characters through each act with clarity and direction. This force is also known as a story's central conflict, the question that keeps readers engaged from beginning to end. Will Frodo destroy the One Ring, saving Middle Earth from certain doom? Will Proro discover who killed Ratchet on the Orient Express? Will Noah and Ali ever find their happily ever after? In genre fiction, the primary character's story goals serve as the catalyst that sparks this integral narrative engine. With strong story goals in place, conflict doesn't just happen to your characters, your characters play an active role in creating and resolving it. In essence, character plus goal plus conflict equals plot. Two types of fuel can power a narrative engine, external conflict and internal conflict. External conflict occurs when a character struggles to achieve their goal due to opposition from an outside force, typically another character. Think Frodo vs. Sauron's army, or Poirot vs. Ratchet's killer. When a story's central conflict is external in nature, the plot formula we mentioned a moment ago can be read as character plus goal plus external opposition equals plot. Stories driven by external conflict are also known as plot-driven stories. Defining characters' goals in a plot-driven story is usually fairly simple. The protagonist wants something, the antagonist also wants something that happens to conflict with the protagonist's goal, and boom, conflict ensues. However, character's goals can be more difficult to define in character-driven stories, that is, stories that feature a central internal conflict. Why internal conflict can muddy the character goal waters? Rather than dealing with external opposition, internal conflict occurs when a character struggles to achieve their goal due to some form of inner opposition. Think Ali's struggle to decide whether she'll remain with her wealthy devoted fiancee or leave him for the working class man she loves. When a story's central conflict hinges upon an internal obstacle, the plot formula we mentioned earlier can be read as character plus goal plus internal obstacle equals plot. However, defining a character's goal in stories driven by internal conflict can be tricky, because what the character wants isn't often what they need to find happiness or satisfaction. In the notebook, Ali's internal conflict is fairly straightforward. She wants to be in a relationship with Noah, but external circumstances drive them apart. When life brings them back together again, Ali is engaged to another man, leaving her with a difficult choice. Is she willing to disappoint her devoted fiancee and risk her parents' disapproval to marry the man she truly loves? What Ali wants is what she needs to lead a happy life. But this isn't often the case in character-driven stories. Like Talia Hibbert's Get a Life Chloe Brown, for example, early in the book, Chloe writes a to-do list of, quote, Get a Life experiences that she believes will make her happy, experiences that she previously avoided because of her chronic illness. However, throughout her journey, Chloe comes to understand that what she needs to be happy is to take a risk on love, allowing others to nurture and support her. Chloe's goal evolves throughout her story as she overcomes her primary internal obstacle, the false belief that she's unlovable. How to develop your character's story goals To determine effective goals for your characters, consider your story's end game. What do you want each character to achieve, experience, or realize by the time their story ends? Will they shed their inhibitions and fall in love? Save the galaxy from invading aliens or realize the value of forgiveness? With this end game in mind, determine whether your character would desire this outcome in the early chapters of your book. If so, then you've identified the essence of your character's story goal. Use the prompts in the next section of today's episode to further strengthen the plot-driving power of this goal. If your character's goal in the early chapters of your book wouldn't align with the end game you have in mind, then consider why that might be. Is the character an antagonist who will fail to achieve their goal because the protagonist succeeds? If so, first identify your protagonist's goal. Then consider what aim would best enable your antagonist to create conflict in your hero's journey. Does your character's goal evolve because their original goal was misinformed? If so, consider what the character originally wanted and what new information would lead them to adopt an alternative mission. Are you writing a character-driven story that highlights your character's personal growth and transformation? If so, consider what fear or false belief might initially hinder your character from understanding what they truly need, then develop a goal defined by that internal lie. As you consider the type of story you're writing, you should have a general understanding of what your character's goals will be. For example, if you're writing romance, then your lovebirds will likely need to overcome their fears and false beliefs before they can admit their love for one another. If you're writing a murder mystery, then your protagonist will likely want to solve the murder while your side characters will have various reasons for hiding their connection to the case. If you're writing fantasy or science fiction, then your heroes will probably set out on a quest to defeat a Dark Lord or obtain a life-changing magical object. Of course, not all stories are so straightforward. The more literary your narrative, the less definitive your character's goals may be, as literary stories are defined by social commentary rather than plot. Finally, know that developing your character's goals may take time. It's okay to identify a basic version of your character's goal, such as survive some sort of haunted house situation before refining it as you develop other aspects of your story. Strengthening your character's story goals. Story goals may be a catalyst for conflict, but they can fail to fan the flames of your story's plot if they're not properly developed. What makes an effective story goal tick? Five things, writer. First, an effective story goal is specific. Ambitions are a dime a dozen, but goals? Goals prompt definitive action. It's hard to spend conflict out of a character's desire to become an actress, but if that aspiring actress challenges herself to book a job in 30 days or give up acting for good, then you've got story fodder on your hands. Secondly, an effective story goal has meaning. Characters with strong goals have a powerful reason for pursuing them. They risk death to defeat the Dark Lord because their village is at risk.  Thirdly, an effective story goal fuels internal conflict. Regardless of the type of story you're writing, a well-developed goal either enables or hinders your character's personal growth. Their quest to destroy the alien invaders forces them to become braver and more self-assured, or their determination to fight their way to the top of the corporate ladder leaves them feeling lonely and depressed. In either case, the character's emotional turmoil serves as the beating heart of their story, the human connection that gives readers a reason to care. Fourth, an effective story goal is immediate. Good story goals drive the action from page one, or near enough to it.  Fifth and finally, an effective story goal breeds pressure. There's nothing exciting about a character who easily overcomes a minor obstacle to achieve a simple goal. Strong story goals keep readers turning pages because readers understand what's at stake should the character fail to achieve their goal, or to realize their goal's flawed nature. More importantly, the pressure to achieve their goals drives your characters into action that leads to engaging conflict. Should every character in your story have a goal? There are two types of goals in fiction. Story goals and scene goals. The difference between these goals is fairly self-explanatory. A story goal is an aim your character seeks to achieve throughout their journey. It may evolve to some degree as they learn new information or overcome a limiting belief, but this goal drives the majority of your character's actions. A scene goal, on the other hand, is a character's aim in any particular scene. This goal can and should change as your story progresses. As people, we are driven by desires. Whether those desires are to reconcile with our estranged father or to find the nearest coffee shop ASAP doesn't matter. We all want something, typically multiple somethings, which is to say that every character in your story should have a scene level goal. However, some characters don't exist to drive a story's central conflict. Instead, they may offer the main character advice or serve as a minor obstacle in their journey, lend to the depth of your world building, or otherwise support, rather than directly impact, the story's narrative engine. Theist secondary and tertiary characters should always have scene level goals, but you don't necessarily need to give them story goals. Doing so may create a subplot that lends additional interest to your story, but it can just as easily overcomplicate an already complex narrative. So proceed with caution, my friend. That said, remember the goal's drive action. Any primary or secondary characters whose actions directly and repeatedly impact your story's central conflict should have a story level goal that determines their actions. Allow those goals to drive your story's plot, and you'll soon develop a story that readers won't be able to set aside. Thank you for listening to today's episode of The Podcast Writer. I hope you found it helpful to your writing journey. If so, make sure to subscribe to the podcast so you never miss a new episode and to give the podcast a quick rating or review. Doing so goes a long way toward helping the podcast reach new writers and lets me know that you're enjoying what I'm creating. You can also give me a shout out directly on Instagram at christen underscore keeper. For additional guidance as you work to craft sensational novels and build your best writing life, be sure to head on over to www.well-storyed.com where I share blog posts, workbooks, e-courses, and other helpful resources for writers. Again, that's W-E-L-L-S-T-O-R-I-E-D dot com. Thank you again for tuning into today's episode, my friend. Until next time, happy writing!


I think the Soka Monaco is one of the best we've had in a long time. I mean, the quality of the music, like you said, it's been a while I haven't seen a Soka Monaco where almost every song had a crowd engage and move in and really enjoying it. I mean, it was fantastic. People always have their views on who should win, who should not win. I've given up on judging and judging. I have my own predictions that I make and at the end of the night I always compare my predictions before the judges actually came up with. But it was a fantastic show. Calypso Finals as well was great. Laterally, intermittently. But it was quite a good event. We had kiddies yesterday morning and I enjoyed kiddies. It was really good to see the young ones as part of the revelry, part of the mass and having some good fun. And of course, we were able to finish on time so everybody could have left before 6 o'clock. So that was great. Last night was fun and Panorama was, you know, really sweet. I mean, a person who loved Panorama, so I really enjoyed it last night. A little disappointed we didn't have more bands, but it is something we need to look into because the course of participating in Panorama is huge. And I think the band leaders are really having a tough time. If you just think about it, 75 players training every night and after every training session, each one have to be taken home including youngsters. You know, equipping, you know, uniforming 75 persons, 75 pans properly tuned, properly presented, all the racks and transportation, it's a lot and I feel for the pan sides and what they're going through and you can probably see why, you know, they seem to be lesser. And of course, the sponsorship from the private sector is not as big as it used to be. Panorama is actually, it's probably our single most expensive show to put on in terms of the infrastructure and everything that's needed. So it tells you, you know, that it is not cheap, but I mean, it's Panorama and it's essential part of the cultural heritage that we speak of. So tonight is another favorite of mine, the king and queen of the bands, the big costumes as they say.  But I'm certainly looking forward to it and, you know, all the creativity that would be on display tonight.


It's July and it's getting hot, just like the deals at Appalachian Wireless. All month get the Samsung Galaxy S8 for just a penny with a two-year agreement. But don't wait because the deal ends soon. Better service, bigger savings. That's today's Appalachian Wireless. Thousands of dollars worth of video production equipment is missing in the city of Jenkins. And city officials are now asking for the public's help in locating the missing equipment. Three pieces of video production equipment are believed to have been stolen from Jenkins City Hall. It's unclear when the equipment went missing, or who may have taken it. But city officials are reviewing video surveillance footage of the area where the equipment had been kept. Equipment was originally installed to cover city council meetings in the upstairs council chambers, but not having an elevator or a way to get up there, it made it difficult for some people to make it and we moved the meeting room downstairs to accommodate that. It hadn't been in use for years, but it was still up there. A lot of other equipment up there, but that's what they seemed to pick. Not many people knew that it was up there, and it's sort of a specialized piece of equipment that would only be used for video, so there's not much use for it other than that that I can think of. The missing equipment included an audio and video mixing board, a camera control pad, and a recording unit. The missing equipment was stored with other, more expensive equipment, which was not taken. The total value of the missing equipment is approximately $9,000. Mayor Todd DePriest said he hopes anyone with information on the equipment will contact authorities and the equipment will eventually be returned. You know, the police department is reviewing all the surveillance footage. There's four different cameras involved and where it was at and ways they would have come out of the building, so it's taking some time to review that footage, but we'll find it and when we find it, we'll be putting somebody in jail. It's the time if somebody knows where it's at or had something to do with it, it'll be a good time to bring it back and then we can talk about what happened after that. The contact police department asked for Chief Josh Richardson and tell them we got some information and we'll try our best to keep them out of it. We sure would like to put somebody in jail. At Jenkins City Hall, Chris Anderson, EKB News.


Hello, this is Laptop Media, and today, we will show you how to open the Lenovo Thinkbook 14 and what's inside of it. To get inside this notebook, you need to undo 10 Philips head screws. Six of them are captive, while the rest will get off. Then, pry the bottom panel with a plastic tool, and remove it from the laptop. Please remember, it would be of great help to us if you just hit the like button and subscribe to our channel. That would motivate us to make even more and better videos for you. Here, we find a 45 watt-hours battery. It got us through about 6 hours and 30 minutes of either web browsing, or video playback. To remove it, unplug the battery connector, and undo the three Philips head screws, holding it to the chassis. There are 8GB of DDR4 RAM soldered to the motherboard. You can expand it via one Sodom slot, which supports memory sticks of up to 32GB. Our configuration features 2M.2 PCI-EX4 slots, which work with Gen4 SSDs. This device's cooling comprises two heat pipes, a heat sink, and a large fan. In addition, tiny heat spreaders take care of the VRMs. If you'd like to see more disassembly videos of the latest notebooks, we would highly appreciate if you hit the like button and subscribe to the channel.


Fonw'r ystafell ym Gweithgaredd, yn gallu i gyfnod ar y gwaith, ac mae'r cyfnod ar gweithgaredd yn glenni Llywodraeth David Coleman, ynghylch i gyfnod i gyfnod i gyfnod i Llywodraeth Cymru. Felly, dwi'n credu bod nid i gael i gyfnod i'ch gyfnod i gyfnod i gyfnod i gyfnod i gyfnod i Scope national of Environmental Chaplin in Fharrico Congregation Scotland. It is a charity supported by very diverse churches and the Scottish Government. In one way, that is a change of direction. In another, it is an intensification of the same calling. The Christian minister's name is never simply to speak what people want to hear even to those who might think that they are paying the piper. The very diverse eco-congregation movement encourages faith groups, so far Christian, though I'm really looking forward to working with Muslims and others. We encourage people of faith to enlist the treasures of their respective traditions in response to the shared global context of climate crisis. This is my second Holyrood event in two weeks. I was part of the lobby on the 19th over climate issues and the Church's parliamentary office will keep the conversation going. Your guidelines stipulate speakers should avoid being political. Let's say that easy, because for us at least 20 years since our friends in the Pacific Island churches realised their homelands would not survive the rise in sea levels, the task I've taken on is unambiguously spiritual, meaning it touches on the deepest essence of who we are and our place in the created order, so no party and no faith group has a monopoly on care of the planet. Jesus encouraged his followers to read the signs of the times in the world around them and pointed out they were very well able to do so and act accordingly if they so choose. Today, in complementary prayer and action, we're seeking collaboration, not competition, as we are overtaken by what we'd rather hoped was going to be the predicament of our grandchildren, and I'm not yet a grandfather. I wish that organised religion as a whole were already setting people such as the Parliament a positive and convincing example. In the meantime, we look to you. I'm not here to compete but to convince, which includes convincing myself and congregations and communities in Scotland to read those signs. In the Bible, God points humanity to the rainbow, a pre-existent phenomenon of universal scientific laws with a promise that rising waters will not bring an end to the world as we know it, which is nice. People like me are obliged to read more carefully and note that promise comes in context of our valuing and caring for every creature, and complacency is never an appropriate response to God's grace.


The theme of class is a recurring theme that occurs throughout Jane Eyre. Indeed, this theme continuously crops up from the opening of her life when we find out that her own mother, so Jane Eyre's mother, married a man beneath her social status, and this in many ways seems to have cursed her parents who ended up dying. And Jane Eyre was then raised as a very poor orphan and she was mistreated in Mrs. Reed's household and then sent to Lowood School, which basically served as an orphanage for children who did not have parents that could look after them, okay? So on the one hand, we experienced just how harshly Victorian society treated those who were poorer, okay? So working class people were treated very harshly, but also we realized that Victorian society had very, very rigid ideas to do with class. In other words, it was seen as improper, it was seen as forbidden. If somebody from one class, so for example, someone who was working class, married somebody who was upper class and that's exactly what Jane Eyre and Mr. Rochester did, okay? So the marriage didn't eventually go through when Mr. Rochester had money, but of course they ended up eventually marrying, but this is after he had lost all of his wealth. However, the fact that Mr. Rochester, especially when he was still rich, was happy to contemplate marrying Jane Eyre. This was seen as a scandalous decision in Victorian eyes, okay? So in society's eyes, a better match would have been if he had gone ahead and married Blanche Ingram, so that was the woman who was really interested in marrying him because there were of a similar upper class social status, okay? However, Mr. Rochester realizes that this is a very shallow way of seeing life and of course also a lot of the time when people marry purely based on class, this is not necessarily the best match in terms of personalities, okay? In fact, Mr. Rochester himself was suffering from a very unhappy marriage to Bertha Mason because he had initially married her out of the money that he would and his family inherited, but of course also because she was of a similar social status even if she was from the Caribbean, okay? So class continuously pervades this story and this story also shows how silly these rigid class divides were because it basically prevented for a long time, Jane, from requiting her love with Mr. Rochester even if they were perfectly suited as people because of this massive class division and then on top of that, Mr. Rochester was already married. This is now what really stood in their way primarily when it came to love, okay? So it's really important to be very clear on this theme of class and especially if you're writing about it, other for your course record exams it's good to have some quotes prepared as well as do some word love analysis. So as you can see behind me, I prepared the most relevant quotes I would suggest considering if you were writing about the theme of class as it's shown in Jane Eyre's, let's go over them. Now the first quotation which illustrates how in some ways Jane was cursed from the beginning is this, her mother had committed almost, it seems from society's eyes, from Victoria's society's eyes, she'd committed this original sin of marrying a man who was her social inferior. In other words, he was poorer than her and hence in some ways that their union was cursed, okay? And this is illustrated when Jane Eyre admits, my father had been a poor clergyman, ellipsis. My mother had married him against the wishes of her friends. So here we can see that her mother had committed this huge social blunder. She had gone against what all of society wanted for her which is marrying somebody of a similar social status and in some ways she was punished for this, okay? So her and her, Jane Eyre's mother and father ended up dying in obscurity, dying in poverty and then Jane had this really, really difficult early life, okay? Now the word levinosis you want to focus on here and of course what this is illustrating is how class divisions were so severe and it was seen as a scandalous affair if her mother had married her, the father that she did, okay? So she married this poor clergyman. Now the word levinosis which emphasizes this firstly the adjective poor, okay? And this really in some ways defined how the father was seen in this marriage as just a poor man. But also of course the words mother and father belongs to semantic field of family, okay? So this is Jane Eyre's origins, okay? And of course also the fact that her mom ignores social boundaries could perhaps show foreshadow how Mr. Rochester ignores the social boundaries in marrying Jane Eyre. And finally you want to focus on the alliteration of M in my mother and married, okay? So of course here what this establishes from the beginning is how divided people were according to their class in Victorian society and how it was seen as very improper and very scandalous of somebody of a different class to consider marrying someone who was their social superior, okay? The next quotation that relates to the theme of class is when Jane Eyre when she first meets Blanche Ingram. So this is Blanche Ingram at first she doesn't realize that Mr. Rochester has actually fallen in love with her and she notices that Blanche Ingram seems to be on the same social hierarchy and the social position as Mr. Rochester. So she sees how they interact and she realizes number one that she's an outsider but number two Mr. Rochester is more likely to marry her even if she feels like from her conversations with Mr. Rochester, you know, he thinks very differently. She then realizes actually he's more likely to marry her because he felt he is very obliged by his social position to do so. And this is illustrated when Jane Eyre states, I had thought him a man unlikely to be influenced ellipsis but the longer I considered the position ellipsis acting in conformity to ideas and principles. Now, what this is illustrating is that Jane Eyre realizes the social pressure, the sheer amount of social pressure that Mr. Rochester faced in marrying a woman who was of the same social class as him. Otherwise it would be scandalous, it would be seen as unheard of if he married a woman who was not of his social position. And so Jane Eyre actually empathizes with that. She says, okay, I can kind of see where it's coming from because even if he showed me to be somebody who thinks really differently, actually he still kind of has to be loyal to his social class. And even if maybe he doesn't marry Blanche Ingram, he still has to marry her. He doesn't love her. Even if he doesn't love Blanche Ingram, he still has to marry her, okay? So she understands this. Now, the one that I want to focus on for this quotation is firstly the verb thought, okay? So this is Jane Eyre reflecting on the importance of class in Mr. Rochester's consideration as to who he marries. Also the adjective influenced, okay? This idea that, you know, she first thought that Mr. Rochester was very strong-minded. He doesn't really care about who he marries in terms of class, but then she realizes, on second thought, I think this is really important to him. And also you want to focus on the abstract noun ideas and principles. And of course this is to do with the general ideas and principles within Victorian society, which was you have to marry somebody who's of a similar social status to you, okay? The next quotation which ties into the theme of class is when this is in Jane Eyre's young mind, okay? This is when she's considering poverty and the prospect of even being kicked out of the reed household and why she should be thankful to be treated like this terrible orphan, okay? And she realizes that poverty looks grim to grown people, okay? And here what you want to focus on is the alliteration of G and Grim and Grown. And of course, again here, what this is illustrating is how lowly working class people were looked upon, especially by the adult world, but even by children, okay? This idea that anything to do with working class, anything to do with poverty was seen almost as a stain on, and if somebody associated with a poor working class person, this also could stain their background and record, okay? So Jane Eyre, especially when she was young, she was really scared of being cast out of the reed household because she might herself also become poor, but of course it became unbearable being mistreated the way she was just because she was a poor orphan, okay? Now the next quotation you want to focus on is how Jane Eyre sees Mrs. Fairfax when she first starts working as a governess in Mr. Rochester's household, okay? So she realizes Mrs. Fairfax also follows the same kind of principles in terms of class and she really looks up to Mr. Rochester, okay? So remember that Mrs. Fairfax has been working for Mr. Rochester as well as Jane Eyre, who's a governess, they're both working class, okay? And Jane Eyre realizes that Mrs. Rochester follows what is expected of working class people. She looks up to people like Mr. Rochester, puts them on a pedestal, looks up to them and thinks that they're amazing because they're upper class. And this is illustrated in the following quotation. The good lady evidently belongs to this class, Ellipsis. Mr. Rochester and her eyes are gentlemen. So here of course we can see that Mrs. Fairfax really elevates Mr. Rochester to this position as her social superior, okay? And Jane Eyre kind of sees her as belonging to this class of working class people who really worship and put on a pedestal upper class people, okay? Again, during Victorian, in the Victorian era, in Victorian society, people who were working class in many ways saw the upper class as somehow superior to them, as somehow morally better than them, somehow socially better than them, okay? And what Jane Eyre's noticing is that Mrs. Fairfax holds these opinions too. The word love analysis you want to focus on for this is firstly the notion of class, which is mentioned and it's an abstract noun, and also the assonance of E in Rochester as well as her eyes and gentlemen, and finally the adjective gentleman, which of course denotes a certain class of man during the Victorian era. This was a rich man who was considered to be a Victorian gentleman. There were upper class, they dressed in a certain way, for example, they'd wear a top hat, long tailcoats and so on, okay? So Mr. Rochester belonged to this elite group of people. However, Mrs. Fairfax also really looked up to men like Mr. Rochester, okay? The next quotation, which adds into the theme of class is when Jane, so she is starting to really consider, even if she's falling in love with Mr. Rochester, this is before she realizes that he also is in love with her, but as she's falling in love with him and he has disappeared as he used to on the weekend and he's gone away and she can't stop thinking about him, however, she's trying to remind herself they're not the same social class, so she cannot afford to fall in love with him and she tells herself, he's not of your order, keep to your class, okay? So here, what she is trying to remind herself is, Jane, your governance, your working class, you're not the same as Mr. Rochester, he is on a pedestal and you are beneath him and any kind of relationship is forbidden and it's impossible, okay? So she's trying to remind herself of this because she really is falling in love with him but she doesn't want to because she knows that society will never accept this. The one love analysis you want to focus on is firstly, the repetition of the possessive pronoun, your, okay? So he's not of your order, your class. Also, you want to focus on the adjective, class, okay? So this notion of Jane working class people being of a certain class, of a certain almost racial group that's different to upper class people and finally, Jane talks to herself in an imperative sentence. Remember, an imperative sentence is a sentence that issues a command. She tells herself, stop falling in love with Mr. Rochester, keep to your class, okay? And this imperative sentence, again, reflects how many Victorian people, especially upper class Victorian people, would probably tell a working class person, no, you can never marry an upper class person, keep to your class, okay? So again, what this is illustrating is the social, the stark social divides that existed between the upper classes, middle classes and working classes, okay? They just never mixed. The next quotation, which ties in to class, of course, this is tying in back to Mr. Rochester marrying or the prospect of him marrying Blanche in Grimm because she was of a similar social status. Jane Eyre believes he was going to marry her ellipsis, her rank and connections suited him. And of course here, the word of analysis you want to focus on is the repetition of the third person pronoun, her. And again, what this is illustrating is this notion of class being very important because also with class, somebody when they marry someone, especially of a higher social class, they have a higher social rank, but also they have good social connections, okay? And this is something that Jane Eyre believes is really important to Mr. Rochester, but then she later realizes that he doesn't really value it as much as she thought he did, okay? The next quotation, so now this is Mr. Rochester showing actually he thinks differently, whilst a lot of upper class people would have probably married someone like Miss Ingrim, so Blanche Ingrim, they probably would have followed what was expected of them. Mr. Rochester sees things differently, okay? So first, if you see this, and this is foreshadowed, once Jane Eyre saves his life, okay? So this is when Bertha Mason we later discover is the one that sets a fire in his room, however she saves his life, okay? And he is so happy that she does, but also he sees, he starts showing that he sees Jane Eyre in a different light, okay? He doesn't see her in terms of class, he sees her for the person that she is.  Now the word of the nurses you want to focus on here is firstly the verb saved, okay? Again, this illustrates that Jane Eyre actually is unique just because she's working class doesn't necessarily mean she is lower than Mr. Rochester, actually she's on that had the power to save him, okay? And also the fact that Mr. Rochester feels an immense debt, okay, and of course this is hyperbole over exaggeration. And here we can see that Mr. Rochester, just like how Jane Eyre's mom went against her class and still married a poor clergyman, Mr. Rochester is beginning to consider marrying Jane Eyre, he's falling in love with her, okay, in spite of their social differences. The final quotation again, this is tying into how Mr. Rochester, we get the sense that he will ignore these social boundaries and these class boundaries between him and Jane Eyre, he states, I sometimes have a queer feeling with regard to you. And so this is when he's talking to Jane Eyre, he's basically saying, I have a really different feeling when I talk to you, a different sensation. And of course, what this is illustrating is that he sees Jane for the person that she is not so much for the class that she belongs to, okay. And here he wants to go and, you know, go beyond the social class divisions that exist between him and Jane Eyre. And of course he does ultimately do so and proposes to marry her, okay. Now the one of the analysis you want to focus on is precisely the repetition of the first person pronoun I, okay, it's repeated. And of course, rather actually it's not repeated, there's a contrast in pronouns between the first person pronoun I, this is to do with Mr. Rochester, versus when he is referring to Jane Eyre using the pronoun U, okay. So here of course there's just position and pronouns, illustrates that they are different people, of course they also belong to different classes, but Mr. Rochester sees that as not something that should keep them separate, but they can reconcile it, and this only makes Jane more intriguing as a person to him. Also you want to focus on the adjective queer, this idea that he has a queer feeling, a strange feeling about Jane Eyre again. What this is hinting and foreshadowing is that he will probably fall in love with her and he's gonna ignore these class divisions, okay. So that's really it when it comes to the theme of class in Jane Eyre. Thanks so much for listening.


The Carnegie Mellon Quarantine Database Talks are made possible by the Stephen Moy Foundation for Keeping It Real and by contributions from viewers like you. Thank you. We're super excited today to have Dr. Lublina Antova, who's the Principal Research Scientist at Datometry. Again, we give her talk about the kind of cool things they've been working at Datometry. Dr. Antova got her PhD under Kristoff Koch at Cornell. And prior to that, she did a master's degree from Sarlene University in Germany and a bachelor's degree in computer science from Sophia University in Bulgaria. So she's been at Datometry since 2016. 15. 2015. Okay. And again, the way we'll do this as we do every week, if you have any questions, please unmute yourself, say who you are, where you're coming from, and ask your question and feel free to interrupt any time as possible at any time you want. And as always, we want to thank the Stephen Moy Foundation for Keeping It Real for sponsoring this event. Lublina, the floor is yours, go for it. Just tell me when you want to change slides. Yes. Thanks, Andy, for the introduction and sorry, everyone, for the delay. We've had some technical difficulties. So again, my name is Lublina, and I will be talking about the technology we're developing at Datometry. And yes, next slide, please. So the first sentence that I'm going to start with, it's something that's probably pretty obvious to everyone. And that is that everybody, all the enterprises are moving to the cloud. And not only that, but they also need to move next slide, please, their data warehouses with it. And we know that the biggest cloud providers, Amazon, Google, and Microsoft, sorry, they have their own cloud offering for data warehousing. And we've seen some pretty big IPO recently that also shows that cloud warehouses are pretty modern and pretty desirable for the enterprises. Next slide, please. However, it turns out that adopting those cloud warehouses is one of the most challenging problems that IT faces. And next slide. So this is a quote from Gardner, something that, for me, is a former academic and was not so obvious that actually, even though we have so many new and better databases, it's actually pretty hard to migrate legacy applications to start using those new databases. And what Gardner estimated is that 60% or more of those migration projects tend to run over schedule, they run over budget, and ultimately fail. So the purpose of the stock is going to be to answer why that is the case and also what we can do about it. Next slide, please. So this is a picture. And I don't really want you to look at the individual boxes because I understand there's plenty of them. But that's how a usual solution architecture looks at one of our customers. So in the middle, you have your data warehousing data warehouse that's in the usual cylinder that we use for drawing databases. And those data warehousing applications are usually used by two sets of applications. So on the left-hand side is the ETL applications that pump and load data into the data warehouse. And on the right-hand side, you have the reporting and analytical applications that read and make sense of that data. So here are the various components that are involved in those applications. And all the boxes painted in gray are the things you need to worry about if you want to migrate that architecture to a new data warehouse. So essentially replace the cylinder in the middle. So let's simplify this a bit. Can you move to the next slide? So again, this is the same picture, just lightly simplified. This is your typical database stack. So on the bottom, you have your data warehouse. And here I've shown Teradata as one of the kind of most prominent data warehousing databases out there. And on the top, you have the applications. So those applications, this will come as no surprise to you, but those applications send queries down to the database. This could be read queries. This could be queries that create objects. This could be created at modified objects. And the data warehouse evaluates those queries and returns the results back. And the application makes something with those results, whether it's reporting, whether it's visualization, whether it's something else. So if you don't want to worry about migrating the applications, our solution proposes the following. As we can move to the next slide. We introduce a virtualization layer in the middle that intercepts all the traffic that comes from the application, including queries, including loading requests and so on. And we do the real-time translation of those requests down to the database, down to the new database. So the application never needs to understand that something changed, that it's actually speaking to a cloud data warehouse. It still thinks it's talking to Teradata. And we take care of actually making those things work in making those requests compatible. Next slide. So before I tell you how we do it, I just wanted to give you an example of why translating SQL queries is so difficult. And I know it's probably obvious to most of you that have seen at least one or more database engines. But this is a very simple example that is a simplified version of a customer query. And even in these few lines of SQL text, we already have some differences that make this query non-portable to a new system. So if you can click. So yeah, the first example is just a custom keyword. Sorry for the font formatting. But essentially Teradata lets you abbreviate, select into cell. And that's pretty simple. But the next one, next slide please, is a comparison between a date column and an integer. And that's typically not supported. So it works on Teradata just because in Teradata dates are represented as integers. So there is a native comparison between the two data values. There's some more differences next slide. So that is a vector sub query that is standard in SQL but may not be supported on a new and upcoming data warehouse. You compare two values against a set of two other values coming from a sub query. Next slide. And that was supposed to highlight the rank function, which is a non-standard way to express window functions in Teradata. And if you click to the next slide, there's also a qualified clause, which is a proprietary Teradata clause that lets you put window functions in a predicate. So it's similar to a having clause. So even in this little example, there is a number of things that make the query non-portable. And if you try to rewrite it yourself, if you click, there's going to be a banner. You basically die from a thousand cuts because there's so many things that you need to worry about. And this is just as... At a curiosity, like the previous slide, you showed that you're feeding in from MicroStrategy, you're feeding in from whatever, Informatica. At a curiosity, is there any one application that generates adverse or like grotesque Teradata queries or are they all sort of equally guilty? All of them. So if you move to the next slide, this is the overall architecture of HyperQ. This is our virtualization platform. So here on the left side, you have these legacy applications. They connect through a driver. They speak a protocol that's implemented by a driver. And this could be a standard driver like ODBC or JDBC. But it can also be a proprietary driver of the data warehouse that speaks a custom protocol. And on the right hand side, instead of the old data warehouse, you have one of the supported data warehouses that you want to move to. So in the box in the middle, we have the various components, and I probably cannot point now that I'm not presenting. But from left to right, so it's not just about the SQL text. It's also about understanding the protocol that the application speaks because we also don't want to have the customer have to change those. So we do have a protocol engine that understands the various messages that are sent from the driver. And once we understood the message, we unpacked the query out of that message, and we give it to the next component, which is the thing in the middle, the translator. So that's the component that I'm actually going to describe in more details. But the important part here is that the translator takes the input query expressed in the dialect of the source system and translates it into something that can be run on the new data warehouse. We also have other things like metadata manager because we need to be able to access metadata in order to resolve the various object references in the query. And another important component is that when we run the query and we get the results back, we also need to package those results and send them in the format that the application expects them to be. So in some cases, we have to do things like type premappings in case the type system is not exactly the same. And also, we have to package it in the message that the protocol defines for returning results back to the client because, again, we don't want to change a single thing in the way the application used to run against the old system. So next slide, please. I mean, maybe you'll get into this, but there's different, sometimes there's different behavior of built-in functions and things like that. Presumably, you have counted for all the possible things that people would execute on stones like a big query or something on the other side. And you know that. I guess my question is how much of this is hand coded versus how much of this can be trained and learned? Good question. So we hard code the semantics because that's usually well defined in the various documentation of the source and both the source and the target system. So we do make sure that things have the same behavior. So we do make sure that things return the same data types. And if not, we add explicit casts to actually make them return the same type. We don't do any learning of what the results should be because we have to be correct. Sure. Okay. Yeah. Thanks. Yeah. So next slide. So, yeah, again, zooming in on the query translation framework because to me that's the most interesting part of the product and that's the one that I've worked on most. So again, we said there's a query that comes in that queries expressing the dialect of the source system. In our case, Teradata. So we have a parser. We have to parse that query. We have the grammar rules of the source language encoded. And not surprisingly, the parser comes back with an abstract syntax tree, like most parsers do. So the next step, if you can click the next slide, is we actually have to bind this abstract syntax tree into something that is semantically meaningful. So we, as part of that process in the binder, we would resolve object references. So we know what tables are being referenced, what columns those tables have, what types the various columns and expressions are. And the result after this step is very close to the relational algebra that you know from textbooks. So the result is another tree called extra, and it stands for extended relational algebra. But it's essentially a tree consisting of joins, group buys, and other types of operators. So this is a more or less straightforward translation to an extra. And we may have to apply additional transformations to make that query tree be executable or close to executable on the new system. And I'll show examples of what we do with some constructs. But essentially we have a transformation framework which applies a variety of algebraic rules to make the original join tree or the original extra tree closer to something that will be executed on the new system. So the result after the transformation step is again an extra tree. And that extra tree in the final step we can feed to a serializer. We can click to the next slide. And what the serializer does is it will walk down that tree and will produce SQL text. So that now can be sent to the back end and execute it. So again, if I'm jumping ahead, stop me. So that query rewriting thing, the idea is you know the target is BigQuery. And you know BigQuery can only handle many queries and do certain kind of nesting or have certain patterns. Therefore you have the rewriting specific to the engine you're going to put it towards. That is a very good question. Yes, the correct answer is yes. And I have examples later, so I'll come back to that. All right, next. Next please. Yeah, so this is a framework that is modular and extensible so you can add new features easily by implementing new parser rules. You can implement transformations that as Andy suggested are specific to a particular system. You can also turn off transformations because those database systems evolve. So in the future if they add native support for something that you had a rewrite for, you can actually turn it off and that will make all the queries that use this construct now use the native construct. And if you think about it, if you had to go through the manual translation of queries, even if the database system evolves, you will probably not want to go back and rewrite those queries manually. But here you basically take advantage of it with one step. So I have a few examples to just show you how things look. So here's a simple query. You select from a table T and you have some equality predicate. So after parsing you have an AST that looks like this. So you think you're having to do a selection on top of a table T. But when you start binding, well, first of all, you'll resolve T to an actual table in an actual schema. So here DBO is the default schema. So we pull the metadata for that one. And when we start binding the equality predicate, we see that, well, one of the columns comes from T but the other one doesn't. And on most systems that will raise an error because you forgot to reference S in the from clause. But on Terrier, that's actually pretty valid syntax. And the implicit meaning of that is that you're actually joining the two tables. So after binding, instead of having a selection, you will end up with a join between the two tables T and S. And something that I don't show in these trees is that as part of the binding, we also build up the properties at each of these levels. So for relational operators, we will derive things like what are the columns, what are the output column types and so on, because those are then needed for binding the upper level. And if you've done query optimization or something similar, that's pretty standard. For scalar operators, we will derive things like what is the type of the expression, is this expression nullable or not, because that may be handy later on if you want to apply transformations. So next slide, please. This is awful. Do you want something without declaring it? You can do something without declaring it. And one other example that I wanted to put in the slides, but I thought I will not have time to go over it is you can also do stuff like select A is B, B is C, and so on. So basically, reference variables or columns that were defined at the same level. So it makes for some, yeah. I mean, they knew their syntax was deviating, so they're trying to get more strict in every version.  And a lot of applications use it. So that's what makes the whole problem so much harder. So this is the next step after binding. We've kind of normalized the query a little bit so that it's kind of more closer to relational algebra. And then in the transformation framework, we implement this back-in-specific logic for the various systems that we support. If something is not supported, we may have to rewrite it into something that is, and I have examples for that later. We also do some optimizations in that framework. For example, if you have a sequence of insert statements that target the same table, we can batch them into a single insert, which is usually much more efficient to execute, especially on a cloud data warehouse. We do things like common expression elimination, sub-query unnesting. Some things that will help the downstream optimizer deal better with the query that we give it. And also, we do type enforcement, and that's to make sure that the various functions and operators return the same type as they did on the original system. Because sometimes, even if the function looks the same, it may have different requirements for the input argument. So maybe it doesn't work with the integer and begin, but it works if you cast one to the other. So we do that in the transformation framework, too. Next slide. So I have a few examples. So one is simple. So you have a date arithmetic expression, which just subtracts one date from another. And that is sometimes supported natively as an operator. But on other systems, you have to call a built-in function. So if you click to the next slide, some systems, you will have to express this difference by just calling explicitly a date diff function. So that transformation will be enabled for those systems, but will not be enabled for the ones that support it natively. So that's pretty simple. So the next example is... So if you remember the query that I showed you earlier, where on Teradata, it's perfectly fine to use dates and integers interchangeably on other systems. That's not the case. Then you may have to cast the date expression explicitly into an integer. And that happens with... If you click to the next slide, there will be a tree. Basically, you extract the various components of the date and you plug it into this math expression that computes the integer. So once you have this query tree, you can then give it to the serializer and it will produce SQL that looks like this. And that's part of the larger query tree. So it will be a snippet of the SQL that will be sent to the database. Any questions so far? This is crazy. This is awesome. It gets even more awesome. Next slide. So what I've shown you so far is mostly algebraic rewrite rules, where we assume that whatever the query and the query constructs that come in can be expressed with some other shape and form of a query tree. But that's not always the case. In some cases, we'll get a query that we cannot execute directly as is. And we might have to break it up into separate components and run those and combine the results in the mid-tier. So some examples are the more procedural constructs like macros, stored procedures, recursive queries, and so on. Another famous example is enforcing uniqueness constraints. So if your table had a key or unique constraint defined, those are very rarely portable because most of the cloud data warehouses decided not to implement uniqueness constraints. And if now if your application code depends on data being properly dedupped in the target table, you're running into trouble. So what we do is we would essentially enforce the constraint on our end by what we keep track in our metadata store that there is a constraint, first of all. And then if there's a DML operation that comes in, we would essentially run it in a transaction where we would try to run the DML. If it introduced any duplicates, we would roll back and return an error to the user. If not, we will commit the transaction. So that way we can emulate that same behavior in a set of queries instead of a single query only. So I promise I have an example so that that one covers recursive queries. So this query, you don't have to read the SQL test. So what it does is it is a query which computes all the employees that report either directly or indirectly to a manager with a given ID. So that's a standard SQL construct.  It has this recursive at the beginning to kind of warn the parser and the optimizer that this is a recursive query. In the base, that's kind of the upper half of the query, we say, well, give me all the employees whose manager has ID 10. And union those employees with everybody who reports to the employees that you just computed. So because this definition of reports uses itself, that's why it's recursive, when the downstream system doesn't support recursion, we'll have to actually evaluate the recursion on our end. So we would step through the stages. So if you click once more, so we would first execute that base of the recursion, we'll find the employees that report to manager 10 directly. And then we would iterate over until we find no more employees. So we'll basically join that Delta table with the original employees table until we don't add any more records to the Delta table. And the final result, we'll just have to, if you click once again, we'll just have to click, sorry, yes, to read from that final work table, which contains all the entries that we computed by running the recursive query through hyper queue. And we have to also clean up some of the intermediate tables that we've created. So the hyper queue part has no data, right? The transaction thing you just mentioned, that would be all that you're maintaining state of the transactions in hyper queue. And then it's responsive, we're doing the lookup to say, do I have a straight, do I have a straight violation and whatnot. So we assume that the downstream system gives us transactions. So okay, okay, okay, we don't, we try to stay away from implementing a transaction manager, because well, they're smarter people that have done that. So we assume that we can just do begin transaction. So we do send that as a query to the backend. And we do send the various create temp table, create table, insert into and so on queries. But we kind of handle the control flow. Got it. Okay. Makes sense. All right. Awesome. So I wanted to give you something more kind of deeper on the implementation side of things. So we've implemented that hope framework in Erlang, which is a functional programming language. We're just kind of awesome when you do want to do query writes, because you start with a pattern, you transform it and you produce a new pattern and give you kind of an idea of the depth and breadth of the implementation and what we support. I thought I will run a little statistics. So I did that on the weekend. So that's the current snapshot of our implementation. So for tier data, we have about 150 different parse node constructs. Those get mapped to about 235 relational operators, some of traditional operators that includes DDL commands, utility commands, and other things that are necessary to support the customer applications. And we currently have almost 250 transformation rules that massage the query to make it work on the back end. Next slide, please. So I'm kind of coming towards the end of my talk, and I wanted to point out a few properties of HyperQ. So one thing that is important is we're now in between the application and the database. And an important aspect of it is that we don't want to introduce overhead, and that's a question we commonly get asked. What about overhead? And we've measured it and we obviously ran experiments for our signal papers, but most of the times it's negligible, because we delegate the actual data processing to the back end. So we kind of have to handle things like metadata lookups and translations, but those are typically much faster to execute. So at the worst case, we've seen something like 2% overhead, which for a virtualization framework is pretty acceptable. So the other important aspect is, well, is there something you don't support? Or how much of the language do you actually support? And that's again an empirical result that we've gotten. And the result is based on analyzing a number of customer workloads of millions of queries. And we've discovered that there's about 99.5% support for the data dialect of SQL. And that is important because our value proposition to customers is that they don't have to change anything. So we can't come up and say, look, we support only 50% of your queries, because that means the rest of the 100% will have to be manually rewritten. And the thing that we don't support yet is either on our roadmap or are features that we've decided not to support, because there's little demand for those. So that's kind of a business decision. Can you give an example of something that is in that 0.5% you don't support? And actually, out of curiosity, the ones you say, you say, we're just not going to support this, because you just love demand for it. I guess the first question is, how much to work is it effort in your part to say, okay, here's this function that somebody wrote that's in from Teradata from 1989 that they'd still support. How much effort does it take to say, okay, what is that function and how to actually convert it? Yeah, I mean, there's sometimes one conscious, well, so if it's something that has a direct corresponding feature on the back end, then it's a day worth of work. We've sometimes implemented custom UDFs that occasionally make it into the built-in functions if we kind of make it a point with our partner warehouses that this is an important feature, which, again, is probably easy. There are other kind of bigger features, especially the ones that need emulation, things like stored procedures where there's a variety of constructs that we need to support, like error context handling and exceptions and all these things. So these are usually, and again, I mean, we start with a simple implementation and we add the to the backlog for things to implement based on what we see in the customer workloads. Things that we've decided not to support, something from the top of my head is something like Xquery. So there's some Xquery functionality interior. We said, well, the 1% of queries that touch this will just hire an SI to help you rewrite those because there's more important things. Yes, okay, that's a good response. And yeah, so the third point is something that I didn't talk about, but it's also important if you're an enterprise that's looking to migrate this. The others like beyond relational, we also support things like ETL tools and we map those ETL tools to the kind of fast loaders of teradata to the fast loaders of the target system so that the performance is still as expected. So out of curiosity, like, I mean, teradata is, you know, it's from 1979. There's, I don't know how many different iterations of the drivers for ADBC or JDBC, like how many different versions are out there? Like, did you guys make an effort to say, let's go find every JAR file or every version JDBC that they support and just try to put that through your whole like testing pipeline to see what you support and don't support? Or like, do you, do you cut it off and at some point say we only support up to this version? Like, how bad was that actually supporting all the versions of the teradata driver? Yeah, so I think we, from the teradata driver, I think we support two or three major versions and again, that's based on customer needs. I think the oldest one is 13 and so we don't support anything before that and the kind of majority of stuff is in teradata 15 and I think there's a couple of new things in teradata 16, but it's pretty much backward compatible in the same. Got it, okay. I just, the reason I asked is, I remember Mike was telling me that like in the early days of Vertica, you know, there's how much effort they went into just trying to support all different versions of Postgres JDBC that all the customers had.  We, what we haven't, we don't have customers, we haven't looked to see how much harm is going to be supporting all the older protocols. Yeah, again, it's kind of driven by customer demand. We've, I think we've started with one of the versions initially. We've kind of taken the spec of the protocol and implemented it and then we saw, oh, there's some customers that are on older versions that differ significantly. So we, when I hadn't kind of debugged that oversight engineer, that one too. Got it, because they give you money, you make, so you do it. Yeah. Yeah. I mean, now that we've done, it's applicable to all of them. Sure. Yeah. So yeah, so kind of the summary is that we provide the pretty extensive functionality and we don't incur overhead. I guess, next slide. So this is kind of more of a marketing slide. I'm not sure Andy will like it, but again, we will, our value prop is that we do it for the customer. We enable those migrations and now they run in a significantly less time. I think the quote was the original migration sometimes tend to run three, four, five years and now it can be done in a few months. And obviously it costs less money because you have to pay less people to do manual stuff and rewrite queries. And you also don't have to pay the teradata license while you're migrating because now migration is done much faster. So the migration time though is getting the data out of teradata and shoving it into whatever backend thing. Like your thing is instantaneous, right? Like, other than like maybe there's some functionality even on support, but in theory, like they point at a datometry and it just works. So the migration cost really is just moving the data, right? Yes, yes and no. I mean, obviously we're a startup or somewhat advanced startup, but customers, the way that the usually projects go is that we start with a kind of workload analysis to see if we actually support them or not. And we have a tool that I don't show here and hopefully we'll be able to write a paper about it. But it essentially runs millions of queries kind of through a preview version of HyperQ and it counts how many things we support. It spits out things that we don't support and we need to add the backlog if we are to support this customer. And that's kind of the first step. And if those numbers are convincing, we go ahead and we propose the implementation plan. And, you know, things that need to be implemented, get implemented. The data itself, data is not static. So there is this one-time migration of data, but usually you have to kind of point your ETL scripts to pump data into the new warehouse. So what customers typically do is when they start a migration project is they run the two warehouses side by side for a few months and that helps them resolve whether there are any bugs that they see, but also kind of tune performance if they need to. And sometimes that involves us implementing transformations to make better use of the data warehousing features that they now use, but also kind of compare and make sure that the things are correct. So there are still some overhead into doing that, but there's no manual query that needs to happen unless it falls into this 0.5 percent of the features that we don't support. So yeah, there's still some overhead, but it's typically much smaller because we don't do any manual rewrites. Okay, awesome. Next slide. Yeah, so this is a recent case study with one of the UK retailers that migrated and if somebody's interested there's a link, but essentially they report on how they migrated from Teradata to Azure using Datometry. And kind of coming to the end of my talk, here I presented Datometry's HyperCube product, which is a virtualization framework that is this middleman between the application and the database. So what it does is it decouples the application from the database, so now I can switch the database and not have to worry about making your applications run against the new system. Next slide. So we've published a lot of that work, so my talk was mostly based on our two sigmot papers, our two most recent sigmot papers, so if anyone is interested, please take a look at those, and that's all. Awesome, I will clap on behalf of everyone else. All right, anyone have any questions for Lou Boulay now? Okay, so I guess my question would be what's harder? Is it harder to support a new backend data warehouse, or is it harder to support a new front-end Exadata instead of Teradata or something like that, or are they equally challenging? Since we've mostly added backends, that is relatively easy, assuming obviously that the backend is kind of functional and has the usual construct, so if it's something that doesn't let you run DML, then it's probably not that easy to add, but if it's a fairly functional backend, usually adding a new one involves implementing a metadata interface that lets you look up metadata, and again that can be simple if the database supports something like information schema, because we don't have to change queries. The other thing that's different for new backends is the serializer component that actually takes care of producing SQL, and that is also fairly kind of common, because we on the front side of things, we have to worry about the various dialects and the various proprietary features, but when we serialize SQL, we can stick to ANSI SQL or something that will be common across all these backends, and just worry about the differences, so in terms of co-chairing, that's actually pretty compact too. For supporting a new front-end system, that will typically involve more work, because you have to implement the parser, we have to make sure that the semantics is preserved across all these operators, so actually I didn't show that, but one of the earliest papers we had was, and actually when I started, we were targeting not teradata, but a different database called KDB, so this is a database. Oh, that's not even SQL, that's not SQL. We were mapping everything to SQL, so kind of this internal extra representation or the origins of it, that date back from the time when we supported KDB, because we wanted to map things into SQL, and we wanted to map things into a more relational kind of target system, but the parser was obviously completely different because that's not SQL. Yeah, that's crazy. The teradata market is way larger than KDB, right? Which explains why we use it for KDB. So the other question I have is the UDS stuff, that translation, so one, that's not parsing SQL or that's parsing now PLC or whatever, I don't know what teradata is, right? Is it sort of the same steps or that's a little different, right, because that's like mapping from one DSL to another DSL, but are there semantics about the SQL inside of it that you can take advantage of to rewrite and be more intelligent? Does that make sense or no? Yeah, yeah, that's so, yeah, so store procedures in teradata are essentially a bunch of SQL statements that are connected with control flow, like if the Naos do that, if there's an exception or if you get this error from the backend, raise this exception to the user or execute this function to the user and return the results to the user. So it's part of the same parser, so it's part of the, it's still kind of SQL with control flow and we do have extra nodes, we do have these operators that express control flow nodes in the, in the extra tree. We don't really make a difference. We don't support truly procedural, truly things like Python and so on, we can assume that this can be just, if Python is a supported language in the new system, those can be just dropped in there. And what about the transaction stuff that I'm sort of curious about as well, because like, it's one thing to match SQL, right, but now if there's implicit semantics of the transaction, of transactions that are, that are, you know, that teradata might do something different than, than, than what, you know, BigQuery might do. Again, I realize these are, these are data warehouses and people aren't running like hard core applications, but like, like, like, are there variants in like isolation levels that you have to deal with from going from one system to the next? You're asking the hard questions. Yeah, so there may be a difference in isolation levels, but we try to stay away from those in the sense that those are usually not as important to warehousing applications. We obviously want the target system to support transactions because they do show up and we do need them for some of our emulation. But not at the level where we have to worry about isolation levels. Yeah, okay. All right, let's say anybody else have a question. I have one last question. Anybody else? Okay. I'll ask you the question. I like to ask everyone else.  Like how, like when they come to you and you think data geometry is going to do XYZ and you're like, what are you talking about? This is your way off on this.  Now I have to be careful because you're going to post this video online. I have to be careful how I answer this. Yeah, so there's one difficulty which is the users that, well, those IT departments, the ones that are responsible for managing the teradata instance are usually not really the business users that are writing the applications. So sometimes those people don't really know what's the business logic in those applications and that's part of the kind of the deal that we don't want them to worry about the logic and we don't want them to worry about the implementation of, or if it's going to be a manual rewrite about the kind of the correctness of those rewrites. So that's one. The other one is since the interface, we preserved the teradata interface so anything that they used to know about teradata now kind of holds because they can still write or modify these applications if they want them. We also, obviously if somebody is moving to the cloud, they probably want to take advantage of what these cloud warehouses give you so now kind of be stuck in the in the 70s with teradata but develop new stuff and that's no problem too because, well, you migrate your stuff, you don't have to worry about that migration project running over time and once you're done, you can now start developing new applications or even changing and re kind of re innovating or re implementing stuff that you wanted to but didn't want to couple it with the migration step. Got it.  I mean the cost is massive, right? Like, because teradata is so expensive, right? And going to the cloud is a fraction of that. That's huge. Yeah. I mean, and I used to work at a database company and something that, I mean, I wasn't bothered with it so much back then but because I was developing this cool new database technology was that even though, you know, you can believe the data, your database is better. It is still very hard to convince the customer to move to it because of that migration cost. Most of these database vendors usually target kind of greenfield opportunities where you develop your application from scratch but not really kind of bite the full market with the old legacy applications. Yep. It's a reason why IBM still makes bank on IBM apps, right? That fucker's not going anywhere. Yep. Okay. This is awesome. The winner. Thank you for doing this. Thank you for sticking with us even though it's technology issues.


Hello everyone, here is Evildea, your god, and today I would like to talk to you about a battle that occurred between me and my wife a few months ago. Now, I know that the battle is not that interesting, but wait a few minutes, because in fact it ended very amusing, according to me. Not my wife, but according to me. Now, the story. A few months ago, me and my wife fought about something, I did not remember the theme at the bottom of the battle. Maybe it is about the fact that I did not remember anything. And the battle of the Cesar, until almost the middle of the night, and one after the other it grew bigger, until the point when it suddenly exploded and said, And I threw myself into the apartment and said, I will not come back, I will not love you any more, and of course, I answered very kindly. I do not need you, you are the most beautiful woman in the world, and then I took care of the construction. And for that I do not know, I live in the apartment, and the apartment is in the second floor of the construction apartment. Remember that, it is serious. So, I went to the building, went to my car, and in fact, I just wanted to sleep in my car, but it was too bad, so I thought maybe I would watch a movie. And I took my phone, and I started to watch a movie, but it got worse and worse. So I thought, I should go to the hotel, but I do not want to spend my money, and in fact, I do not have my money. It is on the bench in the apartment, so I have to come back to the apartment, but I do not want to come back, because if I come back, then I have to say a few words, or it simply does not welcome me. So I thought, hmm, what can I do? Ha! I came to my plan. I know that our living room, because we have three rooms in our apartment, is in the wrong side of the building, and remember, it is on the second floor. But I know that I can climb to the window of that living room, because in fact, I should do it for a few days, when I forgot my chair. So I went to the wrong side of the building, and I started climbing the wall to the window of the living room. And I looked in and saw that my wife was on the sofa, and she was talking on the phone with one of her friends, and then I started climbing to the living room. And I went to the window of the living room very quickly, and then I went to the window of the living room. And then I thought, hmm, well, I am now warm, so maybe I can watch a movie for my phone, and maybe in a while I can read the room, and then say a few words. But I don't know. But I totally don't expect that, in fact, I just fell asleep, because I was so tired of the battle. So I fell asleep, and I thought that I dreamed about something, and then I suddenly woke up, because loud black came from the window. And when I woke up, I saw that my wife was standing on the window, and she was standing there. Why are you here? And then she began to tell me about what happened to the patients, because in fact I slept for a few hours. She waited an hour, and then she didn't listen to me, so she took her phone and tried to call me, but she couldn't contact me, and then she began to tell me that maybe something happened to me. And then she saw that my phone was on the window, so I didn't have my phone, and my post-telephone didn't work. So what am I doing? I'm outside the house alone. And she thought that maybe the driver found me, beat me, and wanted to find the phone, but couldn't find it, so she called me, so she quickly went to the consulate, because she couldn't see me. She called my name, and I didn't answer, so she went into the room, the apartment, and started crying, crying, and she went into the room, and she went into the apartment, and she tried to look again, and she went into the apartment again, and she cried, and then she called her friend, and her friend actually had a car, so she called her after the middle of the night, and she came into the car, and then she went into the building, and she went into the car of her friend, and then they saw the car, looking at the streets, because they wanted to see where, or not to see, but to find where I was, but they couldn't see me, and she came into the building with her friend, and they sat on the sofa, and she cried about the battle, and a lot, I suppose, spoke about the fact that maybe I died, and her friend had to calm down, and then she went into the living room to find a bigger room, and then she saw that I was actually in the bed, sleeping, laughing, and happy, and of course, she blacked out a lot, you're here, and her friend said, what the hell, I'm going home now, and then of course my wife was very angry about the fact that I was in the bed, and at the same time, she cried a lot, and cried to me, hugged me, and you have to remember, that everything happened during a few moments for me, because I was just old, so during a moment, she stood there, cried, told me, and then, hugged me and hugged me, and then she began to sleep in my arms, and I thought, hmm, that's a very strange thing, but it seems that she cried, and of course, the next day, after she slept a lot, she again was very unhappy about what happened during the next day, but for me it was very funny, so if you liked this film, like it, share it, subscribe to my channel, if you haven't, and I'll see you in the next film, and if you're not there, I'll find you, and I'll see you in the next film, and we'll sleep a thousand days in your house.


In order to appreciate better the space that is the ischial anal fossa, let's first get our bearings.  This reveals the three organs of the female pelvis, bladder, the uterus, and the rectum, which becomes the anal canal. Directly lateral to these organs are the muscles of the pelvic floor, which support the pelvic organs like a hammock.  It contains mostly fat, and thus acts as a kind of cushion surrounding the hammock. In this model, we've scraped out all of the fat, which usually fills the space, and so this opening you can see here is the ischial anal fossa, and it's one of those areas of anatomy that is quintessentially hard to grasp in two dimensions, but in 3D it becomes much easier. The space is shaped like a wedge, like this. I'll bring back in the pubic bone for orientation, so I hope that geometry makes sense to you. Let's bring in the lateral wall now, which is the obturator internus muscle, as well as part of the ischium, which is this part of the pubic bone. Let's bring in the medial wall now, which is of course levator anal. So now we see that the space exists between the bowl shaped pelvic floor, and the bones of the pelvis essentially, and as I mentioned, it is filled with fat. The cushioning provided by that adipose tissue allows the anal canal to expand during defecation. As always in anatomy, the form reflects function. The boundaries now, as I mentioned the lateral wall is obturator internus and part of the pubic bone, the medial wall, the pelvic floor muscles, the floor is the deep perineal fascia, and the posterior wall is the sacro tuberous ligament, as well as gluteus maximus. This view might look more familiar to you. This is what we tend to get shown in med school, and if you search ischioanal fossa on Google, this is likely what will come up. It's my hope that after this video, the dimensions of the ischioanal fossa make a little bit more sense to you now. Now if you'd like to navigate around this model yourself, hit the link in the video description below. Thanks for watching, hit subscribe, and we will see you next time.


Hi everyone! My name is Evelyn. We're going to be talking today about our Vida Latina Manos a la Obra program papel. I'm really excited to be talking to you about our crafts that we'll be working on today. If you didn't pick up one of these packets, don't worry, you can find all your supplies at home at your closest store. The packet should include some instructions of the crafts we'll be working on today. And then as well, a brief history of papel picado and the paper flowers. And my favorite part, a coloring page where you can color that, hang that up, and a little word search. Okay, so I'm going to get started. I'll be working specifically on these paper flowers. Maria, who you'll be seeing next, will be working on the papel picado. And then Sheridan will finish this off with the tratones voladores. So, papel picado. It's very popular in the Hispanic culture as well as we use it for decorating, for parties, for churches. It's been, it was brought into Mexico City and so we've really adopted that into our culture. Personally, I had these decorations all over for my quinceañera. We had strings of paper flowers just like these. My quinceañera dress was purple, so they were all purple and they looked really beautiful. I really was proud to have that part of my quinceañera. And then I'll share with you how we can make these different colors. We have a lot of samples here. You'll see they're all a little different. Some of them have their, a little pointier, a rounder. Some are smaller, those are so cute. And then some have different, you know, color coordination. And you can definitely do this at the start. So this is when you start to choose how do you want your paper flower to look like. And I really like a lot of same colors, so pinks. I'm going to do some pinks. And I might throw purple in there. I'm feeling a little, like I want to add some color in today. Let's see. Let me put these aside. So, we're going to make sure these are aligned nicely. And then we're going to get our scissors cut straight down the middle. Okay, we're going to stack those on top. And then we're going to fold these accordion style. So I'll just be going back and forth until I reach the end. So you should have something looking like this. And I'm going to grab one of our pipe cleaners. I'm going to grab the pink one so it can match. And you're simply going to make sure you have a little extra on this end so that you can pull it in and twist. And then we're just going to twist. It's up to you if you want. And make sure it's centered. So I'm going to pull this down a little because it's not too centered for me. There we go. And it's up to you if you want to keep this on there. Cut it off right here. The back parts, we cut it off so that it could be strung up. But I'm going to leave it for now. Now this is really where you start to shape your flower. You want it to have kind of like a pointy part. You want it round or curved. I'm going to try to do a kind of a curve. So you'll just cut the ends to curve those. I'm going to match that to the other side. So now we're going to open this up. You can kind of see the flower start to form here. I love these colors. I also made a blue one earlier. And this one I threw in some green, yellow colors. I really love the patterns. But you can also do them solid. That looks beautiful as well. So I'm going to open both sides up. This looks cute too. And this is, I think this is the hardest part of the paper flower. Because we have to be very patient during this part. We're going to pull each layer of the paper. And then you have to be very careful. That way you don't end up accidentally ripping it. So I'm going to start my way from, and you just pull. So we got the first one. And then you're going to pull the next one. And you're going to do that all the way through. So it's really starting to form. I just did one half right now. I'm going to continue on the other half. So you can really see it fills up nicely. And take your time. Because you will accidentally rip it, rip one of these layers. If you do, no biggie. You most likely won't be able to tell because it's so fluffy here. Okay, now I have some stuck together. There we go. Look at these colors. They're so nice together. I really think this came out really good. Now you have this other end. If you'd like you could maybe wrap this around a string and hang it.  Maybe even make it into a bracelet. That would look super nice. You have lots of opportunities to make this your own, gifted to someone. These flowers will never die.  And they're great decorations for any room, any desk, any area in your home. I hope you enjoyed making this with me. Next, Maria will be talking about our papel picado. Thank you. Hi everyone. I'm Maria. And today I'm going to show you how to make the papel picado. So we're going to use our tissue paper. We'll need some scissors, string if you would like to hang it up like we have back here, and also some tape. So we're going to use the instructions that came in your bag. Okay, so our first step is to grab our papel. And we are going to fold it lengthwise into fourths, okay? So here I'm using two papers. I just want to make two at the same time. So we're going to fold that in half like that. And we're going to fold it one more time. So now it should be into fourths. And for our next step, we're also going to fold it this part into half. Okay, so now we should have eight different layers. So for our third part, we're going to cut out the designs from the side and bottom edges. And we want to leave some room at the top part so that if you would like to hang it, there will be some space for us to do that. If not, we don't leave any space. It might look a little like this. And so we might have a hard time taping it onto our string. Okay, so what I'm going to do is on one edge, I'm going to make it round. Okay, so it'll look a little like this. And you can make any shape you want. If you want to make it pointy, you can go ahead and do that. All right, so now I'm going to fold it back again. And I am going to make some triangles. Okay, so we have one triangle here. Now I'm going to make another half circle. Okay, all right, and be careful not to get close to the edge of that top part.  And you can really do any shape that you want. Back here, we have some different designs as well. And if you want to get in the middle of the tissue paper, you can go ahead and gently fold that in so that you can have a little design in the middle there, too. So another half circle. And just be aware that right on this side, I have a lot more room for the paper. But on the other side, I made some other cuts so it might not show up on both sides. So if that's the case, you can fold it over like this. All right, so once you're finished making all the cuts on your paper, you can go ahead and unfold it. Okay, and this one, I made it long ways. Now we have two in different colors. So for the next part, you're going to make ratones voladores with Sheridan. Hi everybody, my name is Sheridan. Today I'm going to show you how to make some ratones voladores as part of our Manos a la Obra paper craft. The instructions are in your craft kit that if you picked up at the library, you should have these instructions. Otherwise, they're going to be in the description of the video below as well. Okay, so we're going to make the ratones voladores. For this, it's not really a paper craft per se. It's more of a toy. You'll see when you're done with the ratones voladores that you have this little thing that you can then swing around. They're pretty fun to play with.   Pretty cool. So let's make them. You're going to need some scissors, some of the candies which we put in your kit. If you didn't pick up a kit, you're going to need a candy that has the little ball in the middle and twist-tied ends just like this. So a butterscotch candy or something like that would work. A tizzi roll even would work. You're going to need some string and some of the big tissue paper pieces that were in your kit. So first steps, let's measure out some string you're going to need about an arm's length. So you're going to take the string, pull it all the way to the end of your arm like this, and then that's where you're going to make the cut. So you have your string. The excess string, you can put aside either to hang up your papel picado or to make some more of these ratones. Next up, you're going to need your tissue paper. So what you're going to do with the tissue paper is you have a really big long sheet. You're going to fold this sheet in half the long way just like that. And then you're going to fold it in half one more time so that you have a strip of tissue paper that's folded in half twice to make four layers. Then you're going to cut a thin strip of paper from the end of the sheet just like this. So I'm going to cut all the way to the end to just make myself a nice strip of tissue paper. This you can unfold at this point and then this part gets a little tricky. So parents, you may need to help out with this part or even older kids if you have a younger sibling help them out with this part because this is kind of the assembly portion. So now that we have our tissue paper, what we're going to do is we're going to lay it out on the table. We're going to take our string and we're going to lay that out on the table and we're going to kind of fold it so you can see that we're going to fold it so that I have like an L shape of string like this. Lay that on the table, put your tissue paper over the string, place your candy onto the end of the tissue paper. So now I have the candy, the tissue paper under that and the string under that. And then very carefully take the string with the end of it and tie a knot. Just a simple knot would work. You don't need anything super fancy. But make sure that you catch the very end of the candy and the tissue paper within the knot itself. So I'll show you what I mean. It's a little fiddly, but what you're looking for is a knot. As you can see here, I've got the candy itself, the knot is here, the end of the wrapper of the candy is poking out and the tissue paper is also tied up. So as you can see that holds the tissue paper to the candy. But we can't swing this around just yet because the weight is off. I've got the knot on one side of the candy, the other side of the candy is up here and I've got all this string left. Next up what I'm going to do is without cutting the string or anything, I'm going to pull it up to the other side of the candy and tie another knot up there. So what I did is I pulled it up, I put my finger here, I pulled it up, tied it around the little wrapper and then just looped it through where I had just left a little gap with my finger. So as you can see I've got the knot there, I'm pulling the string through and then you just want to pull it nice and tight. So now I've got my candy here, a knot on this side, a knot on this side and the tissue paper string. And now what you can do is just play around with it.   Hopefully that was a pretty good description. If you need, it's a little bit of extra time. Feel free to rewind the video, pause when you need a little bit of extra time to catch up and you should be good with your ratón volador. Don't forget also to join us for our next Manos a la Obra Craft as part of our Vida Latina series. That one is going to be aired on October 29th which is a Thursday at 4 p.m. We're going to be making mini altares for El Dia de los Muertos and the craft kits for those are going to be available at the Michelle Obama Library, the Mark Twain Library and the Main Library starting October 17th which is a Saturday. Okay, we'll see you then.


Yeah, all right Thank the thing you gotta focus the bank. No, no, no time out. I see blood in Jay's eyes Nice group.  Oh Nice to