I have two announcements that might be of interest to you, but I have two announcements that might be of interest to you.  So April 9th, the Bowdoin Public Library and the Library Foundation is sponsoring two free Shakespeare events, one on the 9th and one on the 23rd of April. And the 9th is going to be Will Shakespeare and Friends, songs and sonnets of English Renaissance. It's going to be right here. Piano will be involved. The second one is April 23rd. I'm sorry, they're both 6.30 to 8.30 p.m., so that's your time. The second one is April 23rd, and that is going to be much to do about something, readings from Shakespeare's comedies. So what's going to happen in that one is lunch was just get together and do different scenes from Shakespeare's comedies, and we just never know what will happen, because some of us are not that good at doing this. I'm really pointing myself. So those are two of the announcements. And I have another announcement. Flash Fiction and Poetry Slam, Tuesday, April 15th. So when you get your taxes in, you can come down and sort of moan about it. At Wild Joe's Coffee House, 5 to 7 p.m., open mic readings of original writings, poetry, flash fiction, 1,000 words, or other writings, five minutes per person. It's a little bit more generous than you get, isn't it? Open to everyone. So those are two of the administrative things. And then we have a little bit of a fun thing for you, I hope, which is a couple of door prizes. So I'm just going to, I'm looking at you to call a name. I'm going to get the slide out of this one. Thank you. Chris, do you want any? Please. You just want something. Thank you all for coming back and staying with us for the next half. We have, I don't know how many I can't count that well when I'm standing in front of people, but we have events where people, John Heilman, Hank Hielman, Heilman. This poem reflects an experience I had when I was working in a hospital drug and alcohol rehab club weekend. Once upon a Monday, an artistic young man of 16 years who did excellent paintings and excellent crank, coke, bourbon and girls told me of this weekend when he did crank, coke, bourbon and girls. I had to admit to just a twinge of jealousy having spent my weekend doing laundry on kids. Until Wednesday, when the artistic young man did himself in with a bed sheet, much like the ones I will wash again this weekend and he will never heal. This poem is entitled, The Two of Us.  The glint of brightness as her head caught to the side, her gaze steady upon me. Yes, I am her mother. And I have said yet again one of my less than profound string of words. How we laugh at each other's foibles. The gentle humor that knows way more than most would ever choose to reveal the knowledge that can wound or heal. Held in gentle safety, we share not only life blood, but temperament and passion. Conversations, ideas, dreams, flow like the sometimes quite steep stream or the powerful river. Our journeys, times and moods twist and turn as we wrap our minds and hearts on all we encounter. Each traveling separately, yet still together. Spirits entwined, wishing each other the best. We replenish ourselves knowing that we share a gentle honesty, a knowing ear, a history and a love. Though we do not grasp the spirit nor know the ways that grew on us, we trust in a deep flow and a connection among and within all. The sharp wisdom of my daughter so insightful, so free, affirming and challenging. Oh, where comes that energy? She looks at me, her lips in a half smile, eyes narrowed with humor. Where did you get that idea? We laugh at my foibles, her sharp wisdom, the freedom to be honest. What's called wind chimes? A baby by the window, wind chimes hang above. A warm summer sun with a refreshing breeze makes a wind chime sing. The beautiful sound soothes the baby to sleep. Will she remember this? I know I will. A mommy by the window, wind chimes up above. Soothes the mommy to sleep to dream of what her baby will become. Losing it in a quinoa B, the rush song on the signals album, probably know what it's about. Many years ago, her gray hair arrived, her memory fading years after that. Small increments like eroding mountains or the movement of sand dunes across the desert. A mixed up sentence or date where her grandson didn't have a soccer game or her son a lunch date with his mother. She laughed it off at first. You played along. Not wanting to cause embarrassment. Alone in her house, her dog the only companion died at her feet, blood coming out of its nose from the tumor that had it. Then doctors visits followed, Subaru keys taken away, family conferences. Power of attorney forms completed. Her house sold, her things divided. No more sleepovers at grandma's. Her son cries, her daughter fights. The last wishes to see her sisters. No names now, just over there and down there for locations. For there's no getting back to embarrassment or living alone or driving to town, just the indignity of losing it. I wrote this poem because it occurred to me that when people leave your world you really don't know where they went. Because they were so vital when they were alive and they were so important in their lives. So when they're gone it's like the Spain's will, where are they? And so this is the poem I wrote essentially for my sister. And yet in some ways when people leave our sphere we wonder where are they? I suppose because we miss them. This is called Where Camilla Lives. I visit you now in your new home, a ranch-style house in Tortangels, and the fog rolls in obscuring the mountains from your kitchen window. Do you miss the old manse of Harvard Avenue I ask? The freeway like an ocean roar, the creaking stairs, the many rooms whispering melancholy syllables of forgetfulness. You interrupt in the excitement of discovery. See the mountain now? The sun brings the fog away. It's one of my treats I look forward to every day. The fireplace though, I say on Harvard we used to bake apples there for a simple supper. Eat potatoes I had brought from my yard and the cookies you bake building the rival of me, your youngest sister. I feel a bit of a chill, don't you? A long fire would be nice. I build a fire. I bring you a mud of hot chocolate. My dear, you say, how I would miss your visits better me before you.  And those last letters you sent, all the answers did you know? Waiting at four o'clock in the morning to sound this dark. I stare. In time the curtain edges will grow light till then I see what's really always there unresting death a whole day in your now making all thought impossible but how and where and when I shall myself die air interrogation yet the dread of dying and of being dead flashes afresh to hold and horrify the mind blanks at the glare out in remorse good not done, the light not given time torn off unused more wretchedly because then only life can take so long to climb clear of its wrong beginnings and may never but at the total emptiness forever the sure extinction that we travel to and shall be lost and always not to be here not to be anywhere and soon nothing more terrible nothing more true this is a special way of being afraid no trick dispel religion used to try that vast moth-eaten musical brocade created to pretend we never die and specious stuff that says no rational being can fear anything it will not feel not seen this is what we fear no sight no sound no touch or taste or smell nothing to think with nothing to love or link with the anesthetic from which none come around and so it stays just on the edge of vision a small unfocused blur a standing chill that slows each and pulls down to indecision most things may never happen this one will and realization of it rages out in furnace fear when we are caught without people or drink courage is no good it means not scaring others being brave lets no one off the grave death is no different whined at than withstood slowly like strengthens in the room takes shape stands plain as a wardrobe what we know have always known know that we can't escape yet can it accept one sight will have to go meanwhile telephones crouched getting ready to ring in locked up offices and all the uncaring intricate rented world begins to rouse the sky is white as clay with no sun work has to be done postmen like doctors go from house to house to waltz stevens be on the flink told you at this time last week the spark still glows i've been reading stevens restatement of romance look at it before progressing the night knows nothing of the chance of night it is what it is as i am what i am and in perceiving this i best perceive myself it is for statements such as this that stevens is my poet it is not that i agree with his sense i do but that he is reaching for the sense his sense if you wish yet it is to me to you he is calling beyond the casual solitudes marking the page was a letter from you only we too may interchange each in each other with what each has to give only we too are one why do i write this now merely to love you isn't that it dark pacific words an infinite incantation of ourselves the true reconcilings i read your letters with joy and happiness and gratitude i mourn our separateness in the pale light but the true light dispels the darkness of my night we are in the den in the warmth of love beyond the fling of the dull asses hoof in the existence reaching memories searching for what was and what could be again again words are there too pointing, glaring, calling attention evades dance around words trying, straining to be what was what is feeling what was felt knowing what was there across the ephemeral internal fog it's there right over there screaming remembering unseen at its moment unbathomable depths sway beneath my feet in the center of the awesome taking step after step into uncertainty with no land in sight rolling, swirling towering waves block out the spirits blue sky momentarily salty humidity fills my lungs but i don't joke roaring, howling they're the only sounds i'm buoyant not polander protected electric power is all around me this is called god is near every day is beautiful here no matter what the weather god blesses us with flowers tulips, roses and heather with friends and family all about these are blessings about which we could shout thank god for our senses of sea, field and here wherever we are we know he is near look at tiny snowflakes on the porch rail enjoy every bird from head to tail drink in the aroma of fresh apple pie wonder at stars up in the dark sky listen to the music of a babbling brook there's awesome discoveries each place we look we know that god loves us he sent his son to die on a cross the only one love and obey him follow his word the most important things man ever heard if we do in the sweet by and by we'll meet him in heaven up in the sky willa jean spiel looking with intentions of reading something else but this one seems apt because i wrote this a week ago i have an appreciation for people like you all don't think this came easy genesis has done us wrong i say this because genesis in all of its glory has made creation seem a simple act six days, six nights but it's not the simplicity that necessarily bothers me god sent humans work at a different pace it's the lack of appreciation the writers of this sacred text it seems we're eager to set the stage for humanity choosing foolishly to forgo elucidation about the creative process behind an entire planet as a child reading this i then assumed divine creation was without struggle in fact i never even gave the feet the second thought but have you ever tried to create something have you ever spent hours and days laboring over the simplest sentence moving a comma from one space to the next and then back again or how about picking out a guitar with reverence but never getting the melody just quite right have you ever tried to create something in your own image forged through the unavoidable pain of growing up and enduring the hardships of simply being alive don't think this comes easy have you ever written a fictional character as a representation of yourself or the people you know have you ever ran a brush as containing the experience of both hand and heart containing a weight so heavy it's the only thing that can set you free have you ever subjected yourself to certain misery for the sake of one photograph that depicts all the truth a piece of fruit was once rumored to hold don't think this comes easy have you ever made something and then thrown it away finding only flaws and self doubt in your efforts or maybe you just kept it locked away in a drawer in your bed or in your bed or possibly in the depths of your mind have you ever labored in the hope of putting purpose into something else might finally give you purpose in yourself and guess what don't think this comes easy have you ever created something and shared it have you ever subjected yourself to the scrutiny and embarrassment of people's callousness or criticism or maybe the harshest of them all in difference the way you scream silently through an act through an act in practice you just want some of the whole whether with their eyes or their words or maybe even a hand or have you dared to share and then receive praise and admiration or love this too can be just as difficult to accept have you ever felt how quickly a creation can get away from you growing and blossoming becoming very much beyond your own don't think this comes easy but because we are taught it is easy from most like Genesis we sit back with spiritual critics picking and choosing what we want to believe and trust acting as connoisseurs of an art we don't understand and can't comprehend but the thing is you don't have to believe it just appreciate it because this doesn't come easy don't for a single second think the blueprint to this world came easy because the blood and bone was done with ease because even the best of our art is struggle the ones born with sickening natural talent the ones fused with intrinsic vision and insight the ones that could take that could make something in 6 days and rest on the 7th don't you dare think this came easy because I once did in such a folly belittles every river and stream, lake and ocean mountain and fragile ecosystem you find yourselves crossing there's a reason all the world's wisdom was embedded in the trees we climb and the food we eat it's in us too because a creator can't be separated from his creation your body was created with the same grit as our paint our piano strings infused with the divine gift of breath and the music of memory look at yourself all those flaws and blemishes that only you and the creator know about don't think this was easy don't think this came easy and don't doubt that you are loved there's too much pride in you and you and you someone's creation like all other creations to everything otherwise this is for joe and renda and hyen I wrote it for me and for you and it's a narrative poem about the way of accolade which is part of the way of words which is the power of words to regenerate spirit, joy and strength to reclaim words for the soul I am feeling shining rainbow tinged suffusive joy and you are you feeling that you can move in any direction write your own story take wing and enter worlds of possibility for the making say the sunshine that weaves through your being is flowing out into everything that you may let it be told everything you touch nourishes under your hand and in your presence see the unfolding mysteries of beauty and secrets defined only by the ones who have seen inside the form and blessed broken rock and praised out deep down form until it glowed until an inner light forms the geometry of a rose and their deepest secret comes out to play and astound in delight but only because you named it right when you say beauty value and work you breathe I believe, I believe, I believe I believe in the divine in you they rise in the serene still air of the sacred with a burning essence of truth as incense burning true demands release and floats the shapes of symbols only lovers understand as the mothering mist gives birth to the majestic redness towering trees that cannot live without the empowerment from the mist so your breath as loving airs affirmations and decrees processioning forth to build breath upon breath the magnificent tree of life that lies cruel in the littlest and the least as we all are in our time in the cosmic age of opportunity in the womb of the cosmos as we are clutching the breast of mother birth the unknown claims us she the mother of mystery says you claim it say the undreamed belongs to me the god free claimed from the diamond heart of the mother the magnificent


