Live from Las Vegas, it's theCUBE. Covering VMworld 2017, brought to you by VMware and it's ecosystem partner. Okay, welcome back everyone. Live here at VMworld 2017, day three wrap up. We're going to wrap up the whole show. I'm John Furrier with Dave Vellante, Stu Miniman, Keith Townsend. Cube set, two sets of coverage. Guys, great job. We had Justin Warren as well. John Troyer, Lisa Martin, great team. Guys, amazing three days. Lot of content, wall-to-wall coverage, double barrel shotgun, a cube content. Amazing. What's left in the tank? Let's get this done. Dave, your thoughts as VMworld comes down to a close. Well, so I missed VMworld last year as you know because I was doing another show. Pat was giving me a lot of grief for that. But if I go back two years ago, two years ago, VMware was shrinking. Its license revenue was in decline. Its cloud strategy was in continued disarray. Customers were kind of, you know, losing a lot of faith. Ecosystem was in turmoil. And the world thought that Amazon was going to completely destroy this company. Fast forward two years later, license growth, you know, 12, 13%, the company's growing is nearly $8 billion, $3 billion of operating cash, big stock buybacks, clarity on the cloud. And I think, and I'd love for Keith's opinion on this, a recognition of the customers that, I can't just throw everything in the cloud. Okay, that's one thing. But what I can do is try to bring the cloud model to my data and AWS, I mean, Amazon, sorry, VMware is going to be a partner in doing that. And I think those have all been tailwinds along with some product cycles and some- And Dell technology's buying out from the federation which was taken on water. Let's not forget about the federation EMC owned VMware and that was bought by Dell. People talk about the Dell discount. I'm not seeing the Dell discount right now. What is the Dell discount? What the Dell discount is because Dell owns VMware, just like when EMC owned VMware, it somehow shackles them and depresses the value. You know, Michael obviously doesn't agree with it. All right, so product focus as well has been not diminished at all. The products are front and center, they've still got the sessions. Guys, on the product side, what's your view? Strong product offering. I really love the message day one. A lot of the response from the community was like, Pat is feeling energized. He has this shadow of what is going to happen, post acquisition, is there going to be a Dell discount? You know what? VMware, famously five years ago, Pat was on stage and he said he's going to double down on virtualization. He jettisoned Pivotal and we're all wondering, what is he doing? Proved over the long run, he was right. Last year, this year, he's doubled down, not on just virtualization, but on this concept of SDDC, and it's finally starting to pay off. We're seeing consistently this concept of VCF, VMware Cloud Foundation on-premises, off-prem, and even in AWS, what ironically, you know, three, four years ago, we were like, well, is OpenStack going to eat VMware's lunch? VMware has turned the tables and become that OpenStack layer, that consistent cloud layer, at least for that legacy type of way to do IT, taking your internal data center processes and moving them to the cloud consistently across their VCAN network and the AWS. So if I get this right, you're basically saying that VMware essentially went from a position where they're twisting in the wind at all levels, turmoil in every department, every house is on fire, to pulling one major bold bet, wrapping it out of the hat, kicking ass, taking names, Pat Gelsinger made a team, made good calls. You know what, I'm not a fan of calling what VMware's SDDC thing a private cloud. I don't think it's true private cloud. It is valuable to the infrastructure, but it's not private cloud, but customers love the message. Take what I'm doing now, check a easy box, move it into AWS or VCAN and it's resonating. Well certainly Stu's just giving the ideas because the true private cloud report from Wikibon, which has been going viral at the show, been the talk of the show, and so everyone's been talking about is Wikibon's true private cloud report. People love that too because the message is simple. Take care of business at home called the on-prem. Yeah, change the operating model, that's going to take some time. Yeah, so my thought on this is, for years we were talking about the stack wars, lately we've been talking about the cloud wars, and for the last few years, when I talked to the partner ecosystem, they were shrinking their boosts, they were looking for alternatives. Remember Cisco? Oh geez, fleeing anything but VMware, let's see if we can do this. IBM, who was a big VMware partner, well they got RedX 86, where are they going to partner with VMware? On and on, HPE, going closer with Microsoft, even Dell, pre-acquisition, how much deeper are they going to go with Microsoft? Now, John, we've been talking on theCUBE for a while, there's Microsoft, their stack, their partnerships, their application, where they're putting it. Amazon, huge elephant in the room, when they made the deal it was like, oh well, Pat's on his way out the door and he's kind of pulling one over on Dell before he leaves. Now, I think we understand a little bit better where this fits in that portfolio of the Dell family. Open source, still something, we've beat on Pat and EMC before that, they're not really open source, they've got a proprietary software alternative that their partners seem excited about. Veeq, they really fumbled around with their cloud strategy for a year, they've got one that seems to be going well. We'll see, 4,500 service provider partners, the Amazon thing, we will still see where revenue comes. Still, that's a good point. Pat Gelsinger was kicking as a CEO now but was challenged on his job many times, so props to Pat, he made some good calls, stayed on course, held the line on the direction, did not cave at all, him and his team, they did it, there's been some turnover, as we know in VMware, obviously the results are clear, the scoreboard, they're winning. Question that I'll put to you guys right now, impact of Andy Jassy from AWS here on day one, how much of an impact was that? He made some statements and the question I want to ask you in addition to the impact is, he said, this is not an optical deal, most companies make optical illusional deals, make it look like they're all in and they don't really deliver. So, one, impact of Jassy being here, and two, who is he talking about? Well, well- What was the Barney deal? Well, so, okay, so first thing is I saw, I've always seen that AWS deal from Andy Jassy's perspective as TAM expansion. Big part of a CEO's job is I got to expand my TAM, especially when you see the growth of AWS and it's slowing down a little bit even though it's still impressive, he's got to expand his TAM, so how does AWS do that? Look to 500,000 VMware customers. So, that's number one. Barney deal, there are a lot of Barney deals out there. I mean, most- Who's he referring to? Because Google came on the stage the next day, I was getting tweets saying, Azure, Stu, guys, who's the deal? Who was Andy Jassy talking about? When he was looking at the VMware customers and saying, essentially, this is not implying others are. I'm not sure that he was necessarily throwing shade at anyone specifically. What there was is there was 18 months from when this deal went through, a lot of work. This was a lot of engineering work. Talked to the Cloud Foundation team, talked to the VSAN team, the amount of work to actually integrate because we know Amazon actually has an extensive engineering team. They hyper-optimize what they are doing. So this is not some white box that I just slapped VMware on and said, yeah, the BIOS, it works and everything. Where I still am a little concerned if I'm a VMware employee is customers, I talk to some customers that are really excited about this, the Lighthouse customers, they say, it's going to get my team that loves their vCenter, they love everything. It's going to help them move faster. And then you talk into, oh, there's these services that they're going to be able to use. I'm like, well, how much are they going to realize? Oh, hey, this is great. And the VMware sales reps are going to just get eaten by the lion while the customer goes off. So the impact's big then from your saying, but you won't answer the question of who he's referring to. You don't think he's referring to anyone. What do you think? Let's look at, I like the comment about how difficult the integration was. Last year when I read this, I'm like, wait, hold on, what? The AWS who is notorious about controlling their message. What I thought was funny is that, Andy didn't use the term private cloud. He didn't use the term VMware cloud. He VMware infrastructure in AWS, which is a massive engineering effort. So from that, I question whether or not they could execute upon that, but any Jassy being on stage on Monday showed the commitment that we're going to make these other services work. The total addressable market of 500,000 additional customers. You don't do this for bare metal servers. VMware has 500,000 customers. Yeah. Yeah, that's a great total addressable market, but that's not where AWS is going to grow by hosting physical servers, by selling more Lambda, selling more CDN, selling more pass is the key. And where VMware and AWS relationship is weak is in that true integration between the two hybrid IT environments. So when you say, where's the Barney deals? The Barney deals are, I think it's across the industry. Unless you're getting fully imbed and committed to make that level of investment. Engineering resources. This comes back down to what the new kind of engagement between biz dev deals look like. You need to have that kind of level. I have no problem pointing to the Nutanix Google deal. Anything that people are doing with Azure, no one's partnered at this level. Okay, Azure is a good one too, because I've heard from startups that have been enticed by the dollars because Microsoft's been sprinkling some cash on who have left to go back to AWS because of technical reasons, reverse proxies, basically clued software cluges that basically make stuff work. Well, so, how much do we know about the IBM VMware relationship? Because, I mean, IBM's software hosting, right? They've got a lot more experience with VMware. IBM has said, hey, I think they're shipping. They've been shipping for quite some time. So there's an example of engineering that had already largely been done that's actually delivering value for customers. Pat probably brought it up because it's a great distribution channel for him. And I think it keeps right on. AWS doesn't speak in terms of VMs. They talk in terms of cloud services, like Lambda, database services, middleware, PAS layers. That's really where they're going to hook people in this community into their platform. Okay, so here's a question to end this segment as we wrap up the show, because this is kind of where it's all going. To me, my big epiphany was the following.  Huge accomplishment. He's done great in his career. He's only getting better. And then Sam Ramjay, great developer, chops, knows software, ecosystems. Not Andy Jassy in terms of the title, but in terms of status, still a solid guy. Two contrasting positions. Running the biggest cloud today to Google Brain Power. Okay, so you're looking at that, you're saying, hmm, where is this going to go? So the question on the table is, what does it take for someone to be successful in today's IT environment? Does IT need to be smarter in business or does business need to be more smarter in IT or both? And does Google have enough IQ in IT to actually make the products fast enough or are they at risk? Well, I'll take the customer point of view. And we always talk about people process technology. The technology is maturing. And it's maturing pretty quickly, but maybe still not quite to the point where the true private cloud vision is where we need it to be. But what's going to slow that down is the people and process side is going to take a lot longer. Stu, you made a comment yesterday, VMware is moving at the pace of the CIO. It's key flying, he's been using all week. Great line. Robin Matlock heard that today. Of course, marketing, you know, CMO said, and the CIO needs to move faster. Well, guess what, they can't. So, and I thought it was just a perfect- But that is exactly the dilemma, isn't it? Yeah, it really is, and this stuff is hard. And cloud doesn't necessarily make it any easier. If anything, it makes it more complex because it's a completely new business model. But remember the old term fork lift upgrade? Okay, you don't have fork lift upgrades anymore. You have rip and replay. Whatever word you want to use. Now we have lift and shift. Lift and shift, rip and replace, lift and shift. Is Google, and this is my challenge to say, I didn't have time to ask this question, and I'll certainly do one-on-one when I next time to see him. Is Google smart enough with IQ and IT? Certainly we know they're smart enough. But do they have enough IQ and IT to really make the transformation, or are they betting on a rip and replace version of a cloud? So John, no doubt Google's smart, and they built amazing things. That the ripple that Google has through the industry is phenomenal. They spin off whole industries based on what they're doing. Google, playing a very different game than Amazon is. You know, when you talk to customers and how they're first getting onto Google, data's really important. Analytics, of course. Couple years ago, Google was saying, oh, we're just going to be that data analytics cloud.  Amazon, the company, remember, Amazon isn't just AWS. Andy Jassy fits into Jeff Bezos' great plans. I'd love to hear, when we go to re-invent, what's happening to Whole Foods that's impacted by AWS? They are everywhere. They are, you know, what Walmart did. I'm talking about time expansion. My wife texted me, I love Amazon even more. But there's a really interesting, right, because Walmart's now using its muscle to say, hey, you're going to do business with AWS? Absolutely. And Whole Foods, you're not doing business with us. Yeah. So the point being that digital business is allowing companies to traverse industries, and now you're seeing it in really interesting competitive lashbacks. So Capital One was on stage. I've said something over the past couple of years has been controversial. No one believes me, but I believe this is what needs to happen. Capital One claims that it's a technology company. They're not a bank. Well, I want a bank with a bank. That's a whole other conversation. But technology is just a tool to get your job done.  AI, I talked to Chuck Hollis Oracle about this on the podcast the other day. AI is just going to be a business toolkit that a business user uses. To the question, business users will become smarter at using technology. The cloud provider that enables the business user to have at least amount of friction to use that technology to solve business challenges will win. The question is, is that Google or Andy Jassy who has done it with Amazon or some other cloud provider that's eating their own dog food? Okay guys, let's wrap this up. Let's go around the table, one word, two words. How do you wrap up VMware's position vis-a-vis as they go forward? Well, VMware's on fire. I think the data center is on fire. The ecosystem is reforming around the cloud. There's a lot of momentum right now. I mean, I'm wondering, okay, what's going to happen to derail this? But right now the fundamentals look very good. Relevant, John. Yeah. Cool and relevant again. Yeah, yeah, it's right. Cool, we can all argue. Look, I liked what I heard with Amazon. It was better than I was expecting coming in. Getting in there, they talked about serverless. They talked about edge computing, something I actually had a couple really good conversations digging into partners doing IoT and customers looking at that. If they can be relevant, not just in the data center, but in the cloud and even at the edge, VMware's going to have a good life going forward. Yeah, and I'll wrap it up. You stole my word relevant. So I'll say, I'll go a little bit further than irrelevant. VMware is still the leader in enterprise infrastructure software. They're not letting that lead go. Yeah, well, just on that, the last thing, they're an infrastructure software company. I think they showed how they can be more than that in the future. And my take is smart strategy playing out. Now people starting to realize the long game that Pat's been playing, it's showing off in the financial results and there's clarity. And you can see the game playing out. You're starting to see there where they're going to position. So good job, guys. That's a wrap. We want to thank our sponsors. Without sponsors, the Cube would not be able to come for the three days of wall-to-wall coverage provided to the community. We get great support from the folks on Twitter. We get support from the folks who watch the videos. Want to thank you for watching and also the sponsors. VMware, ULU Packard Enterprise, Dell EMC, IBM, OVA, CenturyLink, Datrium, Densify, Druva, Hitachi, Infinidad, Camarino, NetApp, Nutanix, Red Hat, Rackspace, Rubrik, SkyTap, Veeam, and Zadara Storage. Thanks to all the 20 sponsors that we can go out and bring our best stuff here. Really appreciate your support. Thanks for watching theCUBE. This is a wrap from VMworld. Thanks, guys. Thanks to everybody here. And that's a wrap for VMworld 2017. Thanks for watching.