Hello everybody, welcome back to another Premiere Pro tutorial. In this one, I'm going to show you how to create this awesome color to black and white transition like I did there. If I want to extend it, there we go.  How do I do it? Let's just start from scratch so you can see it step by step. OK, here we go. First step, drag and drop some footage onto the timeline like I've done here. Perfect. Now go down to the bottom here and click on new item. If you don't see it, just make sure that this is pulled out a little bit more. New item and we're going to create an adjustment layer and then just click OK. That's fine. Now drag and drop the adjustment layer, but here's the important part. Drop the start the adjustment layer at the part where you want the transition to begin. So for me, let's say I want the transition to begin at the three second mark. I'm going to start the adjustment layer so it's lined up to three seconds. Beautiful. Now go to your effects panel and here you go. Type in Lumetri color into the search bar. Drag and drop that onto the adjustment layer. When you do that, nothing happens right away. No worries. You just need to dig in. We're going to go to basic correction, open that up. And what basically black and white is, it's just lack of saturation. So pull the saturation down. So if I pulled it to zero, it would go to black and white, but that's not what we want. We don't want to go that way either. So what we want to do is leave it at 100. But here's what we're going to do. We're going to click on this little stopwatch. And again, making sure your play hit is at the three second mark or wherever you want it to start your transition. I'm going to move forward to let's say the final let's go to four seconds. And this is where I want the black and white to finish. So by this point, now I'm going to take this 100 and drop it down to zero. And if I looked at it, watch what happens. Perfect. It's done. Now the reason why I use Lumetri color instead of the black and white effect is because if you need to, you can do things like adjust exposure, adjust contrast and make it higher contrast highlights, etc, etc. So you do have that optionality in there too, all of which can be animated if needed.