Act four of the Duchess of Malfi. This is a LibriVox recording. All LibriVox recordings are in the public domain. For more information or to volunteer, please visit LibriVox.org. The Duchess of Malfi by John Webster. Act four, scene one. Enter Ferdinand and Basela. How doth our sister Duchess bear herself in her imprisonment? Nobly. I'll describe her. She's sad as one long used to it, as she seems rather to welcome the end of misery than shun it. A behaviour so noble as gives a majesty to adversity. You may discern the shape of loveliness more perfect in her tears than in her smiles. She will muse for hours together, and her silence, he thinks, expresseth more than if she spake. Her melancholy seems to be fortified with a strange disdain. She's so. And this restraint, like English mastiffs that grow fierce with tying, makes her too passionately apprehend those pleasures she is kept from. Curse upon her! I will no longer study in the book of another's heart. Inform her what I told you. Act six. Enter Duchess and Attendance. All comfort to your grace. I will have none. Pray thee, why dost thou wrap thy poisoned pills in gold and sugar? Your elder brother, the Lord Ferdinand, is come to visit you, and sends you word, because he once rashly made a solemn vow never to see you more, he comes in night, and prays you, gently, neither torch nor taper shine in your chamber. He will kiss your hand and reconcile himself, but for his vow he dares not see you. At his pleasure. Take hence the lights. He's come. Act seven. Attendance with lights. Enter Ferdinand. Where are you? Here, sir. This darkness suits you well? I would ask you pardon. You have it, for I accounted the honourableest revenge, where I may kill to pardon. Where are your cubs? Whom? Call them your children, for though our national law distinguished bastards from true legitimate issue, compassionate nature makes them all equal. Do you visit me for this? You violate a sacrament of the church shall make you howl and hell-fort. It had been well, could you live thus always? For indeed, you were too much in the light, but no more. I come to seal my peace with you. Here's a hand.  To which you have vowed much love. The ring upon to you gave. I affectionately kiss it. Pray do, and bury the point of it in your heart. I will leave this ring with you for a love token, and the hand as sure as the ring. And do not doubt, but you shall have the heart, too. When you need a friend, send to him that owed it. You shall see whether he can aid you. You are very cold. I fear you are not well after your travel. Lights! Oh, horrible! Let her have lights enough. That's it. What witchcraft doth he practice that he had left a dead man's hand here? Here is discovered behind a traverse the artificial figures of Antonio and his children, appearing as if they were dead. Look you. Here's the piece from which it was tamed. He doth present you this sad spectacle, that now you know directly they are dead. Hereafter you may wisely cease to grieve for that which cannot be recovered. There is not between heaven and earth one wish I stay for after this. It wastes me more than to wear my picture fashioned out of wax, stuck with a magical needle, and then buried in some foul dung-hill. And yarns an excellent property for a tyrant, which I would account mercy. What's that? If they would find me to that lifeless trunk and let me freeze to death. Come! You must live.  Portia, I'll newkindle thy coals again and revive the rare and almost dead example of a loving wife. Oh, fie! Despair!  The church enjoins fasting. I'll starve myself to death. Leave this vain sorrow. Things being at the worst begin to mend. The bee, when he hath shot his sting into your hand, may then play with your eyelid. Good, comfortable fellow! Persuade a wretch that's broke upon the wheel to have all his bones new set, entreat him live to be executed again. Who must dispatch me? I account this world a tedious theatre, for I do play a part in it against my will. Come! Be of comfort.  Indeed I have not leisure to tend so small a business.  Thou art a fool, then, to waste thy pity on a thing so wretched as cannot pity itself. I am full of daggers. Puff! Let me blow these vipers from me. Enter, servant. What are you? One that wishes you long life. I would thou wilt hang'd for the horrible curse thou has given me. I shall shortly grow one of the miracles of pity. I'll go pray. Exit, servant. No. I'll go curse. Oh, fi! I could curse the stars. Oh, fearful! And those three smiling seasons of the year into a Russian winter. Nay, the world to its first chaos. Look you. The stars shine still. Oh, but you must remember, my curse hath a great way to go. Plagues that make lane'd through largest families consume them. Fi, lady! Let them, like tyrants, never be remembered but for the ill they have done. Let all the zealous prayers of mortified churchmen forget them. Oh, uncharitable! Let heaven a little while cease crowning martyrs to punish them. Go, howl them this, and say I long to bleed. It is some mercy when men kill with speed. Exit. Re-enter, Ferdinand. Excellent! As I would wish, she's plagued in art. These presentations are but framed in wax. By the curious master in that quality, Vincenzo Loriola, and she takes them for true, substantial bodies. Why do you do this? To bring her to despair.  Send her a penitential garment to put on next to her delicate skin and furnish her with beads and prayer books.  That body of hers! While that my blood-ran purant was more worth than that which thou wouldst comfort, call the soul. I will send her masks of common courtesans, have her meat served up by bods and ruffians, and cause she'll needs be mad. I am resolved to remove forth the common hospital, all the mad folk, and place them near her lodging. Then let them practice together, sing and dance, and set their gambles to the full of the moon. If she can sleep the better for it, let her. Your work is almost ended. Must I see her again? Yes. Never. You must? Never in my own shape.  When you send me next, the business shall be comfort. Very likely. Thy pity is nothing of kin to thee. Antonio looks about millen. Thou shalt shortly thither defeat a fire as great as my revenge, which never will slack till it have spent his fuel. Intemperate egg use make physicians cruel. Excellent. Scene two. Enter Duchess and Coriola. What hideous noise was that? Tis the wild consort of madmen, lady, which your tyrant brother hath placed about your lodging. This tyranny, I think, was never practiced till this hour. Pfft. Indeed, I thank him. Nothing but noise and folly can keep me in my right wits, whereas reason and silence make me stark mad. Sit down. Discourse to me some dismal tragedy. Oh, twill, increase your melancholy. Thou art deceived. To hear of greater grief would lessen mine. This is a prison. Yes, but you shall live to shake this endurance off.  The robin-red breast and the nightingale never live long in cages.  What think you of, madam? Of nothing. When I'm used thus I sleep. Like a madman with your eyes open. Does thou think we shall know one another in the other world? Yes, out of question. Oh, that it were possible we might but hold some two days' conference with the dead. From them I should learn somewhat I am sure I never shall know here. I'll tell thee a miracle. I am not mad yet to my cause of sorrow. The heaven or my head seems made of molten brass, the earth of flaming sulfur. Yet I am not mad.  Necessity makes me suffer constantly, and custom makes it easy. Who do I look like now? Like to your picture in the gallery. A deal of life in show, but none in practice. Or rather like some reverent monument whose ruins are even pitied. Very proper. And fortune seems only to have her eyesight to behold my tragedy. How now? What noise is that? Enter, servant. I am come to tell you your brother hath intended you some sport. A great physician, when the pope was sick of a deep melancholy, presented him with several sorts of madmen. Which, while the object being full of change and sport, forced him to laugh. And so the impostume broke.  Let them come in. There's a mad lawyer and a secular priest, a doctor that hath forfeited his wits by jealousy. An astrologian that in his work said such a day a month should be the day a doom. And failing of to have ran mad. An English tailor crazed in the brain with the study of new fashions. A gentleman Usher quite besight himself with care to keep in mind the number of his lady's salutations or how-do. She employed him each morning. A farmer too, an excellent nave in grain. Mad, cos he was hindered transportation. And let one broke her that's mad loose to these. You'd think the devil were among them. Sit, Corayola. Let them loose when you please, for I am chained to endure all your tyranny. Enter madman. Here by a madman the song is sung to a dismal kind of music. Oh, let us howl some heavy note, some deadly dogged howl. Sounding as from the threatening throat of beasts and fatal foul. As raven screech owls, bulls and bears will bell and ball our parts. Till irksome noise have cloied your ears and corrosive edged your hearts. At last when, as our choir wants breath, our bodies being blessed, we'll sing like swans to welcome death and die in love and rest. Doomsday not come yet.  I cannot sleep. My pillow is stuffed with a litter of porcupines.  I have skill in heraldry. Hast? You give for your crest a woodcock's head, with the brains picked out on it.  Greek is turn, Turk. We are only to be saved by the hell-vision translation. Come on, sir. I will lay the law to you. Oh, rather lay a corrosive. The law will eat to the bone. He that drinks but to satisfy nature is damned.  What's he? A rope-maker. No, no, no. A snuffling-nave, that while he shows the tombs will have his hand in a wench's placket. Woe to the carosh that brought home my wife from the mosque at three o'clock in the morning. It had a large feather-bed in it. I have paired the devils' nails forty times, roasted them in raven's eggs, and cured Agus with them. Get me three hundred milch-bats to make posits to procure sleep. All the college may throw their caps at me. I have made a soap-boiler, costive. It was my masterpiece. Here the dance, consisting of eight madmen, with music answerable thereon too. After which Basala, like an old man, enters. Is he mad too? Pray question him. I'll leave you. Excellent servant and madman. I am come to make thy tomb. My tomb? Thou speaks'd as if I lay upon my death-bed gasping for breath. Does thou perceive me sick? Yes, and the more dangerously, since thy sickness is insensible. Thou art not mad, sure. Dost know me? Yes. Who am I? Thou art a box of worm-seed, at best but a salvatore of green mummy. What's this flesh? A little curded milk, fantastical puff-paste. Our bodies are weaker than those paper-prisons boys use to keep flies in. More contemptible than since ours is to preserve earthworms. Did thou ever see a lark in a cage? Such is the soul in the body.  Am not I thy duchess? Thou art some great woman, sure. For riot begins to sit on thy forehead, clad in grey hairs, twenty years sooner than on a merry milk-maid's. Thou sleepest worse than if a mouse should be forced to take up her lodging in a cat's ear. A little infant that breeds its teeth, should it lie with thee, will cry out, as if thou were the more unquiet bedfellow. I am, duchess of mouthy still. That makes thy sleep so broken. Glories, like glow-worms, are far off shine bright, but looks too near, have neither heat nor light. Thou art very plain. My trade is to flatter the dead, not the living. I am a tomb-maker. Thou comes to make my tomb. Yes. Let me be a little merry. Of what stuff wilt thou make it? They resolve me first. Of what fashion? Why, do we grow fantastical on our deathbed? Do we affect fashion in the grave? Most ambitiously.  They're not carved with their eyes fixed upon the stars, but as their minds were wholly bent upon the world, the self-same way they seem to turn their faces. Let me know fully, therefore, the effect of this thy disson preparation, this talk fit for a charnel. Now I shall enter executioners with a coffin, cords, and a bell. Here is a present from your princely brothers, and may it arrive welcome, for it brings last benefit, last sorrow. Let me see it. I have so much obedience in my blood, I wish it in their veins to do them good. This is your last present chamber. Oh, my sweet lady! Peace, it affrights not me. I am the common bell-man, that usually is sent to condemned persons the night before they suffer. Even now thou sets thou was to tomb-maker. It was to bring you by degrees to mortification. Listen, Hark! Now everything is still. The screech owl and the whistler shrill call upon our dame aloud, and bid her quickly don her shroud. Much you had of land and rent, your length in clays now competent. A long war disturbed your mind. Here your perfect peace is signed. Of what is fools make such vain-keeping, sin their conception, their birth weeping, their life a general mist of error, their death a hideous storm of terror. Strew your hair with powders sweet, don clean linen, bathe your feet, and the foul fiend more to check. A crucifix let bless your neck. It is now full tide between night and day. End your groan and come away. Hence, villains, tyrants, murderers, alas! What will you do with my lady? Call for help. To whom? To our next neighbours. They are mad, folks. Remove that noise. Farewell, Coriola. In my last will I have not much to give. How many hungry guests have fed upon me. Thine will be a poor reversion.   And let the girl say her prayers ere she sleep. Coriola is forced out by the executioners. Now, what you please? What death? Strangling. Here are your executioners. I forgive them. The apoplexy, guitar or cough of the lungs would do as much as they do. Doth not death fright you? Who would be afraid, aunt, knowing to meet such excellent company the other world?  This cold should terrify you. Not a wit. What would it pleasure me to have my throat cut with diamonds, or to be smothered with cassia, or to be shot to death with pearls? I know death hath ten thousand several doors for men to take their exits, and it is found they go on such strange geometrical hinges he may open them both ways. Anyway, for heaven's sake, so I were out of your whispering. Tell my brothers that I perceive death now I am well awake. Best gift is they can give, or I can take. I would feign put off my last woman's fault. I'd not be tedious to you. We are ready.  Yet stay. Heaven's gates are not so highly arched as Prince's palaces, they that enter there must go upon their knees. Niels. Come, violent death, serve for Mandragora to make me sleep. Go tell my brothers when I am laid out, they then may feed in quiet. They strangle her. Where's the waiting woman? Fetch her, some other strangle the children. Enter Coriola.  Oh, you are damned perpetually for this. My turn is next. It's not so ordered. Yes, and I'm glad you're so well prepared for it. You are deceived, sir. I am not prepared for it. I will not die. I will first come to my answer and know how I have offended. Come, dispatcher. You kept her counsel. Now you shall keep ours. I will not die. I must not. I am contracted to a young gentleman. Here's your wedding ring. Let me but speak with the Duke. I'll discover treason to his person. Delays, throttle her. She bites and scratches.  I have not been at confession this two years. To executioners. When? I am quick with child. Why then, your credit saved. Executioners strangle Coriola. Bear her into the next room. Let these lie still. Exit the executioners with a body of Coriola. Enter, Ferdinand. Is she dead? She is what you'd have her. But here begin your pity. Shows the children strangled. Alas, how have these offended? The death of young wolves is never to be pityed. Fix your eye here. Constantly. Do you not weep? Other sins only speak. Murder shrieks out. The element of water moistens the earth, but blood flies upwards and bedews the heavens. Cover her face. My eyes dazzle. She died young. I think not so. Her infelicity seemed to have years too many. She and I were twins. And I should die this instant. I had lived her time to a minute. It seems she was born first. You have bloodily approved the ancient truth. That kindred commonly do worse agree than remote strangers. Let me see her face again. Why did not thou pity her? What an excellent honest man might thou have been if thou had borne her to some sanctuary or bold in good cause opposed thyself with thy advanced sword above thy head between her innocence and my revenge. I badly, when I was distracted of my wits, go kill my dearest friend that thou hast done for let me but examine well the cause. What was the meanness of her match to me? The only I must confess I had a hope had she continued widow to have gained an infinite mass of treasure by her death. And that was the main cause, her marriage. That drew a stream of gall quite through my heart. For thee, as we observe in tragedies that a good actor many times is cursed for playing a villain's part, I hate thee for it. And for my sake, say, thou hast done much ill well. Let me quicken your memory, for I perceive you are falling into ingratitude. I challenge the reward due to my service. I'll tell thee what I'll give thee. Do. I'll give thee a pardon for this murder. Huh? Yes, and is the largest bounty I can study to do thee.  By yours. Mine? Was I her judge? Did any ceremonial form of law doom her to not being? Did a complete jury deliver her conviction up in court? Where shall thou find this judgment registered unless in hell?  The office of justice is perverted quite when one thief hangs another. Who shall dare to reveal this? Oh, I'll tell thee. The wolf shall find her grave and scrape it up, not to devour the corpse, but to discover the horrid murder. You, not I, shall quake for it. Leave me! I will first receive my pension.  When your ingratitude is judged, I am so. Oh, horror! That not the fear of him which binds the devils can prescribe man obedience?  Why, fair thee well, your brother and yourself are worthy men. You have a pair of hearts of hollow graves, rotten and rotting others, and your vengeance, like two chained bullets, still goes arm in arm. You may be brothers, for treason, like the plague, doth take much in a blood. I stand like one that have longed in a sweet and golden dream. I am angry with myself now that I wake. Get thee into some unknown part of the world that I may never see thee! Let me know wherefore I should be thus neglected. Sir, I served your tyranny, and rather strove to satisfy yourself than all the world. And though I loathe the evil, yet I love you that did counsel it, and rather sought to appear a true servant than an honest man. I'll go hunt the badger by our light to the deed of darkness. Exit. He's much distracted. Off, my painted honor! While with vain hopes our faculties retire, we seem to sweat in ice and freeze in fire. What would I do were this to do again? I would not change my peace of conscience for all the wealth of Europe. She stirs. He is life. Return, fair soul, from darkness, and lead mine out of this sensible hell. She's warm. She breathes. Upon thy pale lips I will melt my heart to store them with fresh color. Who's there, some cordial drink? Alas, I dare not call.  Her eye hopes and heaven, and it seems to hope that late was shut to take me up to mercy. Antonio. Yes, madam. He is living. The bodies you saw were but famed statues. He's reconciled to your brothers. The pope hath wrought the atonement. Mercy dies. Oh, she's gone again. There the cords of life broke.  That we cannot be suffered to do good when we have a mind to it. This is manly sorrow. These tears I'm very certain never grew in my mother's milk. My estate is sunk below the degree of fear. Where were these penitent fountains while she was living? Oh, they were frozen up. Here is a sight as direful to my soul as is the sword unto a wretch hath slain his father. Come, I'll bear thee hence and execute thy last will. That's deliver thy body to the reverent dispose of some good-women. That the cruel tyrant shall not deny me. Then I'll post to Milan where somewhat I will speedily enact worth my dejection. Exit with the body. End of Act Four. Act Five of the Duchess of Malfi. This is a LibriVox recording. All LibriVox recordings are in the public domain. For more information or to volunteer, please visit LibriVox.org. The Duchess of Malfi. By John Webster. Act Five. Scene One. Enter Antonio and Delio. What think you of my hope of reconcilement to the Aragonian brethren? I misdoubt it. For though they have sent their letters of safe conduct to your repair to Milan, they appear but nets to entrap you. The Marquis of Pescara, under whom you hold certain land in cheat, much against his noble nature, hath been moved to seize those lands, and some of his dependents are at this instant making it their suit to be invested in your revenues. I cannot think they mean well to your life.  You are still in heretic to any safety that I can shape myself. Here comes the Marquis. I will make myself petitioner for some part of your land to know whether it is flying. I pray, too. Withdraws. Enter Pescara. Sir, I have a suit to you. To me? An easy one. There is the Citadel of St. Bennett with some demeans of late in the possession of Antonio Bologna. Please, you bestow them on me. My friend, but this is such a suit. Nor fit for me to give, nor you to take. No, sir. I will give you ample reason for it soon in private. Here is the Cardinals mistress. Enter Julia. My Lord, I am grown your poor petitioner and should be an ill beggar had I not a great man's letter here, the Cardinals, to court you in my favour. Gives a letter. It is for you, the Citadel of St. Bennett, that belonged to the banished Bologna. Yes. I could not have thought of a friend, I could rather pleasure with it. It is yours. Sir, I thank you, and he shall know how doubly I am engaged, both in your gift and speediness of giving, which makes your grant the greater. Exit. How they fortify themselves with my ruin. Sir, I am little bound to you. Why? Because you denied this suit to me and gave it to such a creature. Do you know what it was? It was Antonio's land, not forfeited by course of law, but ravished from his throat by the Cardinals and Treaty. It were not fit I should bestow so main a piece of wrong upon my friend. It is a gratification only due to a strumpet, for it is injustice. Shall I sprinkle the pure blood of innocence to make those followers I call my friend's look rudder upon me? I am glad this land, tain from the owner by such wrong, returns again unto so foul an use as salary for his lust. Learn, good Delio, to ask noble things of me, and you shall find I'll be a noble giver. You instruct me well. Why, here's a man now with fright impudence from sauciest beggars.  I am going to visit him. Exit. It is a noble old fellow. What course do you mean to take, Antonio? This night I mean to venture all my fortune, which is no more than a poor lingering life to the Cardinals' worst of malice. I have got private access to his chamber, and intend to visit him about the Mid of Night, as once his brother did our noble Duchess. It may be that the sudden apprehension of danger, for I'll go in my own shape, when he shall see it freight with love and duty, may draw the poison out of him, and work a friendly reconcilement. If it fail, yet it shall rid me of this infamous calling. For better fall once than be for ever falling. I'll second you in all danger, and, however, my life keeps rank with yours. You are still my loved and best friend. Exit. Scene two. Enter. Pascara and Doctor. Now, Doctor, may I visit your patient? If it please your lordship, but he's instantly to take the air here in the gallery by my direction. Praedy, what's his disease? A very pestilent disease, my lord. They call it lycanthropia. What's that? I need a dictionary to it. I'll tell you, in those that are possessed with their overflows such melancholy humour they imagine themselves to be transformed into wolves, steal forth to churchyards in the dead of night, and dig dead bodies up. As two nights since, one met the duke about midnight in a lane behind St. Mark's church, with the leg of a man upon his shoulder, and he howled fearfully. Said he was a wolf. Only the difference was a wolf's skin was hairy on the outside, his on the inside. Bad them take their swords, rip up his flesh, and try. Straight I was sent for, and, having ministered to him, found his grace very well recovered. I am glad, Aunt. Yet, not without some fear of a relapse. If he grow to his fit again, I'll go a nearer way to work with him than ever Paracelsus dreamt of. If they'll give me leave, I'll buffet his madness out of him. Stand aside, he comes. Enter Ferdinand, Cardinal, Malateste, and Basola. Leave me. Why doth your lordship love this solitariness? Eagles commonly fly alone. They're crows, doze, and starlings that flock together. Look, what's that, follows me? Nothing, my lord. Yes. Tis your shadow. Stay it. Let it not haunt me. Impossible, if you move and the sun shine. I will throttle it. Throws himself down on his shadow.   How is possible I should catch my shadow unless I fall upon?  Rise, good my lord. I am studying the art of patience. Tis a noble virtue. To drive six snails performing from this town to Moscow. Neither use code nor whip to them, but let them take their own time. The patientest man of the world match me for an experiment and I'll crawl after like a sheep-fighter. Force him up. They raise him. Use me well, you are best. What I have done, I have done. I'll confess nothing. Now, let me come to him.   What's he? Your doctor.  I must do mad tricks with him for that's the only way on't. I have brought your grace a salamander's skin to keep you from sun-burning. I have cruel sore eyes. The white of a cockatrix's egg is present remedy. Let it be new-laid one, you are best. Hide me from him. Physicians are like kings. They break no contradiction. Now he begins to fear me. Now, let me alone with him.  Let me have some forty urinals filled with rose-water. He and I'll go pelt one another with them. Now he begins to fear me. Can you fetch your frisk, sir? Let him go.  I find by his eye he stands in awe of me. I'll make him as tame as a door-mouse. Can you fetch your frisk, sir? I will stab him into a cullus, flay off his skin to cover one of the anatomies this rogue has set in the cold yonder in Barbra-Sharugin's hall. Heads! Heads!  Throws the doctor down and bates him. There's nothing left of you but tongue and belly, flattery and lechery. Exit. Doctor, he did not fear you. Thirrally. Drew, I was somewhat too forward. Mercy upon me.  Knows your grace what accident hath brought on to the prince this strange distraction. Sire, I must fain somewhat. Thus they say it grew. You have heard it ruined for these many years. None of our family dies, but there is seen the shape of an old woman, which is given by tradition to us to have been murdered by her nephews for her riches. Such a figure one night, as the prince set up late at his book, appeared to him. When crying out for help, the gentleman of his chamber found his grace all on a cold sweat, altered much in face and language. Since which apparition he's grown worse and worse, and I much fear he cannot live. Sir, I would speak with you. We'll leave your grace. Wishing to the sick prince our noble lord. All health of mind and body. You are most welcome. Exxon, Pescara, Malateste and Dr. Are you come? So. Aside. This fellow must not know by any means I had intelligence in our duchess's death, for though I counseled it, the full of the engagements seemed to grow from fertile land. Now, sir, how fair is our sister? I do not think but sorrow makes her look like to an off-dive garment. She shall now take comfort from me. She shall now look so wildly. Oh, the fortune of your master here, the prince dejects you. And be you of happy comfort, if you do one thing for me, I'll entreat. Though he had a cold tombstone, or his bones, I'd make you what you would be. Anything. Give it me in a breath and let me fly to it. They that think long, small expedition win, for musing much of an end, cannot begin. Enter Trillia. Sir, will you come into supper? I am busy, leave me. Aside. What an excellent shape hath that fellow. Excellent. Tis thus. Antonio lurks, here in Millenburg, inquire him out and kill him. While he lives, our sister cannot marry, and I have thought of an excellent match for her. Do this, and style me that advancement. But by what means shall I find him out? There is a gentleman called Delio here in the camp, that hath long when approved his loyal friend. Set eye upon that fellow. Follow him to Mass. Maybe, Antonio. Although he do account religion but a school name, for fashion of the world, may accompany him. Or else go inquire out Delio's confessor, and see if you can bribe him to reveal it. That there are a thousand ways a man might find to trace him. Hath to know what fellow haunts the Jews for taking up great sums of money, and for sure he's in want. Or else go to the picture makers, and learn who brought her picture lately. Some of these happily may take. Well, I'll not freeze in the business. I would see that wretched thing Antonio above all sights in the world. Do, and be happy. Excellent. This fellow does breed bassinists' desires. He's nothing else but murder. Yet he seems not to have notice of the Duchess's death. Here's his cunning. I must follow his example. There cannot be a sureer way to trace than that of an old fox. Re-enter Julia with a pistol. So, sir, you are well met. How now? Nay, the doors are fast enough.  Treachery? Yes. Confess to me which of my women was you hired to put love-powder into my drink? Love-powder? Yes, when I was at Malfi. Why should I fall in love with such a face else? I have already suffered for the so much pain.  Sure, your pistol holds nothing but perfumes or kissing comforts. Excellent lady. You have a pretty way out to discover your longing.  Yet this is wonderous strange. Compare thy four and my eyes together. You'll find my love no such great miracle. Now you'll say I want. This nice modesty in ladies is but a troublesome familiar that haunts them. No, you me. I am a blunt soldier. The better. Sure there wants fire where there are no lively sparks of roughness. And I want compliment. Why ignorance and courtship cannot make you do amiss if you have a heart to do well. You're very fair. Nay, if you lay beauty to my charge I must plead un-guilty.  You will mar me with commendation. Put yourself to the charge of courting me whereas now I will you. Aside, I have it. I will work upon this creature. Let us grow most amorously familiar. If the great cardinal now should see me thus would he not count me a villain? No, he might count me a wanton not lay a scruple of offence on you. For if I see and steal a diamond the fault is not of the stone but in me, the thief that perloins it. I am sudden with you. We that are great women of pleasure used to cut off these uncertain wishes and un-quiet longings and in an instant joined the sweet delight and the pretty excuse together. Had you been at the street under my chamber window even there I should have courted you.  Bid me do somewhat for you presently to express I love you. I will. And if you love me fail not to effect it. The cardinal is grown wondrous melancholy. Demand the cause. Let him not put you off with feigned excuse discover the main ground on it. Why would you know this? I have depended on him and I hear that he has fallen in some disgrace with the emperor. If he be like the mice that forsake falling houses I would shift to other dependents. You shall not need follow the wars. I'll be your maintenance. And I your loyal servant but I cannot leave my calling. Not leave an ungrateful general for the love of a sweet lady.  Will you do this? Connectly. Tomorrow I'll expect the intelligence. Tomorrow. Get you into my cabinet. You shall have it with you. Do not delay me no more than I do you. I am like one that is condemned. I have my pardon promised but I would see it sealed.  You shall see me wind my tongue about his heart like a schenix. Exit Basala. Re-enter Cardinal. Where are you? Enter servants. Let none upon your lives have conference with the Prince Ferdinand unless I know it. In this distraction he may reveal the murder. Exit servants. Beyond my lingering consumption I am weary of her and by any means will be quit of. How now my lord? What ails you? Nothing. Oh, you are much altered. Come. I must be your secretary and remove this lead from off your bosom. What's the matter? I may not tell you. Are you so far in love with sorrow you cannot part with part of it? Or think you I cannot love your grace when you are sad as well as merry? Or do you suspect I that have been a secret to your heart and cannot be the same unto your tongue? Satisfy thy longing the only way to make thee keep my counsel and not to tell thee. Tell your echo this or flatterers that like echoes still report what they hear they're most imperfect and not me. For if that you be true unto yourself I'll know. Will you rack me? No. Judgment shall draw it from you. It is an equal fault to tell one's secrets unto all but none. But the last, tyranny. Very well. Why, imagine that I have committed some secret deed which I desire the world may never hear of. Therefore may not I know it. You have concealed for me as great a sin as adultery. Sir, never was occasion for perfect trial of my constancy till now. Sir, I beseech you. You'll repent it? Never. It hurries thee to ruin I not tell thee. Be well advised and think what danger it is to receive a prince's secrets. They that do had need have their breast hoof with adamant to contain them. I pray thee, yet be satisfied. Examine thy own frailty. Tis more easy to tie not that unloose them.  Now you dally with me. No more. By my appointment, the great Duchess of Malfi and two of her young children four nights since were strangled. O heaven, sir, what have you done? How now? How settles this?  You have undone yourself, sir. Why? It lies not in me to conceal it. No. I swear you to it upon this book. Most religiously. Kiss it. Now you shall never utter it. Thy curiosity hath undone thee. Thou art poisoned with that book. Because I knew thou couldst not keep my counsel. I have bound thee to it by death. Reander Basila. For pity's sake, hold. Basila! I forgive you this equal piece for I betrayed your counsel to that fellow. He overheard it. That was the cause I said it lay not in me to conceal it. Oh, foolish woman! Could not thou have poisoned him? His weakness. Too much to think what should have been done. I go. I know not wither. Dies. Wherefore comes thou hither? That I might find a great man like yourself out of his wits as the Lord Ferdinand to remember my service. I'll have thee shooting pieces. Make not yourself such a promise of that life which is not yours to dispose of. Who placed thee here? Her lust as she intended. Very well. Now you know me for your fellow murderer. And wherefore should you lay fair marble colours upon your rotten purposes to me? Unless you imitate some that do plot great treasons, and when they have done go hide themselves in the grave of those who were actors in it. No more. There is a fortune attends thee. Shall I go sue to fortune any longer? It is the fool's pilgrimage. I have honors in store for thee. There are many ways that conduct to seeming honour and some of them very dirty ones. Throw to the devil thy method, Collie. It burns well. What knee we keep a stirring off and pick a greater smother.  Yes. Take up that body. I think I shall shortly grow the common beer for churchyards. I will allow thee some dozen of attendants to aid thee in the murder. No by no means. Physicians that apply horse leeches to any ranked swelling use to cut off their tails that the blood may run through them the faster. Let me have no train when I go to shed blood lest it make me have a greater when I ride to the gallows. Come to me after midnight to help to remove that body to her own lodging. I'll give out that she died of the plague and will breathe a lesson query after her death. Where's Castrucio, her husband? He wrote to Naples to take possession of Antonio Citadel. Believe me, you have done a very happy tune. Fail not to come. There is the master key of our lodging to make conceive what trust I plant in you. You shall find me many. Exit Cardinal. Oh poor Antonio, though nothing be so needful to thy estate as pity, yet I find nothing so dangerous. I must look to my footing. In such slippery ice pavements men had need to be frost nailed well when they bleak their necks. The precedents here are full. How this man bears up in blood seems fearless. Why it is well.  Well, good Antonio, I'll seek thee out and all my care shall be to put thee into safety from the reach of these most cruel biters that have got some of thy blood already. It may be I'll join with thee in a most just revenge. The weakest arm is strong enough that strikes with the sword of justice. Still he thinks the Duchess haunts me.  O penitence, let me truly taste of thy cup that froze men down only to raise them up. Exit. Scene three. Enter, Antonio and Delio. Echo from the Duchess's grave. Yon's the Cardinal's window.  So hollow and so dismal and with all so plain in the distinction of our words. But many have supposed it is a spirit that answers. I do love these ancient ruins. We never tread upon them but we set our foot upon some reverent history. And questionless here in this open court, which now lies naked to the injuries of stormy weather, some men lie interred, loved the church so well and gave so largely to it they thought it should have canopied their bones till doomsday. But all things have their end. Churches and cities which have diseases like to men must have like death that we have. Like death that we have. Now the echo have caught you. It groaned me thought and gave a very deadly accent. Deadly accent. I told you it was a pretty one. You may make it a huntsman or a falconer, a musician or a thing of sorrow. A thing of sorrow. I sure that suits it best. That too. That suits it best. That suits it best. It is very like my wife's voice. My wife's voice. Come, let us walk further from it. I would not have you go to the cardinals tonight. Do not. Do not. Wisdom doth not more moderate wasting sorrow than time. Take time for it. Be mindful of thy safety. Be mindful of thy safety. Necessity compels me. Make scrutiny through the passages of your own life. You'll find it impossible to fly your fate. Oh, fly your fate. Hark! The dead stones seem to have pity on you and give you good counsel. Echo, I will not talk with thee. For thou art a dead thing. Thou art a dead thing. My Duchess is asleep now under little ones, I hope sweetly. Oh, heaven, shall I never see her more. Never see her more. I marked not one repetition of the echo but that, and on the sudden a clear light presented me a face folded in sorrow. You're fancy merely. Come, I'll be out of this ague for to live thus is not indeed to live. It is a mockery and abuse of life. I will not henceforth save myself by halves. Lose all or nothing.   It may be that the sight of his own blood spread in so sweet a figure may beget the more compassion. However, very well. Though in our miseries fortune have a part, yet in our noble sufferings she hath none. Contempt of pain Excellent. Scene four. Enter Cardinal Pascara, Malateste, Rodrigo and Griselon.  His grace is very well covered. Good my lord, suffer us. Oh, by no means. The noise and change of object in his eye doth more distract him.  So, sir, we shall not. Nay, I must have your promise upon your honors, for I was enjoined to it by himself, and he seemed to urge it sensibly. Let our honors bind this trifle. Nor any of your followers. Neither. It may be to make trial of your promise when he's asleep, myself will rise and feign some of his mad tricks and cry out for help and feign myself in danger. If your throat were cutting, I'd not come at you. Now I have protested against it. Why, I thank you.  The lord Ferdinand's chamber shook like an osseer.  Excellent, I'll accept the cardinal. The reason why I do not suffer these but my brother is, because at midnight I may with better privacy convey Julia's body to her own lodging. My conscience. I would pray now, but the devil takes away my heart for having any confidence in prayer. About this hour I appointed Basela to fetch the body. When he hath served my turn, he dies. Excellent. Enter Basela. T'was the cardinal's voice. I heard him name Basela and my death. Listen, I hear one's footing. Enter Ferdinand. Strangling is a very quiet death. Aside. Then I see I must stand upon my guard. What say to that? Whisper softly. Do you agree to it? So, it must be done in the dark. The cardinal would not for a thousand pounds the doctor should see it. Excellent. My death is plotted. Here's the consequence of murder. We value not dessert more Christian breath when we know black deeds must be cured with death. Enter Antonio. Here, stay, sir, and be confident I pray. I'll fetch you a dark lantern. Excellent. Could I take him at his prayers? There were hope of pardon. All right, my sword. Stabs him. I'll not give thee so much leisure as to pray. Oh, I am gone. Thou hast ended a long suit in a minute. What, thou? A most wretched thing that only have thy benefit in death to appear myself. Reader servant with a lantern. Where are you, sir? Very near my home. Bossola. Oh, Miss Fortune. Smother like pity. Thou art dead else. Antonio? The man I would have saved above my own life?  Oh, good Antonio. I'll whisper one thing in thy dying ear shall make thy heart break quickly. Thy fair Duchess and two sweet children. They're very names. Kindle a little life in me. How murdered! Some men have wished to die at the hearing of sad tidings. I am glad that I shall do it in sadness. I would not now wish my wounds barmed nor healed, for I have no use to put my life to. In all our quest of greatness like wanton boys whose pastime is their care we follow after bubbles blown in the air. Pleasure of life what is only the good hours of an ague. Merely a preparative to rest to endure vexation. I do not ask the process of my death. Only commend me to Dalio. Break heart let my son fly the courts of princes. Dies. Thou seems to have loved Antonio. I bought him hither to have reconciled him to the cardinal. I do not ask thee that. Take him up if thou tend to thine own life and bear him where the Lady Julia was wont to lodge. Oh, my fate moves swift. I'll have this cardinal in the forge already. Now I'll bring him to the hammer. Oh, die of all misprision. I will not imitate things glorious. No more than base. I'll be my own example. On, on, and look thou represent for silence the thing thou bearest. Excellent. Scene five. Enter cardinal with a book. I am puzzled in the question about hell.  I need it shall not burn all men alive. I lay him by. How tedious is a guilty conscience. When I look into the fishponds in my garden, me thinks I see a thing armed with a rake that seems to strike at me. Enter basola and servant bearing Antonio's body. Now art thou come? Thou looks castley. There sits in thy face some great determination mixed with some fear. Thus it lightens into action.  Huh, help. Oh, God. Thou art deceived. They are out of thy howling. Hold, and I will faithfully divide revenues with thee. Thy prayers and prophets are both unseasonable. Raise the watch. We are betrayed. I have confined your flight. I'll suffer your retreat to Julia's chamber but no further. Help. We are betrayed. Enter above. Piscara, Malateste, Rodrigo, and Griselon. Listen. I duke them for rescue. Fire upon his counterfeiting. White is not the cardinal. Yes, yes, tis he. But I'll see him hanged, ere I'll go down to him. Here's a plot upon me. I'm assaulted. I am lost unless some rescue. He doth this pretty well serve to laugh me out of mine honour. The sword's at my throat! You would not bold so loud then. Come, come, let's go to bed. He told us this much a forehand. He wished you should not come at him, but, believed, the accent of the voice sounds not ingest. I'll down to him, howsoever and with engines force open the doors. Exit above. Let's follow him aloof, and note how the cardinal will laugh at him. Malateste, Rodrigo, and Griselon. There's for you first, because you shall not unbarricade the door to let in rescue. Kills the servant. What cause hath thou to pursue my life? Look there. Antonio. Slain by my hand unwittingly. Pray and be sudden. When thou killed thy sister, thou tookst from justice her most equal balance, and left her naught, but her sword. Oh mercy! Now, it seems thy greatness was only outward. For thou fallst faster of thyself than calamity can drive thee. I'll not waste longer time. There! Stabs him. Thou hast hurt me. Again.  Help! Help! I am slain. The alarm! Give me a fresh horse! Rally the vaunt guard or the day is lost! Yield! Yield! I give you the orders of arms. Shake my sword over you. Will you yield? Help me! I am your brother, the devil! My brother, fight upon the adverse party! He wounds the cardinal and, in the scuffle, gives Basola his death wound. There flies your ransom! Oh justice! I suffer now for what hath form of been. Sorrow is held in the eldest child of sin. Now, your brave fellows! Caesar's fortune was harder than Pompey's. Caesar died in the arms of prosperity. Pompey at the feet of disgrace. You both died in the field. The pain's nothing. Pain many times more. I am your brother, the devil. Pain many times taken away with the apprehension of greater as the toothache with the sight of a marble that comes to pull it out. There's philosophy for you. Now, my revenge is perfect. Sink thou main cause of my undoing. Kills, Ferdinand. The last part of my life hath done me best, serious. Give me some wet hay. The broken wind is I do account this world by the dog kennel. I will vaunt credit and effect high pleasures beyond death. He seems to come to himself now he's so near the bottom. My sister! Oh, my sister! There's the cause on whether we fall by ambition, blood, or lust. Like diamonds with our own dust. Dyes. Thou hast thy payment too. Yes, I hold my weary soul in my teeth. It is ready to part from me. I do glory that thou which stoodst like a huge pyramid begun upon a large and ample base shall end in a little point of mind. Enter below. Pascara, Malatesta, Rodrigo, and Grisalan. Oh, no, my lord! Oh, sad disaster! How comes this? Revenge for the Duchess of Malfi murdered by the Aragonium Brevren. For Antonio slain by this hand. For lustful Julia, poisoned by this man. And lastly, that was an actor in the main of all, much against my own good nature, yet in the end neglected. Oh, now, my lord! Look to my brother! He gave us these large wounds as we were struggling here in the rushes, and now I pray let me be laid by and never thought of. Dyes. As he did withstand his own rescue. Thou wretched thing of blood! How came Antonio by his death? In a mist such a mistake as I have often seen in a play we are only like dead walls or vaulted graves that ruined yield no echo. Farewell. It may be pain but no harm to me to die in so good a quarry. Holy's gloomy world in what a shadow or deep pit of darkness does womanish and fearful mankind live. Let worthy minds near stagger in distrust for death or shame for what is just mine is. Dyes. The noble Delio, as I came to the palace, told me of Antonio's being here and showed me a pretty gentleman his son and heir. Enter Delio and Antonio's son.  I heard so and was armed for it ere I came. Let's make noble use of this great ruin and join all our force to establish this young hopeful gentleman in his mother's right. These wretched, imminent things leave no more fame behind them than should one fall in a frost and leave his print in snow as soon as the sun shines it ever melts both form and matter. I have ever thought nature doth nothing so great for great men pleased to make them lords of truth. Integrity of life is fame's best friend which nobly beyond death shall crown the end. Excellent. End of Act Five End of The Duchess of Malfi by John Webster


to detect a little bit of a pattern. Yesterday, I was talking about quantum physics as part of his talk. And there seems to be something with rubists that transition into elixir one way or the other. They seem to also pick up some physics along the way. This talk is going to be about string theory. I expect particle collisions of all sorts. And what can I say about our two speakers? Well, when it comes to James, he's currently building his very own castle gray skull. Yeah, that's worth a round of applause, I think. Yeah. And Nathan, well, he's not only a developer, he has actually a past in helping President Obama counter-terrorists using hashes. Please welcome to the stage James and Nathan. This talk is not going to really have much to do with physics. As far as I know, string theory is something about knitting. I don't know. Basically, it's a plan. So what we are going to talk about is all of the different stringy types in elixir, including IO lists and atoms and fun stuff like that. I've never met this guy before, so hopefully this is going to go well. I'm James Gray. I work for No Red Ink. We have elixir in production, and we're hiring. And I'm Nathan Long. I work for Big Nerd Ranch, and we would love to help you with your elixir projects. We're not actually going to do Q&A in this session. If you have questions, you can grab us afterwards or start a post on elixir form and things about it. Nathan and I have been friends for a long time, so we have these conversations with each other regularly. And I just want you to pay attention, because I'm pretty sure when we divided up this talk, somehow I ended up with sections that look like naming things and cash invalidation. So I'm not really sure what's going on there. When I was on the Ruby Roads podcast, we spent a lot of time trying to get our definitions right. It kind of became the running gag of our show. And here I am trying to get the definitions right so we can actually talk about this stuff. But that's what we're going to do. So there's lots of different kinds of strings in elixir. The first one is the single-quoted string, which is different from the double-quoted string. It produces a list of integers that represent code points for that data. This is primarily for compatibility with Erlang, which will generally return strings in this format. So it's not something you'll typically use in straight-up elixir code. Mostly you'll get these back from Erlang or you'll be sending these to Erlang. There's another kind of stringy-like thing, and that's the atom with colon and some characters after it. And the reason that this exists is an atom is just a name and a table somewhere and a number that points to that name. So when comparing atoms for equality, it's extremely fast because you just have to compare numbers and see if they're the same. And as you will get into a bit later, comparing strings in the same manner is much more complicated. Beware of atoms that are not garbage collected in the beams. So if you do something dynamic like convert every incoming parameter to an atom, you open yourself up to denial of service attacks. You can exhaust the atom table and the beam will crash. A way to work around this is you could use the two existing atom converter, which will only convert it if it already exists in your program. Okay, now to the double-coded stringy-type things, of which there are three. A bit string is just a sequence of ones and zeros between the double-angle brackets. So anything between double-angle brackets is a bit string. Bionaries are bit strings that happen to be in 8-bit or byte chunks. So if you're dealing with bytes, then it's a binary. If your binary's bytes happen to represent UTFA code points, then you can refer to it as a string. This is Elixir's double-coded string, the normal string. Okay, so these are kind of like subsets of each other. Bit strings is everything. Bionaries are when the length is evenly divisible by 8 and strings are UTFA-encoded binaries. They're subsets of each other. Now I'm going to introduce one more data type here, and this one is a little bit trickier to get your head around. So I'm going to kind of see if I can walk us into the definition. So let's say we wanted to print out three strings. One way we could do it and a way we have to do it in a lot of languages is we can concatenate them all together. This would create a fourth string, and there would be a lot of memory copying, right? We've got to copy the first one in, the second one in, the third one in. We could do this with interpolation. This is just a syntax trick. It's still the same thing under the hood. We're still building the fourth string. We're still doing some memory copying. Elixir lets us instead use lists. We could send the data to puts via a list. And in this case, we're not actually building a fourth string. We are allocating some small pointers for the list, right? But they in turn point directly at the existing binaries. So we didn't have to copy memory around and stuff like that. We saved a little bit in using these lists. And if you think about this, right? A link list is a head that points at some data and a tail that typically points at another list. So we've actually got like four lists here, right? One with James at the head, one with Ann at the head, one with Nathan at the head, and the empty list at the end. We can actually make it less if we use some kind of strange nesting and stop using proper lists. Now we're down to two lists, right? To represent the same data. We've cut it in half. And this format may seem a little strange, but it's actually very quick to append to, which is a problem that lists usually have, right? We use the list concatenation operator. It's big O of N. Every time we call it, we have to block the entire list to put something on the N. But using this improper format, we can add very quickly to the N, right? With big O of one. You end up with this strange nested structure, but Elixir's IO methods don't care that you give it this strange nested structure. So I've told you these are called IO lists, and if you go look up IO puts in the documentation, it's going to tell you it takes a care data argument. So you probably think I'm lying. And the answer is it gets pretty complicated just to read this stuff out. If you read Elixir for them, you can actually go back and look at me trying to sort this out. And I got lots of really helpful information from many members of the community, including Jose Valim and Robert Verding, one of the co-creators of Erlang. And then after they were done helping me, they hijacked my thread to debate the best ways to implement strings in a programming language. So it gets pretty confusing. But this is my best attempt at solidifying all the definitions of things here. The first three are those subsets of double-coded strings that we discussed before. Care list is your compatibility string, your single-coded compatibility string. IO lists, IO data, and care data are all quasi-related to each other. The main difference is that care data has that UTF-8 code point assumption that IO lists does not. And the reason I introduce them to you as IO lists is if you look at blog posts and other materials, that is typically the name that gets thrown around. So this care data is not as global, in my opinion. So we're going to talk about UTF-8 strings unicode. If you're anything like me, possibly your first introduction to unicode was stuff not working in a web page. So before we talk about unicode, let's talk about ASCII. If I run man ASCII on my computer, I get this. And what this shows me is that ASCII is just a mapping. Here's a bunch of characters we want to be able to type, and we're going to assign each one of them a number. So here's our beloved alphabet. And if you want to encode ASCII in a way that will let you store it on a disk, all you do is take that number that it's assigned and convert that to base two or binary. And you can store that on a disk. You can transmit that over a network. And it's pretty simple. What's interesting is all of the ASCII characters will fit in a single byte because there aren't that many of them. So you can see that the red zero is there to tell you, hey, look, this is empty. It's always going to be empty. But unicode wants to let us type a lot more than those characters that we Americans were typing in the sevens. We want to be able to type accent and letters. We want to be able to type Greek letters. And we want to be able to type this Han character that means to castrate a foul. We want to be able to type more than words also. We want to be able to type pictures, right? We want to be able to do a lot of things. We want to be able to have emoji for laughing and crying and being upside down and having dollars in our mouth. So unicode lets us do all these things. Now, exactly what gets included in the unicode standard is kind of a political thing.  So, for example, there's a thing called the Han unification whereby people who type Japanese and Chinese and Korean have been asked to share some characters ostensibly to save space in the unicode standard. Even though unicode did see fit to include playing cards and alchemy symbols and ancient Greek musical notation. And they're adding linear B which only scholars would ever type. So you can see why they're missed. But in the end, what's important for us is that this is just a mapping. So we can include anything we want to. In theory, we can fit all human characters in here. So we're just saying, look, we've got capital A, we've got lowercase lambda, we've got men in a business suit levitating. And each of these is assigned a number. We have a mapping number character. And now, once we have this mapping, we have, you know, here's what it should generally look like.  So there's a lot of code points in unicode. There's somewhere around a million. And obviously, they're not all going to fit in one byte. You can see that this, our beloved Han character here takes up a good bit more than one byte. Some code points are going to need more bytes than others. So how do we handle that? We could say, well, we'll just give all of them four bytes so that we know how long each code point is and there you go. That's not great, right? Because then the letter A is going to take up four bytes when it could have been one. It's not very efficient. So the going solution these days is called UTF-8. And what it does is it gives us, this is an encoding for unicode. You take your code point and you're going to encode into one of these four templates. There's a one byte template, a two byte template, all the way up to the four byte template. So you take the binary that you need and you slot it into one of these templates, the smallest one that you can get it in. So let's see an example of how this works. So here's the clock character. That happens to be code point 9200. If you give any character after a question mark like this in IEX, it's going to tell you the code point for it. So the code point is 9200. That's the number that that character is assigned. If I convert that to base two, those are the bits we need. That's the bare minimum that we have to encode somehow. So the way we put that in UTF-8 is like this. We just divide it up and slot it into the non-header parts of the template and pad with zeros on the left. And there you go, that's what we have. There's some really cool things about UTF-8 encoding that it enables, but first let's see if this is what Elixir actually does. So if I use the iHelper, the iHelper is great in IEX by the way to inspect any piece of data you should use it. If I use the iHelper on this string, it tells me that the raw representation, what's in the binary, is these three numbers. 226, 143, 176. If we map over those and convert them to base two, that kind of looks like UTF-8, doesn't it? It looks exactly like UTF-8 because that's what it is. That's how Elixir stores this stuff internally. So let's take a look at what UTF-8 is actually doing. The cool thing is that there are three kinds of bytes in UTF-8. So there's a solo byte like we saw with ASCII characters like A. Which bit is always zero. And the reason is because we don't need all that space. UTF-8 is backwards compatible with ASCII. Whatever something is in ASCII, it's going to be the same in UTF-8, which is handy for those of us who are American and want to be the same as when we typed it in the 70s. So we have solo bytes. We have continuation bytes. Any byte that starts with one zero says, I'm following after this other one. And then we have first of end bytes. So if it starts with one one zero, it says, I'm a two byte sequence of code points. It starts with one one one zero. It says, I'm a three byte sequence of code points. I'm the first one. So if you look at these two characters, the A is a solo byte, starts with zero. And this roasted sweet potato character begins with a four byte header. It says, hey, I'm four bytes long, and then you can see the three continuation bytes. So this is cool because it enables us to do things like string reversal correctly. If you have a string that looks like this, you have a single character followed by a single code point character followed by a three code point character and you want to reverse it. You would not do this. This would be terrible, right? If you do this, you've scrambled that first character or what was the second character because it's bytes got reversed. That would be a bad reversing algorithm. Instead, you want to do this. You want to keep that three code point character intact, the three byte character intact and you want to get a solo one after it. So, but it gets even more complicated because not only do we have multi byte code points, we have multi code point graphemes. So a grapheme is what a human being would consider generally a written character on the screen. Some characters can be written with multiple code points, like this e with an accent can be written as here's an e and here's an accent that goes on it. Those are two different code points. That's called combining diacritical marks. So here's an example, here's an e and then we have this here's a combining diacritical mark to go on the e. L. If you ask Elixir, give me the code points for this. You get five code points out and hilariously the display of that puts the accent mark on the quotation which is pretty broken and if you ask for graphemes out of that then you get what you would actually consider the characters. Like a human being would consider the graphemes to be the characters. So you may wonder if you can stick diacritical marks on something. How many can you stick on there? Can you stick as many as you want? And the answer is yes you can. This is called Zalgotex and it's horrible. You may see things like this on the internet you may see questions on Stack Overflow where people ask how can I prevent users from doing this to my web page and you may see snarky remarks where people do it to them. And the answer is you cannot prevent users from doing this to your web page. Because there are actually languages that need this kind of thing. Like these folks from Peru have a tonal language and they want to be able to put multiple marks on letters in order to represent those tones. So deal with it. The best thing you can do is if you think it's unreasonable to have a giant column of those characters maybe you can use CSS to hide some of them. But Unicode is there to support this kind of thing and not to prevent it. So all of this all of this complication makes strings pretty difficult to deal with. So traversing strings, asking for the length of a string, becomes difficult. Because in order to find out how long a string is in terms of graphings you have to walk through that string, combine the bytes into code points and combine the code points into graphings and then say okay how many graphings did I get? If you want to index into a string and say give me from the second character to the third character. Well if you want from the second graph you have to do all of these all of them operations.  String.length and elixir is going to give you the graphing count. But again that's O then. Reversal can be tricky because when you reverse again you have to be thinking in graphings. Like if you look at the elixir example here does this correctly but the Ruby example messes that up. So if you look at the graphing on the L equality is tricky because hey sometimes there's more than one way to write something. You can have even an accent written as a single character, a single code point or you can have it written as an E followed by a combining mark code point and if you ask if those are equal they're not equal, they don't have the same bytes in them but if you want to know if they're equivalent elixir has a method for that so it kind of converts it into some canonical representation and then compares them. You can use the FB strings and anything with international kinds of characters and what not. Casing can be tricky even though casing is implemented via basically a case statement we say hey what's the uppercase version of this character or whatever. A lot of languages do this wrong until actually the upcoming release of Ruby they're still getting this wrong right now. And even elixir which has a really nice case statement in the form of a bunch of function to do this operation doesn't get everything perfect because human language is ridiculously complicated and can't be contained. This sigma character when you downcase it according to the actual grammatical rules has to be downcased differently whether it's at the end of a word or not and elixir doesn't have that. Here's the downcase, alright. If you need to do it more correctly for Greek then write your own function. If you get only one thing out of this talk I hope it's that there's an emoji for a man in a business suit levitating. Is that not the most amazing thing ever? I don't know it's pretty cool. Also his section is funnier than mine did you notice that? Pretty sure this division was not fair. We're going to revisit our friendship after this. Okay so let's do cash invalidation. The beam has certain rules right? Processes are isolated, data is immutable and therefore if you send a message from one process to another we do a full memory copy of the message because we have to move it into the new memory space, right? Because of this there exists some optimizations in the beam. The beam actually has a handful of different types of binaries but here we're primarily concerned with two categories.  If it's larger than that it's actually stored in a space called the large binary space and internally you just get a tiny reference to this external data. So you're probably wondering it seems like a strange implementation detail and the answer is because it's awesome right up until the point where it causes you horrible problems. So we probably want to be aware of this so you can understand what it's doing for you and what it's doing to you. So the win is this. If you are passing binaries between processes that are big it's very fast because you only have to copy these tiny references and it's just super quick and it makes sense that we would be passing large binaries between processes a lot. Think about like HTTP responses. If you fetch some data off of a JSON API it's a giant wall of data. If we do rendered sections of Phoenix templates they're going to be big chunks of HTML and boilerplate and stuff. So we do this a lot and it's good for this to be fast. But here's the problem. It exists outside of processes therefore it can't be garbage collected normally like the stuff in processes so it has to be reference counted.   It's better than we can get rid of that thing that's stored externally. But what if your process doesn't hit garbage collection for a long period of time? It's possible for this to happen. If you built some system that was pulling data off of the web and sending it through a process that just looked in that giant text for the three things you care about and found them. If you do much memory allocation in that sequence you may not get to the point where you need to get garbage collected and so those references would stick around and keep that data alive in the large binary space. If this happens you might begin to see things like memory leaks over time and if you take it to extreme scenarios it will actually crash the beam. So this can be a big problem. It's affected people very really. Heroku has this great write-up of them trying to find it in one of their products long dash I think. It's like a long six month search of them figuring out what's going on, trying to find ways around it and things like that. Avdi Grim who you probably know from the Ruby community came and checked out Elixir for a time when this issue got real frustrated with both figuring it out and what to do about it and we kind of ran him off. So it's something we have to stay aware of and know what's going on. So here's one way you might be able to find it. Erling keeps track of memory that it allocates in various areas and this particular code will ask you what the allocation is going to be. This code is a little bit tricky. I can't seem to get it to work in IEX for example but it does work in the general case. Also I believe Observer has the same information under the allocators tab so you can choose to look it up there as well. If you do start seeing these problems what you should do about it is you have to find the right place and the right time to force it and we're talking about a generational garbage collector here so not all garbage collections are created equal. They don't all visit all the bits of allocated memory so there's a bit of trickery and there's a lot of information about garbage collection that you can use to so there's a bit of trickiness to getting this right and finding what works. One idea I've had is that it may be better to have your processes with shorter periods of time the best garbage collection is to exit. Then you're not holding any more memory so in that example I gave before if you have a process that's analyzing incoming data over time maybe it's better to spin up a process analyze a particular chunk of data have that process exit when the next one comes in spin up a fresh process analyze that data and do it that way that way you won't have these long with references to that data and hopefully the large binary space will get cleaned up more often. So James talked a little bit about IOLIS and just to kind of give you a quick refresher of what they are. So if I do this puts with an explicit concatenation we get out what you'd expect I can also do the IOLIS with a list of strings I can put a code point in there and we get the nice snowman and I can give it this deeply nested list of strings and that all works just fine it all comes out just as if I had given it a single concatenated string so IOLIS when you're doing IOLIS operations like putting the standard out file writing to a socket stuff that goes outside of your program it's going to be able to use IOLIS just as well as if you build the final string yourself so this enables some cool things it enables things like string reuse so if I want to build up an output that has users names wrapped in LI tags then I can do this where I've allocated these strings and just keep putting references to them again in this and I'm not allocating those LI tags into new strings over and over again I'm just referencing them as needed and then when I do the puts it's going to come out just as if I had copied those strings so that's cool so the benefits of string reuse one is that we skip doing the work of concatenation of continually allocating this new string and copying characters from one place to another we also the fact that we're not allocating those strings means we use less memory and the fact that we're not allocating those means we have fewer things to garbage collect so that's less garbage collection work so that's all cool IO lists are for IO like I mentioned this is anything your process is doing to talk with the outside world so writing to a file and sending data over the network are probably the big ones so let's talk about system calls system calls are things that allow your program to do things that normally the operating system manages so we can say to your operating system please write this data to a file for me and the operating system will take care of that for you and your program doesn't have to know the details of how do I get in touch with the disk and what kinds of what protocol does it expect me to speak and all that kind of stuff the operating system handles that for you so there are actually different system calls that can be used to write data to a disk or a socket so one of them is write it's very straightforward it just writes the data and the way write works is we'll say please go to this address in memory for me and pull this many bytes out of it and write it to and the operating system will do that for you write v, the v is for vector so it's a list of things we can say please write this item and this item and this item and we give it addresses for each one so here's a code sample where we're going to take advantage of these things in the first line I'm opening a file I'm using the Erlang file function and it's important that I'm passing raw I'm not going to go into all the details of what that means I'm opening this file in raw mode and then I'm going to allocate a couple of strings I make a list that has those strings in it the foo string is repeated and then I'm going to join those into one big fat string at the end and then write it to the file I'm using a detray script that I got from Evan Miller's blog post Elixir in the template of DOOM which is a great blog post you should read and using that detray script I can see the system call that's being used here it says go to this address in memory and write nine bytes for me and the foo bar foo that you see there is just for us like that's for us to see as humans from the detray script it's not actually part of the system call now watch what happens see the line where I'm concatting those strings together enum.joinoutput I'm going to comment that out and watch what happens all of a sudden we're now using write v and write v says go to this first address write three bytes go to this other address write three bytes and go back to the first address again and write three more bytes so this is actually really cool because if you think about what's happening I'm never in my program ever building the completed output the contents the ultimate contents of the file never exist in my program the only place they ever exist is in the file I'm writing to so I didn't have to allocate the full contents of that file imagine that was going to be like a multi gigabyte file where a lot of the stuff was repeated I never had to allocate that it just gets put into the file so this is really cool so what kind of IO operations has a lot of repetitive strings hey HTML has a lot of repetitive strings we're doing web responses we'll have snippets that are repeated in the page like an li tag that you have over and over and we're going to have chunks that might be repeated not only within the page but across web requests every time somebody requests your web page they may be getting the exact same footer as the last person who made a request so it would be nice if we didn't have to repeat those if you are using phoenix and ex or if you're using hamlet with the cali p library you're going to get to take advantage of this so here's an example in a template you can see the chunks of you can see all in this page we've got some static pieces of information like the listing users that's going to be the same on every request and then we've got some dynamic things like we're iterating through people's names all of these things are static right they're not changing so it'd be nice if we didn't have to keep building those strings well in fact you don't have to this is what happens when you use phoenix so you have a template like food.exe phoenix is going to find that as it's booting up and it's going to compile that into a function it's going to use ex to compile that to a function and it's going to pass something to ex to say by the way as you're as you're building up from this template don't build it up by concatting into a big string build it up by building an IO list for me phoenix specifies that for it and so this is going to be compiled to a function head on your view like myview.render matchingfood.html and taking the assigns and that function is going to be ready to return IO lists so all of those static pieces that were in your template are just going to be sitting there in a structure inside of that function waiting to have the dynamic bits added in so the IO list that's returned from that function is going to look something like this so you can see it has very much the same structure as the template and the listing user is just going to be the same string every single time that this function returns it's going to be a pointer to the same string so this is really neat because it enables a really simple caching strategy you may have worked with web frameworks that you have like a caching strategy where you have to say this piece of the page can be cached if this model's updated out hasn't changed and by the way this model depends on this other model so if that one gets updated make sure and update this one so that this the piece of the page will get updated as it needs to be this is a really simple strategy everything that's static in your template is cached everything that's dynamic in your template is not cached the end that's great and the way you validate the cache is you change the template so it's very very simple to understand it doesn't accomplish all the exact same goals but it gets you pretty far just as proof here's me de-tracing Phoenix and watching it build its responses and you can see writeV is showing us that it is in fact we are using writeV in writing this response to a socket this is a really contrived web response that I did just for this what I highlighted in red here was a chunk that I saw as being exactly the same as on the previous response so the whole .type HTML opening chunk of the web page it returns the exact it says go back to the same place in memory you did last time a user requested this page and send them the same piece of data and then the blue chunks you can see that they are the exact same multiple times within the same response so what actually ends up happening here kind of like the file example we never actually build the full completed web page in the memory of the beam the only place it actually gets built is in the socket buffer where we are actually sending this back over TCP and then of course TCP is going to send it out in packets and throw it away as it gets done with it but it is not our problem we never have to allocate that memory and every time a user requests the page we are going to point them back to the same header string as the previous user so this is really efficient and cool and this kind of stuff actually matters in that you can actually you can actually enlarge web pages in a Rails app you can run into situations where the rendering time is the response time and the fact that Phoenix use render so quickly and efficiently that it is not having to continually copy strings to build up a giant string it is not having to build that up just so that it can do this right it saves us a lot of effort and it saves us a lot of performance so the moral of this is basically when you are doing IO use IO lists now there are several caveats to this I am going to try to elaborate on this in a blog so make sure and check that out because there is more than we can cover here when you are passing IO lists or cross processes small like the non-ref counted strings, the smaller strings are going to get combined and when you are doing raw mode when you are writing to a file you have to use raw mode in order to take advantage of write feed but these are details that are probably more than you really have to care about on a normal basis what you should take away from this is if you are doing IO use IO lists it is not going to hurt you and it may help there is no point in actually going through and joining those strings yourself that is it, thanks for listening