There are all manner of purported hiccup cures, everything from chew a lemon, inhale pepper, or our dog's favorite, a spoonful of peanut butter. Here's the technique. Besides, to try next time I get hiccups, supra-supra-maximal inspiration. You take a very deep breath, hold for 10 seconds, then breathe in even more, hold for another 5 seconds, then one final, tiny breath in, and hold for 5 last seconds. An immediate and permanent termination to hiccups was achieved. When I was a kid, I taught myself how to control my own hiccups using slow-paced breathing and I was excited to see there was finally a case report written up on it. It's really neat.  The vagus nerve is like the hard wiring that allows our brain to turn down inflammation within our body. When you hear about the mind-body connection, that's what the vagus nerve is and does. So there's been increasing interest in treating a wide range of disorders with implanted pacemaker-like devices for stimulating vagus nerve pathways. But certain Eastern traditions like yoga, qigong, and Zen figured a way to do it without having electrodes implanted into your body. Let me explain how. A healthy heart is not a metronome. Your heart rate goes up and down with your breathing. When you breathe in, your heart rate tends to go up. When you breathe out, your heart rate tends to go down. You can pause this video and test it out on yourself right now by feeling your pulse change as you breathe in and out. I'll wait. Isn't that cool? See, that heart rate variability is a measure of vagal tone, the activity of your vagus nerve. And so the game to play next time you're bored is to try to make your heart rate speed up and slow down as much as possible within each breath. This can be done because there's a whole other oscillating cycle going on at the same time that's speeding, then slowing your heart rate based on moment-to-moment changes in your blood pressure. And as any physics geek can tell you, all oscillating feedback systems with a constant delay have the characteristic of resonance, meaning you can boost the amplitude if you get the cycles in sync.  If you get the timing just right, you can boost them higher and higher. Similarly, if you breathe in at just the right frequency, you can force the cycles in sync and boost your heart rate variability. And why are we doing that again? Because that allows us to affect the function of our autonomic nervous system via vagal afference to brainstem nuclei like the locus suruleus activating hypothalamic vigilance areas or at least according to the neurophysiologic model postulation, and I mean, duh! And why are we doing this again? It's not just a cure hiccups. Practicing slow breathing a few minutes a day may have lasting beneficial effects on a number of medical and emotional disorders, including asthma, irritable bowel syndrome, fibromyalgia, and depression, though in the US of A we've put it to use improving batting performance in baseball. Now to date, most studies have lack proper controls and have used fancy biofeedback machines to determine each person's resonant frequency, but for most people it comes out to be about five and a half breaths per minute, so a full breath in and out about every 11 seconds. When musicians were randomized into slow breathing groups with or without biofeedback, slow breathing helped regardless. Same with high blood pressure. You can use this technique to significantly drop your blood pressure within minutes. The hope is if you practice this a few minutes a day, you can have long-lasting effects to the rest of the day, breathing normally. Practice what exactly? Slow breathing. Five or six breaths per minute split equally between breathing in and breathing out. Should do it. So like five seconds in, then five seconds out. All the while, breathing shallowly and naturally. You don't want to hyperventilate. Little shallow breaths, but just breathing really slowly. Try it the next time you get hiccups. Works for me every time.


placement after Aja and the program was very strategic. I recently met an extremely proud quadcopter owner. He wouldn't stop droning on about it. 30 minutes of this, folks. So I just want to say happy Friday. It's actually Monday. I'm sorry. So welcome, everybody. I'm really excited to be here at Cascadia. I'm speaking here for the first time. This is my first full-length talk here. And I need to move it along because I have 229 slides. But this is very exciting. I was researching what the conference is about and what I should talk about. It's really exciting that there is a conference that's all about waterfall development. I really like. I really enjoy waterfall development. Because if you've ever been in a waterfall, you'll know that it's super comfortable. And there is a lot of really neat waterfalls, especially in movies like Jurassic Park. And I really like that movie, too, because they have eunuchs in there. And you can't like, I love that. I love this movie. It's so good. Anyway, also, I really like waterfall development because Gantt charts are amazing. I mean, look at this thing. You can tell that stuff is happening in here. I mean, look at that. That is awesome. I mean, you can tell. You can tell something is happening. That progress. And the thing is, I really, really don't like extreme programming. And I'll tell you why.  Look at that. Why is the X big? XP? That doesn't make sense. Just spell it right, seriously. It should be EP. The other problem with it is it's totally extreme. So whenever I'm doing programming, I've got to wear my official extreme programming helmet. Because I don't want to get hurt while I'm doing development. So I feel like this is why I'm really excited to be at a Waterfall Development Conference, because I just really want to slow things down. So I was checking out the conference website and taking a look at it. I thought it was really cool. So I checked out the source of the web page, and I thought this is cool. I don't know if you guys noticed this, but they use CSS, which stands for Cascadia Style Sheets. So I was really inspired by the talks earlier today. I want, all right, everybody, what time is it? Tell me what time it is. No, it is business. It is business time. That's how I answered it. Nobody else seemed to answer it that way. Anyway, I thought that talk was really, really, really exciting that I thought about Han Unification. He didn't even touch on that. Take a look at these. So those characters are all the same. Each column are the same characters. This is Han Unification. For Unicode, they took these characters and glommed them into one. So each row is one code point. But what I thought was really interesting about Han Unification is, if you're taking all these characters and turning them into one character, does that mean it's actually a Han Solo? We'll do something productive, I promise. Anyway, so this talk will be extremely boring, so I hope you find it to be awesome. So I was really worried about whether or not people would like this talk, so I put a bird on it. I don't know why anybody hasn't made any Portlandian jokes yet. But I guess that's because Portlanders don't like reality TV. Did I mention I'm from Seattle? Anyway, thanks for having me here. I'm really excited to be here. I'm on the Ruby Core team and the Rails Core team. You can find me on Twitter as Tenderlove. I'm also on GitHub as Tenderlove. Instagram is Tenderlove, and I'm also on Yo as Tenderlove. So if you want to contact me there, you can send me some Yo's. I'm the number one contributor. Number one Rails contributor. I have a lot of internet points there. That's a lot of internet points. But I'm going to give you all the, this is the secret to getting a lot of internet points, OK? You guys all listening to the secret? This is the secret. The secret? Revert commits count two. So more mistakes equals more points. So go for it. You know how to win. Anyway, I'm a short stack engineer. I enjoy pair programming. This is a close-up shot, action shot of pair programming. Hard part about setting this up is that the TTY is kind of sticky. I have a cat. His name is Gorbachev Puff Puff Thunder Horse. I have another cat. Her name is SeaTac Airport YouTube. This is a close-up shot of her. So my wife said that we had to get two cats so that I would stop looking at pictures of cats on the internet. What she didn't realize is that's just not how it works. Now we have two cats and I look at pictures of cats on the internet. Anyway, this is my other cat, her natural habitat on top of my laptop. Recently, I've been getting into Node.js, and that's so that I can be closer to the metal. So like this is me. I'm getting close to the metal there. Super close. I have my own consulting company. Adequate, adequate. We do everything adequately. I'm trying to come up with a new logo and music, but this is good enough, I think. Recently, we've been working on a lot of ground breaking technology, this. We break a lot of ground with that. Actually, we've got a website called recruitersfam.com. You should check out this website. We are collecting data for lulls. And I want to talk a little bit about Markov chains. So what Markov chains are is if you take a corpus of something, say, unwanted emails from recruiters, you can build a Markov chain out of these things. And what Markov chains are for is taking a bunch of text and turning it into something new. So you have a giant corpus, and you start out with this corpus of text, and you say, I want to generate something new from this using the patterns involved here. So we're going to look at how to do Markov chains. So let's say this is our corpus, just some sample data. What we do is we parse this and turn it into a tree that looks something like this. And these are the different nodes. The nodes are the words, and the edges on each node is the probability that we'll move from one word to the next. So if you're on node i, you have a 25% chance of going to tender or a 75% chance of going to love. And when we generate new text, what we do is we start out on a node, calculate, we choose, like, grab a random number and figure out where we should go next based on these particular weights. So we can come up with new sentences based on this particular graph. So this new sentence that we might come up with from that particular corpus was, I tender love you too, even though that sentence didn't exist in the original corpus as a brand new one. So what I actually store in the data is I store occurrence counts. So the edges are actually the number of times I've seen i go to tender or i go to love. So I saw that transition three times. And if you look at the data in Ruby, it looks like this is the data structure that I use in Ruby. So it's just a hash. The key is that starting node and the values are where it could possibly end up with their counts. And taking the recruiter data that I have, or the recruiter emails that I have, this is a sample of the real data that I have. And the thicker the line is the higher probability that it will go from one node to the next. So basically what we have to do is whenever we're at one of these nodes, we have to pick a random child to go to next. And I want to talk a little bit about picking random children. And the way that I do that is using a binary heap. And what a binary heap looks like is it looks like a tree data structure like this. It's a binary tree. And the properties of this tree are that each node has two children. The tree is complete, meaning that we always have all the children are always filled, unless it's the very bottom row where maybe only one of them is filled. But the next one that we add will fill it. The next node that we add will fill it. Each node is greater than or equal to its children. Or you can do a binary heap in the opposite direction and flip that conditional. But in this one, I'm saying each node is greater than or equal to its children. So let's say we want to add a new node to this. The way that we would do that is let's say we're adding a 15. That 15 is too big. It's bigger than the 8. So the algorithm for adding this is we swap the two. And then 15 is still bigger than 11. So this breaks our rules. So we swap those two. And now our tree is where we want it to be. So if we look at the heap for transitioning from I, we want to choose different nodes based off of I. If we look at the heap for that, this is what the heap looks like. So love is the top. That is the highest probability that we'll go to. And you can see each of these counts represents the weight for that particular node. So the way that we select one of these using a binary heap is that we take a journey of love. So what we do is we pretend that that particular heap, or that heap is like a road that we're driving on. And we're driving a car. And our car is going to land on one of those particular nodes. So we calculate the total trip cost, which is the total cost of all the nodes. And we generate a random number between zero and that total cost, or that top cost. And we call that, we say we have a random amount of gas. We see how far that gas gets us. And wherever we land, that's what our random child is going to be. So this is what it would look like in practice. I like to imagine that. So we have our trip total cost of seven. We generate a random amount of gas. We have Kit here going on a date. And he's a very irresponsible dater. So he fills his tank up with a random amount of gas. And then he walks along here. So we start out with six. At the top one, we subtract three, visiting that node. We go down one. We subtract one. Our gas is two. Down one, our gas is one. We go back over here. Keep walking because we still have gas. Now our gas is zero. And that's the random child that we go to. So we'll stop in a different place, depending on how much gas we filled the car with. What I think is really cool about this data structure is that we can store a heap in an array. So let's say we have our heap that looks like this. If we move all these nodes such that they're next to each other, we can actually store it in an array that looks like this. So if we were to transition that, that's what it would look like if all the nodes were lined up next to each other. And what's really interesting about this is that we can then calculate our parents and our children using the index of the array. So we say the index divided by two is the parent. And two times the index is the child. Two times the index plus one is the other child. And the only way this math actually works out is if that nil is at the beginning there. So it has to be a one-based array. But let's say we're here at the very top. Our index is one. We multiply that by two. And that means that the children is at index two and index three. Or let's say we're down here at index three and we want to calculate the parent. So we say three divided by two. Well, that's one, because we're doing integer arithmetic. And Ruby, if we were doing float, so you would have to floor this. Anyway, so the output of this, you can see the output of this Markov chain generation at horse recruiter. This isn't complete without some stuff. I'm not going to read these out loud. These are some of the ones that I liked. Humor, if you are receiving LinkedIn. This one's my personal favorite, Bauer. So now on to the actual stuff, which I will have to hurry.   And we're also going to look at how I use these benchmarking libraries to speed up Rails, how you can use those benchmarking libraries to speed up your code as well. But first, I want to talk about some stuff that's on my mind. I spend a lot of my time thinking about weird stuff and things that annoy me if you can't tell from my previous slides. For example, people always say this separation of concerns. And this really, really bothers me. And it's not for a good reason. The only reason it bothers me is because I think of this face doing this. And I'm like, how does this have anything to do with anything? All I think about is two concerned faces getting separated. I can't focus on what is going on. So whenever anyone says separation of concerns, I'm like, OK, move on. Anyway, so let's talk about some pro tips. Ruby dash D, does anyone use Ruby dash D? One person. Well, you should use Ruby dash D. And I'll tell you how to use it. Just tack on dash D. And the reason I really, really, really like Ruby dash D is because it puts Ruby into debugging mode and it prints out anywhere that an exception was raised. So this is very handy if an exception gets swallowed. So if you're seeing some weird exception get bubbled up and you don't know where that came from, you go to the code, it's not actually coming from there. You can run the program with Ruby dash D. And you'll see these debug errors come out, or these debug lines come out that say, hey, an exception occurred at this particular line. And you can go check that one out. It prints them out regardless of where they came from. So you can find solved exceptions. That's just one thing I've been using for debugging. The other thing I've been thinking about recently is Rack. And I want to say, so Rack, it's over. Reality TV.  Sorry, anyway. So Rack has this, this is the Rack interface. Hopefully most of you are familiar with the Rack interface. You have to implement a method called call, which takes this environment hash.  And you have to return up an array back up the stack. And what really, really annoys me is that the only way you can pass data between your Rack middlewares is guess what? This LOL global data.  That really, really bothers me. Really bothers me about the Rack API. But also I need to say something like, oh I should have mentioned I'm on the Rack core team as well. So there will be no Rack 2.0 star. There will be a Rack 2.0. But probably I want to release a Rack gem that's 2.0. There may not be a Rack spec that's 2.0. Although I want there to be a Rack spec that's 2.0. So I'm thinking like, for a Rack 2.0 I want to do something like drop Ruby 186. I feel like maybe we don't need to support that anymore. So go to something that's maybe greater than or equal to a Ruby 2.0, but of course we can only do that in a major version and Rack is already at one. So obviously there has to be a Rack 2.0. But I've been thinking a lot about the next generation of web servers and this type of protocol that we need to have in order to move forward. And that's, I want something like this. Like I want a Rack spec that looks something like this where basically we have an environment hash which is just the CGI environment. And we have an input and output stream where input is the post body and it can't be rewound. So anytime you need to take data like say somebody's uploading file or they're doing a form post, we read off of this IO. And the output IO is just an IO-ish type thing where we can write stuff to it or set headers. But it seems it's very similar to an IO. And what's cool about that is the web server, if it wants to, they can wrap up that IO and provide something to you that actually chunks stuff back out to the socket. The goal of this for me is basically to steal from Node. Just because one thing that really annoys me about Node is people are like, oh, look at all the stuff that Node can do, Ruby sucks it can't do that, we can totally do that, we just don't have the APIs. I want to steal and do that. So these are just my thoughts. If you have, these are random thoughts that I just want to write down and share with people. If you have thoughts about this, please come talk to me about it. We need to push Rack forward. We need to make the Ruby web server space even better than it is today. And the only way that we can do that is improving this API. So onto performance tools. I'm gonna talk about a lot of performance tools, gathering data from Rails applications, what we're doing on, I keep saying we, whenever I say we, just gsub that in your mind to I, it is me doing it, there is no we. I also think that's weird when people are like, oh, just report that bug to such and such open source team. And I'm like, you know, that team is just one person, right, it's not, can it be a team if it's just one person? I don't understand.  So maybe I am a team of one. Anyway, I'm not crazy, really. So I wanna talk about raw performance, measuring raw performance of a particular algorithm. Davey touched on some of this stuff earlier today, so hopefully I can move through it quickly because I only have like 12 minutes left. I like to use this library called benchmark IPS and I'm gonna compare this to the standard library benchmark tool. Standard library benchmark tool looks something like this where we say like, okay, create a benchmark, run in some time around some particular function, we run that function in times, and then it tells us how long it took to run that function in times. The problem though is when you're writing a benchmark like this, you're like, well, how big should N be?  Took like zero time. So probably what this is saying is probably your N wasn't big enough, but you don't know how big to make that N and that's where benchmark IPS comes in and I think that benchmark IPS is very, very handy this way. You just say, okay, give it a block of code and it runs that code as fast as it can in five seconds. So it's like, okay, how many times can I run this particular block in five seconds and it reports to you in iterations per second. So the higher the iterations per second, the better the algorithm is or the better that code is. So for example here, we have two benchmarks here, one is accessing a set and one is accessing a list and we all know which one is gonna be faster here, but you can see that the output, see the output here, it says like, those are the iterations per second. The set include was some, I don't know, big number per second and the array was much smaller. So with iterations per second, higher is better. So the other cool thing is that this provides a standard deviation, so when you're doing stuff, you're running your benchmarks and obviously you're listening to Rebecca Black on YouTube and you've got iTunes going at the same time and probably there's some Netflix as well. Well, that's gonna cause some standard deviations in your code or in your benchmarking script so you'll see those standard deviations there and that's handy for you to know like, well, okay, this algorithm will run so many times per second plus or minus a particular standard deviation and you wanna get that standard deviation as low as possible. So if we compare that to, I wanna cover another thing with benchmark is like, if you're doing this particular example, we have a hash and a set and we say, okay, we're gonna do set include and we're also gonna do hash include and you think, okay, well, a set include and a hash include, those should be approximately the same, right? A set is probably implemented in terms of a hash so accessing between these two should be about the same amount of time but if we run this code using the standard library benchmark, we might see an output that looks like this and we'll see that, well, the set access is slightly faster than the hash access. This may happen. Now, if we run this test again with benchmark IPS to see how quickly we can do in five seconds, we'll see our output looks like this. I'm not gonna make you read those. We'll look at a nice graph. The graph looks like this and we can see that set access is actually slower. It's lower than doing hash access and actually the reason is because, the reason for that is because set actually does wrap up a hash so there are other method calls involved so when you do set include, it's proxying methods over to the hash, the underlying hash implementation so it's slightly slower. This probably won't actually matter in the grand scheme of things but this is just an example of how the standard library benchmark could lie to you. The other reason I like using these tools is for black box testing. Black box testing, like many times, so I have a confession to make. When I'm working on Rails, many times I actually have no idea how any of it works. This is true. I've been working on it. I might be the number one committer. Remember, many of those are reverts but I don't know what's going on and I'll use benchmarking tools to try and figure it out. So for example, let's say we have two cache implementations. We're doing cache access on both of those and we wanna measure that. We wanna see how fast these accesses or how fast an access works when the cache size grows. So we can collect all the reports from benchmark IPS. We can say like, okay, I wanna populate the cache to size 10, 100,000, 100,000, do a report. We can grab that report, grab the report down here and compile all this data, which I'm compiling into a CSV. So I take all of those reports, turn them into a CSV. I change that to do seconds per iteration because I actually care about how long each iteration takes. So then I multiply that by 10,000 and say, well, I wanna know how long 10,000 iterations takes and then I'm gonna graph that. So I turn that into a CSV, throw that into numbers and I can see what the graph of that looks like and you can see along the x-axis there that's the number of elements involved along the y-axis is the amount of time that it took for 10,000 iterations. And we can see that that blue one there stays linear and that green one, or the blue one stays constant and the green one goes linear, or possibly square, we're not sure. But it's actually linear if you go look at the actual implementation. This graph makes sense because one of these is implemented with a hash, which we know lookups will be constant time and one of these is implemented with an array which we know will be linear time. Where I use this with real life, a real-world example is routes and rails. I want it to understand as a routing table, does the size of the routing table impact how fast it takes to generate an ATAC?  We'll draw some resources. This is an example with one route. So I did it again with 10. I timed it, did it again with 10, did it with 100, did it with 1,000, and then graphed how long it took to generate a link for each of those sizes. And if you look at that, I actually went all the way out there and we see that we get about a linear. It looks weird. We have a large standard deviation, but along the x-axis is the number of routes involved, y-axis is time per link to, and you can see it's about linear. So we know that adding more routes to the routing table does not impact how long it takes to generate a link to. Now, the next thing I wanted to understand was does the length of the route impact a link to? So how long that href is going to be? Does that impact how long it'll take to generate an ATAC? In order to do that, I wrote another benchmark that said, okay, I'm going to match against get slash a. So right here we have get slash a, and then maybe get slash a, a, get slash a, a, a, a, et cetera, et cetera. So we do a length of one, a length of 10, a length of 100, et cetera, et cetera. And if we plot that and look at the, look at that performance, we'll see, again, along the x-axis is how many, how many slashes were in that link, and along the y-axis is the amount of time that it took to see that, or to generate that link to. And you can see as we grow the number of segments, the amount of time it takes to generate an ATAC gets longer. So we can say probably that implementation has some sort of linear data structure. Maybe there's an array involved. We're not sure exactly. So now that we understand where our time is being spent, or now that we understand what exactly is slow, how can we figure out where our time is spent? And the way we do that is with a tool called StackProf, and this is a, this is a sampling profiler. And the way that we use this is we say, okay, run this code inside of a block and it'll sample every so many seconds. Where are we? What call frame are we at? And the idea behind that is that the longer you spend inside a particular function, the more likely it is that that sample will find that we'll see that you're there, right? So this dumps out a text file, and we can just say, okay, show me the text, or it dumps out a data file, and we can use this command line tool to dump out what that actual stack trace is. And this is the output I got from it. And you'll see at the very top there that's where we're spending the most time. It's in this method called URL4. We're spending 26% of our time there. So that's where we want to focus our efforts on doing performance improvements. The next thing I want to understand is the amount of objects that we're generating. I use gc.stat to do that. So I say, tell me how many allocations have been allocated in the system. This says, this returns a value to me that is the number of allocations that have happened in the entire system ever. So it's a number that's always increasing. So what I did is I said, okay, find an object from ActiveRecord. Tell me the number of objects that have been allocated in the system. Warm up our cache. Get the number of objects allocated. Do our actual benchmark end times. Get the number of objects that were allocated after that. Subtract the two and divide by n. And then we know how many objects per run we did. So a real-world example where I'm using this is with figuring out where our objects are being allocated with regard to views. So in order to do this, I generated a fake request and I sent that to our application. So we have this is doing requests against books slash new and it's doing it for a count number of times. So right here we set up the rack environment. This is a hash that we just sent to our middleware. That hash of stuff that I totally, totally hate. Count up the number of allocated objects. Exactly the same thing we saw in the previous slide. And if we graph this between 40 stable, 41 stable and master, our test results look like this. They're actually going down big time. But there's one thing I want you to notice about this graph is that the lower left-hand corner actually starts at 2,000. So this is an example of how to lie with graphs. If we set that lower left-hand corner to zero, the graph looks more like this and then we are sad because it's not very much. But you have to realize that even though this graph does not look very good, it's actually 19% reduction in objects since 40 stable. And actually a 14% reduction in objects since 41 stable. Now this is interesting because we can see the overall number of objects that are allocated for your system but you want to know what the strings are being allocated.  Three minutes. Okay. Allocation tracer. This is the tool that I'm using for that. So allocation tracer will tell you what objects are being allocated. It counts up forever and ever like our previous one but it tells you the types. So here's an example. We run this a thousand times. We get the output from that. And we'll see that we generated a little bit longer but I trimmed it up for the slides. So I wanted to look at speeding up helpers and reducing object allocations reducing object allocations inside of our helpers and I did this by profiling requests and response which we saw previously this test I showed previously but this time we're generating that hash again but we're using stack prof this time in order to figure out where we're doing object allocations and if you look at this look at the output you'll see that this is using up 9% of our CPU time and I want to talk a little bit about SafeBuffer. So I wanted to see where a SafeBuffer initialized being called and the way I used this is with the TracePoint API. So look up TracePoint. It ships with Ruby.  So I get access to the call stack so I can see exactly where those are being called and you can see down here at the bottom we have two particular calls and the output of this program shows me that one of those is actually inside the HTML safe method. Okay this will become interesting later hopefully. The other one is inside of the main function where we saw that we just allocated that straight and where this is actually happening inside of Rails if we look at that call stack there's a tag option method. This tag option method is used inside like say form tags anywhere where we generate attributes of the tags so like you know href equals whatever or method equals post any of those places we're using this particular helper now where it was actually happening is right here this erubyutile.h so I want to talk a little bit about sanitization oh god I'm not going to make it in time let's go quickly so safe we're going to talk about safe buffers this is an ordinary string this is html safety handling in Rails so a normal string is not html safe we consider that not to be safe if you tag it if you say.html safe we return to you a safe buffer that actually just tags it so html safe just tags it saying that this is safe we consider this to be something that's okay to write out over the wire so erubyutiles.h if you look at the implementation of that what it would do is say if it's not html safe we're going to make it html safe with this gsub and then we're going to call html safe on that what this actually did is the gsub generated a new string object and the html save generated another string object so we're actually creating two strings for object whenever we call this method or two strings per call so if you look at tag options we call erubyutiles.h we assign that to value that value variable is used that value variable is actually just interpolated back into a freaking string which means that what's happening here is we're going from a string to a string to a safe buffer back to a string again so this safe buffer is a waste so we want it to eliminate it the way we did that is extract this method extract this into another method we have an unwrapped html escape which does not tag the string it just escapes it and then we create this extra one down here so we stay backwards compatible so we update our callers now this will only create one string and we get interpolated down here again so now we're just doing string to string to string and this may seem very sad except that it's saved over 200 allocations per request so we run this benchmark again again with books new for a certain amount of time look at this place I wanted to look at the types of objects and where they were being allocated and if we look at that this is a breakdown by type string, array, hash we'll see they're 4.0 stable, 4.1 stable and master and we're actually dropping with all of these again it doesn't look super impressive but remember 19% reduction 14% reduction and again your mileage may vary shouldn't that be kilometers shouldn't we be using the metric system it depends on how your ERB templates are used I have like a lot of slides left I'm not sure if I should continue Ben, should I keep going? OK I just want all of you to get your monies worth seriously I'm not always speaking at Cascadia and you don't live in my house my wife hears all of this every day so anyway I wanted to look at string object reduction I wanted to do this even more in Ruby we have mutable strings so if you look at run this code 5 times here and you say printout food object ID you'll see every time we execute that block it actually allocates a new string even though that string never changed each time we go through it and what's cool is in Ruby 2.1 there's a new optimization where if you freeze a string it's actually literal it's actually constant we don't allocate a new object so if you say food.freeze and print out the object ID you'll see it's always the same thing now if we look at implementations of ERB templates so this is an ERB template this is the code that it actually generates I want all of you to read this very closely I'm just kidding so anyway if we zoom in on part of this compiled template we'll see we have this method here this is from string and that string came from your ERB template it's an HTML literal this is an HTML literal that came in your template but what's interesting is the HTML template literals can't change those strings cannot change you can't get access to them they cannot be modified so we added freeze added freeze to that and now we just freeze those HTML literals again this brought down our allocations for request drastically the next thing I wanted to do is speed up speed up output and I have to warn you this is a work in progress the way that we're speeding up this stuff hasn't actually landed in master yet but it is on my laptop hopefully my laptop does not burn up it's all up here right? it's fine it's fine the way that I was speeding up output is using the law of the meter but I think this is a weird name I think it should actually be the suggestion of the meter it's actually a law you can't get arrested for it if you violate it except here in the United States where you can get arrested for it so one thing I was wondering though is if you get arrested for violating the law of the meter does that make you an arrested developer? yes when I thought of that it blew my mind okay anyway so law of the meter is interesting I don't actually understand any of the explanations of it what I think about it is it's not about the dots it's about the types that you handle in your functions so it doesn't matter how many dots you have in your functions it matters what types you handle inside of your function and the fewer types that you handle the faster and easier your code is now again let's take a very close look at this compile template very close read that closely zoom in again here we have our old friend save append where we're adding a string literal HTML literal that cannot be modified and what's interesting about this is that it's generated remember it's generated by our ERB compiler and if we go look at the output buffer object this output buffer and we look at the implementation of save save append let's take a look at it this is the implementation of save append equals and the first thing I notice about this this happens to me all the time when I'm working on working on rail stuff is why? why are we checking for nil? this doesn't make any sense the ERB compiler guarantees that that method call is going to be called with a string we know in advance that's being taken care of for us we don't need to know about dot whether or not it's a nil right so that line can go it can go so we're not dealing with nils anymore this function dealt with nils and it dealt with strings but now we're saying okay we'll say super and we're calling 2s value 2s on that thing let's make sure that stupid thing's a string it's got to be a string 2s really really a string but remember the ERB compiler guaranteed it was a string for us we know in advance it's a string so we can get rid of that 2s we know we know we're just dealing with 2s now now the value we know that calling super with a value we can just get rid of that that goes away so because we're just passing all those parameters up and now now that method can just be implemented like that I could just go away so this is how you speed up rail so I'm not sure I'm not sure whether or not that was the law of the meter why that code was actually actually was the way it was I think it may have been defensive programming but my jokes wouldn't have worked if I called it that so I think what we have to do when we're dealing with this stuff is we have to limit the types that we're dealing with it's very powerful for us to say like in this particular function I only handle strings I only handle strings now if we look at the superclass we'll see that ok well the superclass passes in we have to check whether or not the self is html safe but we know that that output body that output body can't be mutated and the only way that our output buffer cannot be html safe is if somebody mutates it so this only this conditional only happens on mutations this conditional is only ever true when that output buffer is mutated but how can you out how can you mutate the output buffer I guarantee none of you know how well I hope you don't otherwise I have broken your code who mutates the output buffer I think nobody does that so I think we could actually reduce the superclass down to this and increase our increase our performance this way so I think if we eliminate our objects the first thing that we need to do we need to do for speeding up our code is eliminating our objects remember I have no idea who said no code is faster than no code really limit the types that we're dealing with fewer types that we deal with equals less code less code equals faster code the other thing is report performance issues to us on the rails core team please open tickets and you don't need to say it like you don't need to say like Aaron my app is super slow just say like Aaron this this thing I think that finding a record from active record should be faster it's too slow now like we need to know this particular stuff because we don't really have a good I'm not sure how to do this we don't have a good suite for preventing against performance regression so please please help anybody if you can but if you ever see any performance issues report them to us if you say like if you see something in I don't know in node or some other framework where it's very fast compared to something we do in rails report that say hey this other framework does something that's equivalent to what we do in rails why is there there's faster it's probably a bug and before you decide to freeze all of the strings measure measure measure measure measure seriously don't go around freezing all the strings in your code base your coworkers will hate you only do it in places where it's actually a bottleneck we're actually seeing performance issues so to conclude this I know that I'm over rails 4 2 will be the fastest rails ever thank you that is all


This study presents a systematic review of studies that have used deep learning, DL, based on mobile health, mHealth, data for the diagnosis, prognosis, management, and treatment of major chronic diseases such as cardiovascular disease, diabetes, and cancer. The results show that DL algorithms using data captured from mobile devices can achieve satisfactory performance in diagnosing patients' conditions, predicting blood glucose levels, and detecting cancer. However, most studies did not provide details on the explainability of DL outcomes. Perspective studies are needed to demonstrate the value of applied DL in real-life mHealth tools and interventions. This article was authored by Andreas Triantofilidis, Hari Demos Kondilakis, Demetrius Kodahakis, and others.


Good day, fellow investors. I hope you enjoyed my Eldorado video, where it was clear that Eldorado was a bargain. And now I want to discuss Pre-Tune Resources, another stock that looks like a bargain. Let's dig deeper into the mine. The main mine of Pre-Tune Resources, the only mine is the Bruce Jack Gold Mine that has started commercial production in July 2017. And this is the main issue around Pre-Tune. Will the previous ability study the technical updates be confirmed or not? What Pre-Tune wants to mine is the value of Kings and the West Zone at Bruce Jack. And you can see here that the gold grades are extremely high. Proven reserves 14.5, probable 16.5 for the value of Kings per ton, grams per ton. West Zone 7.26.5. In total the contained ounces of gold are 8.7 million ounce. Multiply that with 1,300 and what is the price of gold? And you get to more than nine billion dollars, which is huge. The mine life is 18 years, according to plan. They will mine 7.27 million ounces, 500,000 ounces of gold per year, very high gold and silver recovery. So if they hit that, then Pre-Tune is very, very cheap. From the technical report, the current net present value of the mine at a 5% discount rate is around 2 billion. Pre-Tune market scope is 1.5 billion. So there is still the 25% difference in order to get to the net present value. However, the difference now is that the capital has been spent. The 811 million needed to develop the mine have been spent. So what's left is just pure cash flows. So the capex is closed. Gold sales are already underway. Their goal is to pay down their debt of 600 million. If they produce 500,000 ounces of gold, they could easily pay down the debt in 2017 and 2018. And they also have a stream to buy back. Just a quick look at the balance sheet. You can see the long-term debt, 616 million. They want to pay it back. After that, you can expect high dividends if the plan goes as planned. What's very important with Pre-Tune is that we are here. So we are just about to start going into net cash flows. When you look at a technical study, you get the net present value that includes the money that has been spent. That's the 800 million. Okay, there is 600 million of debt. But everything has been developed. The development stage has a lot of risks. So that is behind us. And now all that Pre-Tune has to do is take two years of cash flows, two and a half years of cash flows to pay back the debt. And then you have a company that will have cash flows of around 300 million dollars for almost nine years after that. So we can expect Pre-Tune to have cash flows of around 300 million dollars per share for the next nine plus three wealth years, till 2029 at least. With 180 million shares outstanding, you can easily see why the company is very undervalued because cash flows of one dollar, one point five dollars per year would really, really have a positive impact on the stock. And then if you pay eight dollars for cash flows of nine years of one point five dollars, then it's cheap. And this cash flow calculation from the feasibility study was made at gold prices of 1,100 per ounce. Now gold prices are a bit higher, almost 20 percent higher. So we can add 20 or even more percent to these net cash flows. It's even interesting that Pre-Tune has 8 million, 10 million convertible shares with the dilution price at 16. That's double what it is now. What's also very interesting is that Pre-Tune has a huge reserve expansion target. This is the Valley of Kings, this is the West Zone. And they have made drills that show, I don't know, two meters of gold at 2,100 grams per ton, which is amazing and huge. So if they can develop this, they learn how to mine the resource in the West Zone and the Valley of Kings and then bring the same technology towards the new findings, you can expect many, many more years of mining and high production from the Bruce Jack mine. Now the main risks surrounding Pre-Tune are the grades. There has been plenty of discussion and even some class action suits against Pre-Tune that the grades included in the Bruce Jack study are not correct. And if we look what they produced from their management discussion, the grades coming out of the Bruce Jack mine are not the 15 gram per ton expected. They are 3.4 and 5.7 for July. So everything on what will happen at Pre-Tune depends on the upcoming grades. Those grades should have been 15, almost 15 grams per ton. The reason behind the low grades, according to management, is the development mark and the low grade stockpiles. Let's hope that that really is the case and not a different resource than in the technical report. Because if you go back to the old technical reports, 2011, before the last one that was adjusted, you see that the Bruce Jack estimated mineral resources have a gold grade of 2.25 grams per ton. So if we compare again the current estimated mineral resources and the 2011 estimated mineral resources, one could simply ask, okay, they just eliminated the lower grade or and they said we will mine only the higher grade or. However, that's pretty complicated to do. And what you can do in the future is really trade Pre-Tune when they manage to hit the 15 grams per ton or even higher, then you sell it. When they don't manage to do that and they hit lower grades, like they have been doing now, then you buy it. So I really expect Pre-Tune to be a volatile stock according to mining grades. Therefore, also very risky, because if they don't hit the 15 grams per ton, the net present value quickly goes below the current value of the company. And that's the main risk of Pre-Tune and everybody should be aware of it. So I look at different gold miners we have already done. El Dorado, we have made a video of Harmony Gold. There will be plenty more in order to find the best low risk high reward investments. It's not that easy and Pre-Tune, I must say, I don't know the geology of the resource. I don't know what will they find out, perhaps with time that will come out. But for me now the risk is too much. If they don't hit the 15 grams per ton, they hit 10, they hit 7, then there is really potential for permanent capital loss. And that's something I don't like. I love low risk, high reward investments. And at this point Pre-Tune is not. I'm sorry to disappoint the Pre-Tune long ones, but okay, that's my opinion. It's always nice also to hear an opposite opinion and I hope you enjoy the presentation and I added value. I'm looking forward to your comments and where am I wrong in the risk-reward assessment. And two really facts that can help really paint a better picture for those interested in Pre-Tune. Thank you for watching. Consider subscribing if you haven't yet. Click like if you like the content. Click like if you dislike the content. And I'll see you in the next video.


Everybody forced here ripping four Star Wars boxes for Sinvicta Sinvicta's got a couple of 2021 Star Wars bounty hunter boxes and a couple of 2022 Star Wars finest boxes Good luck Sinvicta Let's get started Everybody left when Brady left to become a chiefs fan. See that's like like yeah, you're a bandwagon fan, but the end of the day Like that seems like a lot of fun. They just like choose a winning team every year, right? If you remove yourself from your team, I know most of us follow teams and not players But what like man being a bandwagon fan seems pretty cool now that I'm thinking about it The payoff isn't as good though. I'll say like we're team finally wins a championship the payoff won't be as good But overall year-over-year you're gonna be a much happier person So if you abandon that team, but they go on to a Super Bowl two years later, can you go back to that? That's that's another thing. Okay, like you can't jump. I guess you could jump back. No one's stopping you, but Got blue Lando Calrissian Mori fall players. That's I mean, that's that's how I'm starting to feel Like I'll show I'm straight up rooting for the Phillies. I'm straight up I feel like a Phillies fan right now like I'm invested in the Phillies Like I'm about it Purple Cheyenne, that's a color match right there bounty three 26 to 35 skin color match Yeah, exactly Like I know Rich is basically a bucks fan because of Brady and that's fine. I was for sure rooting for the bucks Hardcore on that Super Bowl run with Brady blue bounty hunter fennec shans I'm a magic fan. So I know all about like having a root for other teams like Having like a satellite team Bounty to blue big fortuna a feared mercenaries green Jango blue bounty one Kato Parasite And guys, this is the last one of the night. This is gonna take us up to just about midnight You got more personals tomorrow after group breaks with Sam Matt's also doing on the fly baseball group breaks and personals tomorrow starting at 10 a.m. Eastern So fries are the MVP player of the balance. Yeah, this is Rich's analogy Yeah, I would say so what I think McDonald's I think I think of the fries Bounty one blue hun solo and carbonite quit being a banglesand million times before I can imagine Ryan bounty to green rancor Numbered 51 of 99 there's another thing though is like The teams you like don't always make the decisions you want or you agree with at all Like I'm I'll always be mad at the Patriots for not paying Brady to stay a Patriot for life I will literally always be upset about that. I'm a fan still, but like that sucks, man Purple bounty one boss 71 of 99 and a blue boss He's got a fun mission in a shower for soccer. I don't know if you've done that one. Yeah, I don't know I think I don't know McFlurry's our defensive player of the year that that sounds pretty true Yeah, it's for sure outdated. It's like Like younger kids. They like staff. They like LeBron. They like, you know, Anthony Edwards bounty one blue Boba Fett Which is totally good like the game that the players are what sells and like a whole MLB being like, you know, focus on young players like do that more had ma'am Adala bounty Realize the voice actor for her stars like everything Star Wars. Yeah. Yeah, like she I was I was playing Horselage for the first time forever Last week and she voiced Leia. I was like, oh my yeah, Memphis nest blue Bounty one green salacious bee crumb there he is Or there it is 90 of 150 Salacious bee crumb. I hope that's the thumbnail of the video Oh, he's going from Lakers fan to Warriors fan see that's a that's a bit different. That's basically a that's like the same state Bounty one blue Quinn I think it is That's another thing like going to the team's rivals kind of whack See rich bounty to blue frog lady eBay Yeah, eBay is the best place to go or a local shop if you have one Yeah, eBay That's the way to go bounty one blue Lando Calrissian Google searches might help as well Look at that that's pretty sick and dengar die cuts dengar die cuts Very rare on that one there you go sin I can never remember this guy's name bounty three blue boss Yeah, I mean every dynasty team kind of you know builds it and surprises people right bounty one blue dengar Patriots had never done much of anything up until 01 Lost a couple Super Bowls pretty badly The bulls in the 90s, you know bounty one red job of the huts 61 of 75 What about pizza the hut Bounty one blue Kira San Antonio Spurs as well. Yeah, Patriots Who else like the yeah the Warriors are like one of the better examples Yeah, the Blackhawks to bounty one blue is Geryndon sketch card There you go sin dude sin Vic. There's a sketch magnet. I do not know the name of this character There you go one of one original sketch You might send back you might know the artist, but I do not Something mesling there we go one of one original sketch right and that would be in place of the auto Very nice one more bounty hunters box. Yeah, San Frans giants. It's a good one too. I mean heck What about the Boston Red Sox? 86 year curse turn it into the most world series in the new millennium bounty level one blue Mandalorian bounty to green job of the huts 14 of 99 level one blue Saripas Saripas, I don't know how to say that space Boston Bill Burr blue bounty to level one blue embo Another sketch come on since it come on man. That is hunter. That is a really Really fantastic sketch. That's really cool. Wow man Kevin P. West with the hunter sketch or bad batch That's really cool. That is a phenomenal sketch first of all.  I can't wait for season two for that show So if it is a sketch magnet guys, I don't know if you know I don't know if you know that He has a lot of sketches Blue makes mayfell level one people might not know this but General Kenobi and green crate dragon. They had a 50 of 50.  Who? Grievous and Kenobi. Did they? Yeah Who won? Well, I think Obi-Wan still lives so bounty one Greedo blue Grievous busted up that bounty one blue bib fortuna Right almost done with the bounty hunters box. Then we got a couple finest for some Victor as well Boba Fett blue level one Green level one C2 one high singer 79 of 150. There are some pretty obscure cards in this product Lando level one blue Well, there's also some sick ones like honesty that hunter sketch is one of the nicest Star Wars sketches I've seen Blue level two and this nest Level one blue job of the hut level three Lando Calrissian Hondo yeah, I love Hondo Pelle malto level one blue. He's got so much fun dialogue You're gonna watch a band or yeah. Yeah, I gotta catch up. I think I need to catch up on two episodes now There's a brick level one red Number 63 of 75. I enjoyed the first few episodes for sure Yeah, it's definitely for not having like Jedi's insistent stuff. It's it's a good show level one blue q9's q9. Oh, I think it was Blue level one boss. Oh and an auto. Look at that. It is a log gray auto, too. That's pretty nice 49 of 75 is Mike Edmunds is log ray Geez man killed it with those two boxes sin Congrats, buddy. Oh Who's got the sketch on the first one that a sketch and a nice auto in the second one. That's pretty wild I Definitely the best couple of boxes of bounty hunters. I've opened also at the die cut.  It's ridiculous. All right, two finest now One of the odds are just sketch one of these now I'll tell you the odds one and four never tell me the odds One one out of four like mini boxes or for the whole one a case and finest for the For the sketch which would be eight hobby boxes eight master boxes, I guess you would say and bounty hunters I Thought it was one a case But it might be More random than that bounty hunters as you can see those are from the same case God Hunter refractor Toto 360 or 360 Echo from bad batch a gold refractor Janna 45 out of 50 Grief cargo Mandalorian inserts refractor Koska Reeves There's no way there's a sketch in my hand right now, there's no way Wow Look at that Jawa sketch Keith Farnum This is Synvicta is a cheat code right now in this. I don't know man How do you go three for three on sketches different products Same case the bounty hunters as well You say you you say that you was a sketch man. He is a literal sketch man. Yeah, literally That one's got awesome details. Well nice Jawa again Keith Farnum as the artist That's wild Fennec shans Refractor toto 360 or 360 Cut log Wayne Babu Frick Luke Skywalker Mandalorian is like the only good part of that movie there was there wasn't a lot of good Ray Fractor and a blue Kira 40 of 150 That movie is over loved and then solo is over hated. What's up? I said I think it's a solo Is that right? Oh my god a super fractor. Oh, are you serious? I'm not even kidding. What the world? Synvicta come on man. Come on Synvicta It's an insert It's the clients one of one insert auto Superfactor burner Herzog.  He's not even in chat right now Save some booms for the rest of us. There's a Soka refractor. That's the extended base number 101 the client He was the guy Beginning of season one right? Yeah, he was only in the first what two or three episodes. Yeah, okay But I mean Werner Herzog obviously much more famous for just I don't know the actor. That's why I'm It's ridiculous. This is What what has he like been in Hang on let me message Synvicta Think I can find him on discord Oh man Hey Vaughn you should you got to tell rich and Lane and Cortis that now you got to tell them exactly those words Because I've been pulling crazy cars the past couple days.  I'm not gonna show you Yoda refractor blue refractor phoenix shand 116 of 150 Synvicta is it isn't twitch chat now guys. You're gonna have to rewatch this. I ain't spoiling nothing Admiral Tarkin you got to watch it its entirety Yeah, it's Yeah, just rewind at the very beginning. You're gonna be a very happy person Muff Gideon. Yes. Yes, but I don't I don't want to spoil nothing for you But oh my god Okay, I mean there's gotta be something like not great in this box, right theoretically refractor sith trooper theoretically These are for also in the same finest case as the other green Janna 39 of 99 a Purple auto ebb and peel 254 of 299. I've never seen something like this. I will remember this for a while Berg refractor Berg It's short for Pittsburgh Harrison Dula, I can't wait to see live-action Harrison Dula Sabine Ren a Two of ten black refractor charot M. Way Nice charot black refractor of another pretty nice card right there We're the chance that we see Ezra like early early. I don't know Bobby Frick refractor Ron Ezra Hera Sabine Guy refractor auto Laira Lyra or so Veline Cain is Lyra or so Yeah, like To me, he's not like that big of a character to tease for an entire No This Invicta you dirty dog. I refuse to believe this right now This is so I do not know this is insane I I these were literally Like in the back. Yeah, they're just sitting on the shelf the last two boxes of the case from finest We're sitting on the shelf for the other sealed cases And then the two bounty hunters were just in the top of the box. There's like of the top of the case There's a two top boxes there.  So yeah, I think she's gonna have a lot going on Yeah season two probably you probably end up seeing a live-action Omega at some point as well I wouldn't be surprised. Yeah, I would assume if they're going season two animated bad-batch. Yeah Yeah, I don't know what the odds are of that happening, but it is far far worse than one in the million I don't really know what to say guys. That's overwhelming in a good the best way of awesome. I'll do a little recap for you I'll give you a recap The last pack to that's almost like a break For Mags better than any You could rip cases and cases of this stuff and Not hit two Superfractors in the same in like five or six or even ten finest cases. It took us a while at our first event I Just I don't believe it.  Java sketch is dope. That's gorgeous as well And then the hunter sketch the hunter is really great looking the hunter is fantastic That might have been that might be the best card the best-looking sketch. I think I've seen All right, congrats and Victor