That's right folks, C for comedy, A for Abbott, M for Maxwell, E for Ennis, L for Luke Costello. Put them all together and they spell Camel. Experience is the best teacher. Try a Camel.  And draw up a chair for tonight's Camel Show starring but Abbott and Luke Costello. Hey, Costello, Costello, come here, come over here. Why are you late again? Well, Abbott, I stopped at the Muses Show to get one of our records of our baseball routine. But there was a guy in there ahead of me and bought every one they had. Who was it? Leo Tarocha. He wants to find out who's out first. Well, all right then. But happy channeler won't tell him. All right, well, all right, forget about it. How are you doing on that job I got you last week? Oh, forget that. What do you mean? The job? Yeah. Well, I worked there five days and the man fired me. Five days? Isn't that pretty short notice? Sure. I'd defy anybody to find out how dumb I am in five days. All right. Where'd you say anybody? All right, all right. I'm not doping that back. I know, that's what I know. That should teach you. You know, that should teach you the value of education, though. That should teach you the value of education. Education? Yes. Did you graduate from college? No. High school? No. Grade school? No. You're getting hot. Well, no, wait a minute. Doesn't that make you an ignoramus? No, but it sure helps. Anyhow, if my folks could afford to send me to school, we were so poor, my mother used to send me out on the street to beg for a piece of whole wheat bread. Why whole wheat bread? We were poor, but we were proud. But I had a happy childhood habit. You did? Every morning I'd take my father's hand and we'd walk to school together. And then at 4 o'clock I'd call from and take him home again. I'd tell you my... Oh, man, what's going to school? I'll take him home. Man, I know.  But now you can make it. You can make up to her. You can make up for everything. Remember, that Sunday is Mother's Day. That's right, Abbott. Next Sunday is Mother's Day. Oh, then you do remember Mother's Day. Sure, my mother always sends me something. Why, you idiot?  Now, last year I sent my mother a check for $100. By the way, that reminds me. I never did get that check back from the bank. No, but I'll bet your mother did. I... Please, come here. No remarks like that, Castella. My checks are good. I have plenty of money. Why, it cost me $10,000 a year just to live. Abbott, it ain't worth it. No, it's hard to have. Please, don't mind that.  I think I'll get her a friend to 1947 Cadillac. Where can you get a 1947 Cadillac? You can get all you want of them from the Cadillac Company if you're a property owner. Boy, no, but what kind of property do you have to own? The Cadillac Company. The Cadillac Company.  You haven't got enough money to buy a new car. Oh, no. Then I'll send out my collection of rare coins. I got it right here. Look, Abbott. Two quarters, three dimes, and a nickel. Well these are not rare coins. With me they are. Abbott, will you let me $10 to buy my mama a nice present? No, I will not. If you need money, I know where you can get $1,000 just for spending the night in a haunted house. Good. That's just the kind of job I've been, been, been, been. What's the matter, what's the matter? What kind of house did you say that was? A haunted house. You see, the owner wants to sell it, and he's willing to give $1,000 to the first man that was spied in the night there to break the spell. You know, the spell of the ghosts. Ah, but I ain't going to get mixed up with no ghosts. What do you mean? When people stop walkin' and talkin', I'm throwin' them. Oh, yeah. Not that dopey. Castella ghosts is not real. When you see a ghost you see an apparition. Abbot, when I had my apparition for epirentisitis, all I saw was a docketer and a beautiful nurse. No, no, no, no. I'm not talking about an apparition. I'm talking about an apparition. Apparition like in hallucination. Abbot, what in hallucination are you talking about? Bastello, I'm talking about ghosts, spooks to you. Abbot, that ghost may spook to me, but I ain't spooking to him. I ain't holding up conversation with those strange ghosts. You can't speak to a ghost. No, you just said a ghost spook to me.  A spook is a ghost. You have nothing to be afraid of because of the ghost is the house. You see, the house is only a rumor. Boy, well, what'd you say? And I really mean, what did you say? I said that the house is only a rumor. I wouldn't care if it was the little one. I love you, dummy. This ghost is a rumor. A rumor is a tale. A vicious tale. That did it. I ain't going to know how sweet as a ghost would a vicious tale. No, no, no, no. Listen, Gastel, I'm trying to explain to you what a ghost is. Now, let's take, for example, a ghost motion picture. Did you see the ghost picture that Irene Dunn did? Dunn did, yeah. What kind of talk is that? You mean Dunn Dunn? No, no, no. Look, Gastel, Irene Dunn did a picture, a ghost picture. Did you see the picture that Irene Dunn did? Look, Abbot, if Irene Dunn did it, I done saw it. You all? Oh, no. Gastel, please. Well, you listen to me, I'm talking about the star Irene Dunn. Now, you know that Dunn does pictures. Dunn doesn't?  I didn't know that Dunn doesn't. I thought that does, doesn't. No, that's everything. Yeah! Look, Gastel, I'm talking about the ghost picture that Irene Dunn did. When I say that Irene Dunn did a picture, I don't mean that Irene Dunn done a picture. I mean that Irene Dunn did a picture, and the picture that Dunn did is what Dunn's done. Oh, when you say that Irene Dunn did a picture, you don't mean that Irene Dunn done a picture, you mean that Irene Dunn did a picture, and the picture that Dunn did is what Dunn's done. Now, you've got it. Now, I've got it. I don't even know what I'm talking about. Ah! Experience is the best teacher. Give him a little more play, Mrs. Newstead. Won't be long now, he's getting tired. Me too, this beach sea fishing is exercise. Mrs. Dorothy Allen Newstead, the holder of the International Women's All Tackle Record for Cobia, had to learn just like everybody else. It took experience to become a champion. As Mrs. Newstead said, Experience is the best teacher in deep sea fishing. Best teacher with cigarette too. After all the different brands I smoke during the war shortage, I really appreciate camels. Yes, experience is the best teacher. Experience during that war shortage taught millions the differences in cigarette quality. People tried one brand after the other on their t-zones. That's tea for taste and tea for throat as they smoked whatever cigarettes they could get. Result? Today, more people smoke camels than ever before. Experience is the best teacher. Try a camel. And while you light up a camel, hear Skinny Annas with Mamzel. A small cafe, Mamzel. Our rendezvous, Mamzel. The violins were warm, sweet.  And as the night ends far, a kiss became a sign. Your lovely eyes seem to sparkle just like wonders. No heart ever yearns the way that man does for you. And yet I know too well someday you say goodbye. Then violins will cry from so long, Mamzel. Your lovely eyes seem to sparkle just like wonders. No heart ever yearns the way that man does for you. And yet I know too well someday you say goodbye. Then violins will cry from so long, Mamzel. Well, Costella, have you been thinking about taking that job in the Haunted House? $5,000 by your mother, a nice present for Mother's Day. Yes, Abbott, I've been thinking of the ghost all day. I even want to see the ghost picture that Irene Dunn did. There's an old guy in that picture that takes beautiful girls into the Haunted House, and they're never seen again. That old man must be a fiend. He may be a fiend, but he ain't no dope. Well, I continue here. Oh, yes, yes, yes. You should have seen what went on in the Haunted House. In the first scene, there's a gunshot and a body. Murder? Murder. In the second scene, there's a gunshot and another body. Murder? Murder. In the third scene is a beautiful blonde sweater girl. Murder? Murder. Well, never mind that. Hey, here's the office of the real estate broker who is offering that reward to the man who will spend the night in the Haunted House. Castellar, you're going to earn that money, and you can send $1,000 to your mother. Yeah, my mother could use that money to help one of our relatives get cured of a nervous breakdown. Who's the relative with the nervous breakdown? After I spend the night in that Haunted House, me.  Well, good morning, gentlemen. What can I do for you? Well, my friend, Castello, wants to spend the night in your Haunted House and earn that $1,000. Oh, yes.  Tell me, Castello, have you ever had any experience with ghosts? Oh, sure. One time I saw a whole flock of ghosts sitting around a campfire. What were they doing? Telling people stories. Oh, good. Well then, Castello, you'll take the job. Not me. I ain't spending the night in the Haunted House. Castello, you're not afraid of ghosts. You're not a spineless jellyfish. You're not a sissy britches. You're not a cringing yellow coward. You want a bet? Mr. Brown, Castello will take the job. Oh, goody, goody, goody. Castello, the job is yours. Here's the address of the Haunted House. And the skinny ant has said to Marilyn Maxwell, here's the key. Well, I'll see you tomorrow morning, I hope. Well, come on, Castello. Let's go across the street to that bookstore and I'll buy you a book on how to handle ghosts. Look out. Look out for that car, Castello. Look out. Well, what do you know? He stopped for us. Must be an Easterner. Castello, it's nice. Right, skinny in this. Skinny, Castello's going to spend the night in the Haunted House. Oh, yeah? Yep.  It was haunted by the ghost of a bottle of bourbon. Oh, you're not skinny. How could a bottle of bourbon, a bottle of bourbon can die? Oh, no. That was the night my father killed it. Abbot, if that skinny ever becomes a ghost, he will need a sheet. An empty teabag would cover him. Don't mind him. Let's go into the bookstore. Ask that lady over there where the ghost books are. I saw her. Pardon me, miss. Could you tell me where we?  Well, well, miss, what are you doing here in the bookstore? Oh, I just roped into bruise among the best suitors. Best suitors? Oh, well, but you know what best suitors are. That's like Faroofer Ombore and how groan was my bully. By any chance, have you read Uncle Toom's Kubin? Yaus. Well, I'd prefer the three little koutans who lost their mutants. Well, I must be totaling along. As we say in Siamese, oh, the sake pull a kattashisa in Kessi to you.  Come on, Tass, fellas. Come on. Let's look for the ghost book. Hey, say, there's Marilyn. Ah, lovely Marilyn Oldsmobile. Marilyn Oldsmobile. You mean Marilyn Maxwell. Abbott, did you ever see a Maxwell with a chassis like that? Right. Hello, Mr. Abbott. Hello, Lewis Darling. Marilyn Darling, every time I see you, my heart goes pitter-pattery, knock, knock, pitter-patter, knock, knock. What's the knack for? My engine always knocks when it's warm enough. Glad, Castella. Marilyn, Castella is going to make $1,000 by spending the night in a haunted house. Oh, Lewis, aren't you afraid? Afraid of what?  That's one thing I don't have to worry about. Abbott's got a date tonight. All right. Come on, Castella. We've got to get that ghost book. Come on. Lewis, do you remember the last time we met in this bookstore, when the clerk wasn't looking? You, you kissed me. Shame on you, Castella, making love to Marilyn in a public bookstore. Where did you kiss her? Between the novels and the natural history. I haven't. I haven't. Lewis, Lewis, would you like for me to come and sit with you tonight in that haunted house? I couldn't let you do that, darling. Suppose a ghost should come up and put his arms around you. Oh, a ghost wouldn't do that. Every ghost has his own ghoul friend. You'd find out. Well, come on, Castella. It's getting dark. We've got to get over to that haunted house. Well, Castella, here's the haunted house. Roto, what a spooky looking joint. Oh, Abbott. What's the matter? Abbott.  You don't bet your shadow. Yeah? Then why ain't it doing what I'm doing? Never mind that. Open the door. Abbott, it's dark in here. I ain't going to stay in this house.  There's nothing to be scared about. Careful, Castella. Don't step on that cat's tail. OK, Abbott. Abbott. Abbott, who said that? I told you not to step on that cat's tail. I don't see any cat. There is no cat. Just the tail. Hello, presents lovely Marilyn Maxwell from Metro Golden Mayor, produces of the Technicolor Picture the Yearly. For camel fans everywhere, Marilyn sings. Beware, you're getting in too deep. Take care. This is a bit too steep. Don't listen to the lill of his lovely laughter, or you will crawl loaded with dynamite. You can never finish a dream. You weren't meant to stop loaded with dynamite. Never finish a dream. You were. Consider your T-zone. That's T for taste and T for throat. Your true proving ground for any cigarette. Would your taste like the rich, full flavor of choice, superbly blended tobaccos? Then try a camel. Would your throat welcome cool, mild smoking? Then try a camel. Yes, see if camels don't suit your T-zone to a T. When free leading independent research organizations asked 113,597 doctors this question, what cigarette do you smoke, doctor? The brand named most was camel. Yes? According to a recent nationwide survey, more doctors smoke camels than any other cigarette. Well, come on, Costello. It's almost 12 o'clock midnight. If you want to get that $1,000, you'd better get inside that haunted house and stay there until morning. Abbott, there must be something awful wrong with that house. Why? It's been vacant two years, not even a veteran has tried to rent it. Hey, Abbott, look. What's the matter? I see two hands in front of me. Now they're coming together. What is it? 12 o'clock. It's 12 o'clock.  Glow some watch time. That must be Pacific ghost time. Hey, Abbott, I'm getting out of here. There's a guy I want to see outside. Oh, me. See you later. I'll come back here, you sissy. Look over there, Abbott. There's a ghost in the corner. I think it's a lady ghost. What makes you think it's a lady ghost? It's wearing a low-cut sheet. I'm getting out of here now.  Only a baby would be afraid of a ghost. Abbott, please pass me the pablum. Hello, boys. I'm a ghost. Wait a minute.  You're wearing a blanket. It gets cold at night in California, kid. Abbott! What's the matter with you, Castel? Look, Abbott. There's one of those spooks coming up the stairs now. Hey, wait a minute. Castel, you're right. But don't worry. I know how to break the spell of the ghost.   Oh, no, you don't. Oh, all right. Then you pull the sheet off, and I'll sneak around in the back. That's better. Wait a minute. That's the same thing. Wait, Castel. Grab the sheet off the ghost. Tell her it's Mrs. Wetwash. Abbott, put the sheet back on. Why, Mr. Abbott, what are you doing in this haunted house with that horrible Halloween pumpkin? Oh, pardon me. It's Costello. I wish you hadn't said that, Mrs. Wetwash. Only today, I was telling that.  Oh, did you notice someone I smiled? No, I passed your house this morning. They were hanging on a clothesline. Quiet, Costello. Mrs. Wetwash, what are you doing in this haunted house masquerading as a ghost? Boys, I'm going to take you into my confidence. I'm going to reveal a secret that nobody else knows. Maybe she's going to tell us her right age. Hey, quiet, Costello. What is it, Mrs. Wetwash? Well, Costello, are you sure you can keep a secret? Certainly. I saw that new picture last night, and I wouldn't even tell anybody why George Appley was late. Oh, and I'll tell you, you see, this house isn't really haunted. It's just me playing the part of a monster-faced ghost. That's the best piece of casting we've had on this show all season.  This is Wetwash. Why do you want this house? Well, because I don't want anyone to buy it. My late husband, Herman Wetwash, once owned this house, and he hid a treasure map somewhere in this room. Now, if you boys will help me find that map, we can dig up the treasure and split it, and we'll each get a third. OK, but remember, Abbott, I want my full third, 20%. Costello, we'll help Mrs. Wetwash. We can each take turns honing the house until the map is found. Costello, you take the first eight-hour shift. Good, I'll wait a minute. Why should I take the first eight-hour shift? All right, and Mr. Abbott, you take the first shift. And Costello, you can come next door to my house, and we'll go into the parlor and neck. Well, you talked me into it. Oh, you're coming with me? No, I'm taking the first shift. Well, I've been sitting here by myself in a dark for hours, but the darkness doesn't frighten me. Being alone doesn't frighten me. All this silence doesn't frighten me. That frightens me. Hey, Abbott! That must be Abbott coming. He must have heard me. Hey, Abbott, I'm in here.  Where did you learn to walk on a ceiling like that? Look at Abbott. He's walking on a ceiling. He's walking on a ceiling. That ain't Abbott! Don't be frightened.  I'm a kind ghost. I never hurt anybody. I can't help but to find my ghost. Oh, you see more, right? Tell me, how did you become a ghost? Well, up until three weeks ago, I was a man just like you, and I had no place to live. I looked and looked and looked for a house, and finally I located this house, and when I found out it was vacant, I dropped dead. That's a sad story. That's really a sad story, but my uncle Mike became a ghost under very similar circumstances. He did? Yes, he spent three years tunneling his way out of San Quentin and came up in the gas chamber. See, that's sad, too. But I wish you'd do me a favor. There's a very ugly woman that keeps running through this house every night, and I'm afraid of her. None of us speech will spook to her. You mean none of you spooks will speak to her? Don't tell me how to do a routine. I used to do jokes with a skeleton. You have to pay her much money. Seven bones a week. Must have been red skeleton. Seven bones a week. But tell me, Mrs. Cortella, who is that woman that comes here every night? Oh, that's Mrs. Whitwars. She's looking for the treasure map. Her late husband hid in this room. Oh, that old thing. Go over there behind the third loose brick in the fireplace. Oh, thanks. I'll get the map and I'll take it to her right away. Third loose brick. Here it is. Here it is. Hey, Abbott. Mrs. Whitwars. I found the map. I found the map. Wait a minute. Here we are. Here we are, Cortella. Oh, look, Miss Rabbit. He's found the map. Oh, God, tell him this is wonderful. I'll call the man and tell him that he can sell the house right away.  Hey, Castello. Are you sure you're reading that map right? We've dug up this whole garden and we've found no treasure. Oh, Castello, let me see that map. Here it is. Read it for yourself. It says take two steps forward, two steps to the right, and three steps back. Let me see that. Here you are. Take two steps forward, two steps to the right, and three steps back. Why, you frail-wasted, what-brained weasel? This is no treasure map. This is a dancing lesson from Arthur Murray. Oh, I'm ruined. What am I going to do now? Can we dance? Oh, get him out of here. President Castello will be back in just a moment for Camel Cigarette. During the war, the makers of Camel Cigarette sent a total of more than 150 million free camels to our fighting men overseas. Now, free camels are sent to servicemen's hospitals instead. This week, the camels go to Veterans Hospital Cheyenne, Wyoming, U.S. Army Valley Forge General Hospital, Phoenixville, Pennsylvania, U.S. Naval Hospital, Chelsea, Massachusetts, U.S. Marine Hospital, Fort Stanton, New Mexico, and Veterans Hospital, Murpiesboro, Tennessee. Camel broadcasts go out to the United States three times a week. Our rebroadcasts are practically every area in the world where our men are still stationed and to our good neighbors in Central and South America. And now, back to Bud Abbott and Luke Castello. Well, Castello, I hope you weren't too frightened when I left you in that haunted house. Oh, no, Abbott, I wasn't afraid. I sat in an easy chair and fell asleep. I dreamt that Hedy Lamar had her arms around me.  What did you do that? I was playing hard to get. Oh, good night, folks. Good night, folks. Good night. Abbot and Castello again next Thursday, Mike. When Abbot and Castello, when Abbot takes Castello to an occupational expert for an adaptability test, now there's a couple of strike last words, occupational adaptability. There'll be lots of fun when the boys tackle them next week, so if you're adaptable for more laughs, just occupational a seat by the radio next Thursday. PA, Pipe Appeal. PA, Prince Albert. Pipes packed with Prince Albert really have PA. Prince Albert has Pipe Appeal two ways, a mellow aroma that appeals to the ladies and a rich, full flavor that will appeal to you. Prince Albert is specially treated to ensure against tongue bite, crimped cut to smoke slow and cool. For Pipe Appeal, be sure to smoke Prince Albert, the tobacco specially made for smoking pleasure. Saturday night is quite a night in radio, you know. The night of Prince Albert's Grand Ole Opry on NBC. If you're not a regular listener already, you will be when you hear Red Fully sing your favorite American folk songs, when you laugh with Minnie Pearl and Rod Brassfield. Remember the time and station, Saturday night on NBC. Be sure to tune in next week for another great Abaddon Costello show brought to you by Camel Cigarettes. And remember, experience is the best teacher. Try a camel.  C-A-M-E-L-S. This is Michael Roy in Hollywood, wishing you all a pleasant good night for Camel. Stay tuned now for the Eddie Cantor show. This is NBC, the National Broadcasting Company.


Hey Electric Academy, it is Chad Flynn here. I am the guy behind the Facebook page and the website. And yesterday I put out a video talking about backstabbing. And it sounds like the consensus is totally divided. Those of you guys who are working on lots of like towers and condos and that sort of thing seem to think that backstabbing's the way to go. I'm talking about backstabbing receptacles and article workers. And then those other people, there's other people out there that say you should be always doing the hooks. I am of the opinion of the hooks. But again, I am an industrial slash commercial electrician. So what do I know when it comes to that sort of thing? But I am definitely more of the opinion of the hook and having a good tight connection on there. Today what I was wondering, cause I talked to a couple of electricians yesterday and they asked me to ask you guys about what we got into a little bit of debate about. When you put, when you pigtail wires under marette, do you guys pre-twist them, then put the marette on? Or you just strip them and then put them under the marette and let the marette do the twisting.  What do you guys think? What are you guys doing out there? I know I've come across when I've done some basement rentals and that sort of thing. I open up a box, I open up the pigtail and sometimes they're pre-twisted.   I hate seeing that. But what I'm saying is sometimes I see the pre-twist, sometimes I don't. I want to see the pre-twist. Do you guys want to see the pre-twist? That's what I'm asking. So if you could do me a favorite, do me a favorite and share this out so we can get more people engaged in this. I'd just love to hear where it's at with that. So just hit that share down below there, where's my camera there, down below there. And if you could like it or give me a smiley face or an angry face or whatever kind of reaction you have to this, I would love to hear it. So again, to pre-twist or not pre-twist, is that our question? Also make sure you check back on yesterday's little rant about the back-stabbing receptacles. I'd love to hear where you guys are at with that. A lot of people are saying that the arching and sparking happens when you try to force the number 12 wire into that hole. It is not made for number 12, it's made for number 14. I say you can get rid of the whole problem just by putting the hook on it and going around that. I have one guy on my YouTube channel, if you want, you can go over and check out the YouTube channel. This video will be on there anyways, who claims that with the back-stabbing that he can hook that wire and get it on there just as quick as a back-stabber. I have a hard time believing that, but we'll see. I asked him if that's true and maybe we'll get a little challenge going. Maybe you can get a little video going of hooking and back-stabbing. All right, guys, have a great day.


Hi, this is Stu Miniman with wikibond.org, here with Silicon Angles live continuous coverage from Dell Storage Forum 2012, here in Boston, Massachusetts. We're on theCUBE. theCUBE's where we find the smartest people we can find in the industry, look to extract the signal from the noise and really talk about the trends, the real customer deployments and the proof points. And joining me for my next segment is Roger Lund. Roger, first time on theCUBE. Second, you've been at your Dell customer. Second time here at this show. So you've been to both Dell Storage Forum. So first of all, welcome to theCUBE. Thank you. Great. Second time on theCUBE. Oh, you've been on theCUBE. Second time on theCUBE. Second time Dell Storage Forum. I apologize. It's been lots of shows and you're one of the regulars I see at a lot of these shows. So while you are a Dell customer, you're also here as part of Dell's influencer program. So they bring in kind of the bloggers, they've got the press, the analysts, the bloggers and Dell does a nice job of kind of mashing them up to allow the people that use social media. So whether it's, you know, the Twitter, the blogging or other ways that they're reaching people that they do a nice job at that. So first of all, welcome back. Thank you. Then I guess it's your second time. And to tell us a little bit, what's your feel of the show been this week compared to like last year in general? Sure.  And you know, it's just, it's good to see them come back a year later with a lot of new news.  Okay. Great. So can you, you're with the Ray Services Group. Can you paint a picture for us as to kind of your role there and what the IT environment looks like? Sure. Yep. Yep. I'll just, you know, Ray Services Group is a parent company for four different companies that do different call center type thing. We do collections. We do a medical billing, courtesy calling, things like that. So I'm a senior systems admin there, right?  Okay. Great. So and obviously, I mean, you're wearing the V mug user group, the V mug leader.  So, but yeah, so I'm V mug leader, co-leader of Minneapolis, Minnesota, V mug leader in St. Cloud, Minnesota. So if you guys are new to the V mug program, go to my V mug.org, check out the local event here, area register. There's definitely a good opportunity to do some networking and figure out, you know, what other users are doing in the industry. Yeah, absolutely.  A lot of that gets back to VMware and to the solutions that they're building. Can you speak, how how big is your chapter of the user group?  So it's just good to talk about that with other users. And that's what the program's all about. And, you know, we just pull vendors in to show off new technology and products that help us do our job better. Yeah, absolutely. Anybody that, you know, hasn't checked them out already, check out the local local VMware user groups. They're a good way to get information, not just about VMware, but their whole ecosystem. Because as we know, VMware, I think last number I heard was somewhere around for every dollar that people spend on VMware software, there's over $20 of ecosystems. So big piece pulling together. We'll be bringing theCUBE again to VMworld. I know Roger's going to be there at the end of August back in San Francisco. So when you talk about your environment, you've really got, you know, multiple companies together, you know, what are some of the challenges that you face from an IT staff to kind of pull all things together?  So VMware is key, you know, to be able to provide, you know, the base, right? The high availability and all the things that come with it, you know, and then, you know, we use Compellent.  So can you take us back? How long have you been involved with virtualization and what have been kind of the adoption steps along the way? Sure. You know, I started playing with VMware when it first released, you know, but I didn't have an active role in the data center, you know, until 12, 13 years ago. So you were early? Yeah, so I was early in, you know, virtualization.  And that was amazing to me, you know, and my mind was already reeling for the possibilities at that point in time. But, you know, soon as I was in a role that was, you know, a decision maker in the technology side influencer, you know, I started implementing it and playing with it. And, you know, it's been a great journey, you know, from the early days of GSX and some of those platforms with, you know, ES6i, the rival of that product. And where we are today with the VCloud products, it's really, you know, quite the experience and, you know, I wouldn't wouldn't say that I'm fluid in every one of those sections anymore. There's just so much content out there. Yeah, absolutely.  And I remember Duncan actually did a blog post last year about, you know, what you know, what was it like when you first saw the motion the first time. And we said it was it was magic. It was just one of those things that every engineer I knew was just an awe over the memory. It was huge.  So you know, one of the challenges with any technology as it's gotten broader adoption and becomes more mature, you know, VMware every year comes out with a new feature. And, you know, it almost you talk about the innovative dilemma, you always kind of move it up into the right adding more features, and it does become too expensive or, you know, too many features than when most people use. So, you know, what's your take on VMware these days?   I mean, without being able to remove that hardware abstraction layer, and we don't have to move those VMs, you know, from one location to the other, it's very challenging.  So Roger, I wonder if I could poke at something you just said there, the single pane of glass.  So, you know, vCenter obviously can kind of manage, you know, my VMware environments, but if I've got physical servers on Windows, I can't do in there. We had Darren Thomas on yesterday and he said, the single pane of glass for my entire environment is really kind of a holy grail. We may never get there. Dell's vision is that API is an automation or what are going to allow, you know, folks like you to do your job. So what's your whole management story look like?  I mean, you know, I've got a variety of aged equipment, you know, from early Dell equipment to the newer Dell equipment.  So I think most of us envision that, you know, we want to see integration and all the way from the management side and all the way to the back end. And, you know, the more we can integrate things together, the easier it is for us to do our job, right? You know, so that's the, like you said, the holy grail work we want to get at some point. Great. So, you know, what's your week like been here? What's what's been kind of the best nugget that you've learned? What surprised you? What excited you here at the show? Right.  That's followed by the compelling announcements.   You know, not that we don't like Microsoft's file servers, but so there's some challenges there that can be alleviated with, you know, having SIFS type, you know, NAS access. Okay. Did you have any ecologic in your environment, or are you solely compelling? Just compelling right now, yes. Okay. And on the file system, so you consider the Exynet, you know, technology in there, is that something you're looking at? Definitely.  One of the other big announcements on the compelling side was the integration into VSTART with the VSTART 1000.  Okay. Great.


This is stock number 10497. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used heavy-duty truck headquarters. Today we are taking a look at this super clean 2018 Chevy Silverado 2500 crew cab short box. This truck has a 6 liter V8 motor and from this HD video you will be able to tell just how clean this truck is all the way around inside and out. This truck has been fully safe and inspected by our service shop has a fresh oil and filter change all the fluids have been checked and topped off and this truck is 100% ready to go. Black clear coat is the color we shoot all of our videos in 1080p 60 frames per second so if you have HD capabilities on your computer tablet or smartphone device turn them on right now because it is like you were right here looking at the truck with me and definitely your best way to check out the vehicle quality and condition wise before seeing it in person. If you want to check out more photos of this truck in the upper right hand part of your screen is a link right to our website click then check us out there. This truck has KMC 20 inch Rockstar rims they are in nice shape firestone destination AT LT 275 65R 20 tires and they have probably about I'd say 80 to 90% of the tread left very good tread on these tires like new. Framing underbodies exceptionally clean this truck I believe came out of Florida so that's why the frame is looking as good as it does has a projector lamp headlamps front bumper I didn't see any dents I didn't see any dings on it is in really nice shape factory fog lights and that lower valance is a nice shape as well you get the chrome trimmed grille the bow tie is in nice condition too and the hood does not have any dents or dings on it passenger side fender is in excellent shape no dents or dings and the passenger side rim is in pretty nice condition as you go down this side of the truck you can see just how clean the body is how reflective and mirror like that paint is we take these HD videos so if you are far away or even if you're close by and just cannot make the trip down you can still see the truck hear the truck and have confidence in the vehicle that you're looking at before you even get here we offer a summit auto fast pass option just for that reason in the upper right hand part of your screen a link right to our website where you can apply for financing get pre-approved see a payment quote even appraise a trade so that if this is the right one for you you can make it yours right on our website so when you get here you're all done and all you got to do is drive the truck and love it frame and underbody exceptionally clean and that's what you're going to get from a southern truck like this back tires have just as much tread as the front tires and this back rim is an excellent shape as well as we come around to the back rear bumpers in great shape no denser dings and that does have the full towing package which includes the receiver hitch four pin and seven pin wiring it has the locking tailgate there's also a shock down easy lift tailgate so that goes down nice and smooth has a very nice spring and bed liner it is a bullet liner and you can see that was put in in winter Springs Florida and a very nice and clean back here didn't see any major dense and it does have a backup camera tail lamps are nice and clear and as you go down this side of the truck just as clean as a passenger side box is an excellent shape and this back rim for full disclosure is in pretty nice condition as well down the rest of this side doors look great has telescopic tow mirrors they go out like so and fold in inside the LT one package gives you the black cloth interior there are no rips or tears on the seats they're in really nice condition got the power driver seat factory all-weather floor mats throat on this truck auto headlamps turned out four-wheel drive factory brake controller power windows power locks and power mirrors you get tilt and telescopic steering wheel and as we hop inside the truck here you can see that this one has 37,929 miles instrument cluster is very nice and clean you get a leather wrap steering wheel bluetooth and information center controls on the right cruise controls on the left and you do get audio controls on the back of the steering wheel six-speed automatic transmission with optional tap shift and this one has the Chevy my link system AM FM and I believe serious XM radio capabilities yep and if we go back to the home here you can see that this one has the projection so you can project your cell phone to it via Apple CarPlay or Android Auto so that if you have navigation on your phone you can project it right to the screen and then it's like you have nav on your phone this is also where your backup camera shows up yeah your radio controls do a climate control down here stability control and then those are your cargo lamps all-weather floor mats on that side passenger side seat is a nice shape as well no rips or tears and you do get side curtain air bags headliner is in great condition you do get map lights up here and on-star capabilities in that rear view mirror we'll take a quick look at the back seats and then we will check out under the hood back seats are just as clean as the front seats no rips no tears back here it does have the latch child safety system for all your child car seat needs has the rear window defroster in the fixed glass window all-weather floor mats back here as well and they keep your carpeting looking great and no rips or tears back here we'll take a quick look under the hood and I would personally like to take this moment to thank you for checking out the video today and hopefully from this HD video you'll have been able to tell just how clean this truck is all the way around inside now under the hood we have the 6 liter VA motor engine today is very clean runs very smooth this truck has been fully safety then inspected by our service shop has a fresh oil and filter change all the fluids have been checked and topped off the truck has been gone through mechanically 100% and is 100% ready to go to see more pictures of this truck or one of our other 450 new and used cars trucks SCVs minivans Wranglers half tons three quarter tons one tons you name what we got it go to our website summitauto.com full pictures and descriptions of every single vehicle from two locations all at summitauto.com if you'd like to check out more HD videos you can go to youtube.com slash summit auto remember to like subscribe and share on this video and all the videos that you see there in fact in a second you'll see a link to subscribe to our YouTube channel on your left a link to more Chevy Silverado videos like this one 2500 videos like this one on your right if you have not been to our website on the bottom link to this vehicle on our website click those checks out and we really look forward to help you with this extremely clean 2018 Chevy Silverado 2500 crew cab short box LT with the V8 motor thanks again


So, with me sort of ending up kind of seven years ago having my life change around after a car accident and sort of having to start into a whole new world and being met with a bunch of adversity, I think when you're sort of dealing with adversity, one of the things that comes out of it is or can come out of it is sort of a clarity and a resolve to start and do some of the projects that you're really passionate about. And so one of the projects for me with that was a project that I'd started with Kevin Ribble and Laurie Yearwood and it's all about, this is sort of the digital magazine side of it, which is all about sort of exploring different forms of contemporary storytelling. And we'd sort of set this up as a BCIT project back in about 2013, I believe. And we kept talking and talking about building an educational portal with it to sort of teach some of the stuff that doesn't sort of fit in with what we teach at BCIT.  And one of the things when you have to start working in a different way, because you've got, well, basically, for somebody, when we're talking about the pandemic at the moment, and everybody's sort of went from this state of self isolation and not being able to be around other people and anxiety and all those sorts of things and being worried about having lost their career. Those are all things that I basically faced through these car accidents and that a lot of the people in some of the disability communities that I'm in face to a huge extent every day of their lives, not just for the year or couple years that they're dealing with the pandemic.  I'm more than capable. It's other people's perceptions, you know, aside. But it's one of the things we did realize was that we needed to start kind of thinking retirement and start planning for the future.  Now, this was where we were at back in February. Because we wanted to have open as a part of this, one of my big hurdles was finding a platform that we can build it on that would be sustainable unto itself. And I had several renditions in years previously of this site. I kept with stubbornly trying to build with WordPress because I to make it sustainable. And so this version right now is I managed to find a plugin for learning management system here. So this is run on learn dash right now. And I've got sort of for anybody who's techie and geeky, I've got the studio studio press theme on here with it. But this I'll play the video because this sort of shares the vision on where we're going. Hello, and welcome story to go. I'm Erica Hartley, one of your hosts here. Story to go is a community that's designed to explore contemporary storytelling in its many different forms through traditional media, in addition to newer forms of media, in the digital arts. This is a concept that Laurie Yearwood, Kevin Rivel and myself first conceived of back in 2013 as a part of some work we're doing through BCIT's broadcast of media communications part type studies program. Here we're going to be joined by a number of our storytelling colleagues from TV to radio, to books, newspaper, magazines, blogs, podcasting, web series, gaming, experiential media and more as we explore storytelling today. We do hope you'll join us. And so the intent was to roll this out as an adult education website, where we just kind of did like dabbled for a few years and then the pandemic hit. And when the pandemic hit and we sort of saw everybody going nuts online. We're like, okay, we got this. This is what we've been trading for since my car accident. And so our initial reaction was, okay, people need to calm down. And so we've been building resources around that for years because of because of what I've been going through, but also because of some stuff Laurie had been going through. And so we started to build out, you know, a sort of different resources for teachers on on adding calming elements into their online education. Actually, these were already there. They weren't starting to build in that stage. We had all these resources that mainly Laurie had been building to to our travel magazine that is we're all on, you know, learning to relax and kind of chill and things like that and deal with what was going on in your current world. And so that was our first response. Our second response was also providing remote work things we've been working remotely for about 10 years. But then the next thing we saw is we're looking around, we're in this artist community. And a lot of our artist friends had lost their work and they weren't sure when it was going to come back. And so we decided to build story to go out in a much larger way than we initially intended. There's the thing that immediately hit us with a need was was kids programs. We actually had a lot of private classes coming in asking us to develop private classes for their kids group. So it actually started with a group of cheerleaders who wanted a storytelling class. This was this was that one right there. And it's changed a bit of our funding model. We always kind of thought the backbone was going to be kind of grab and go style classes with maybe a few private classes with more hands on stuff and live stuff for some of the participants. But we've we've realized for the first little while anyhow, private classes are our funder that sort of helps support things like our open educational courses. Another funder right now is because of some of the stuff I've been building previously, we've got some grants that we're working on that'll help to add more add more open access courses on here, including one that we've got from grant from the web on web monetization. So the web monetization model.  And then building out an open educational course on that. And we're sort of building it's kind of becoming more of a community that we're building here, there's going to be a health and wellness studio. There is going to and Laurie's already started adding some of this content for the health and wellness studio, we're going to have a little culture hub. We work in the travel industry sometimes. So we want to be able to give back to that community that's really suffered over the last little bit. And then we're also going to be providing a teaching hub on there. I believe Danielle's on the call right now she's she's she's busily building one of some of the courses on the back end. And so we've got a whole pile of different reasons while people come to us. I'm finding people my masters are coming to us because they want a home for their open educational resources that's not going to disappear. And that's going to be invested in maintaining those. We've got artists who wants, you know, a different avenue to their career and maybe like a little bit of a nest egg that they're building for later on. We've got some people who just want to be able to teach different things out there. One more meaning. So yeah, um, it this is it's kind of this is where we're starting. We're looking for other people who'd like to play and like to experiment and get involved. I and and build. So I don't know if anybody has any questions on how what I'm still in the well, while it looks decent at the moment, there's still lots I need to kind of manipulate and fix on the back end. We've been kind of going through a series of different evolutions with our discussion boards, and I have still found anything that I really like yet for questions. Thank you, Erica. In in trying in keeping pace with the time and the lineup we have, I'm going to drop the link for all the participants to your OE connect page, and I would encourage participants to continue the conversation there. Drop your questions, any comments for Erica. Thank you very much, Erica, and we will stop the recording here.


Hey everybody, we are back with that netconf. That's right. They fixed my volume. Maybe I know now I'm sitting next to you and it's just like I'm trying to be super quiet But I don't know how to do it. You gotta use that MPR voice man. Hello and welcome to another episode of The meeting sounds of African swallow Are you okay there Jeremy? Sorry, that's what they talk about an MPR, right? Yeah, we have all joking aside. We have our next speaker Jerry Miller talking about Martin and Document TV. How's it going Jeremy? That's going well, man. It's good to talk to you. I know it's been a while. So what's up? Let's let's see your code Let's see your demos We ready to get started ready to get started. All right, somebody's at the end of a long day Go ahead and kick it off man. You ready buddy Is my side deck showing? Yeah, it looks good. We see everything man. Oh, okay All right good. Well, I won't share this I won't share this at all but if we ever see each other and in person I had a Really terrible incident trying to use the European African swallows example from Monty Python in a talk one day But you can't just drop that man leave it there No, because it's a little too profane, okay, okay, okay, so Today we're gonna be talking about a project called Martin Then that's spelled with an E because what it really refers to and here I didn't think to pull a picture of it But everybody we got to see how cute these guys are first. So Martin's actually not named after a person is Named after these cute little boogers. I'm about to show on the screen in just a second Yeah, these guys see how cute that guy is So that that's what Martin's actually named after not not a person So Martin is a client library It's a dot-net distributed as a dot-net Nougat that allows you to treat pro-scrats QL Database as both a document database in an event store inside of a dot-net application Now well next we'll go into why in the world did we think this is a good idea? And why might you be interested in trying to get some of this? It's a little bit of a funky idea Let's get into it So first off at the end of this if you're still not scared away We've got quite a bit of that community around this. We're up to almost 80 80 contributors so far Got a lot of documentation and samples up on our website We always find something that that that's missing, but we've tried the code itself is up on GitHub It's under an MIT license so you can pull it down copy it make fun of it Take whatever you want out of it. And then finally, I'm a huge fan of Gitter for having an embedded chat room for Attached real closely to your GitHub repository and that's the best place to go ask questions about Martin All right, so just a little bit of a history so about the 2014 2015 timeframe at a former at a former employer my colleague Corey Taylor and I were kind of talking and he had the idea that Hey, we used Raven DB very heavily and we love the development experience but we were having some trouble with it in in production scenarios and It was getting the point where we knew we had to replace it one way or another but Raven DB's usage is very different than what you would get from many other persistence frameworks or databases So we kicked around the idea Corey actually had the idea. I'll give him credit. What if we could take Postgres QL? Hey, it's got some pretty cool JSON support What if we could turn that and make it act just like Raven DB and we can swap it in and out So from that conversation and a whole lot of time later Martin itself was born As kind of an add-on that that's actually turned into maybe the most popular feature Martin We also looked at adding event sourcing support In the library with an eye towards replacing very very old versions of an event store in our shop So we got to roll out it finally went 1.0 in September of 2016 It had actually been in production in a very large production app quite a few months before that 2.0 came out last summer With a lot of improvements in the internals a lot of work to reduce memory Allocations and generally make everything as efficient as we can possibly make it there is a 3.0 That's in progress, but it's not progressing super fast and I'm not going to demo any new features here today But it's coming So I want to talk about some of the very different ways you can do application persistence To kind of look at where Martin might fit in So most of my career we've used just old-fashioned relational databases Maybe we put other stuff on top of it. Maybe we put on or m's Maybe we put other tools like this Martin thing, but tables rows Foreign keys primary keys views stored procedures got help us the kind of stuff. We've always had now Some of those tools. I don't necessarily like it for a lot of transactional applications but sequels awfully hard to beat for reporting and there's a Whole lot of investment that we probably all have reporting tools and learning sequel and All the third-party stuff that already supports database blinding. So there's plenty of good reasons to keep relational databases around What we'll mostly be talking about in this talk is using a document database huge advantages for developer productivity in my opinion Other cases you might use event sourcing Where I don't store the exact state of the current system my system of record I may be storing events as they happen. It's like an invoicing system an invoice was created and then voice was approved So on and so forth and from that raw event data that may be valuable in itself Off to the side. We calculated and create a read side current state of the world Addressing the relational models various kinds of ORMs. Maybe we use entity framework. Maybe we use something lighter like dapper Now a cool thing about Martin here is That it allows you to mix and match Any of these tools Martin itself supports the document database and event sourcing But at the same time because it's sitting on top of relational database You can happily use anything that Postgres offers. You could happily use an ORM With it and we have specific integration with dapper Not not that that really means much. We just expose the connections. You can use a dapper with it to your heart's content So you're not stuck with just Martin. You're able to choose whatever Persistence pattern makes sense for a particular feature within the same application And that may be very advantageous to be able to switch like that even inside of one single system Okay So if you're not familiar with any kind of no sequel system or specifically a document database Why you would care about it? What it does for you? If you think about using an ORM today, that's probably the most common pattern You're spending a little bit and maybe a lot of time doing mapping Where does an object model property land in a database field? Hopefully the database and the object model looks like a lot of times They really shouldn't and it makes it a little harder for you to try to do those mappings Maybe you have object hierarchies that don't fit the database. Well, maybe you have deep complex objects Where you have to start to span a lot of different tables to make it work in a relational model Document database is really nice, especially when you get into hierarchical models You're not mapping the structure what we're doing and especially with Martin. You're just Serilizing your objects to JSON and stuffing it into a single column in the database All right, your schema is your objects So some of the great things that does for you that the advantages that gives us as developers It's a whole lot less mechanical work to make things happen Not spending any time with JSON I'm not creating two completely separate models a storage model and a model for my business logic I just worry about what the document structures like in C sharp Make sure that the inevitable ubiquitous newtonsoft.json can serialize it and I'm good to go This is absolutely perfect inside of an agile development process As much as possible to make agile go it needs to be really easy to make design changes You pay a penalty anytime. There's extra cost for changing code so Taking the example of adding a field and going all the way from adding it to your object Adding a field to the database table adding a database migration so on and so forth a Document database at development time as we'll see with Martin you wouldn't have to do a thing Add a new property to your document and you are often running. There's no extra work to touch your database We get much less friction for making additional changes to to our objects It allows us to play with design ideas because we can adapt to the database very quickly There are some database migrations. We are still running in postgres sequel We do still have to manage the database schema But it's just that the database scheme is going to change much much less often This last bullet point. This is actually a big deal. So The trend I've seen the last several years Software development in the way we approach automated testing it shifted much more towards trying To incorporate much more integration testing at least intermediate level testing and it means going all the way through the database as opposed to Trying so so so hard to isolate things and making code more complex just to be able to get unit tests without the database So if you take that idea that integration testing is a good thing We always have to make sure that we have a either a clean or a known state in our database before we test through it The document database actually makes us a lot easier Especially it's something like Martin or what we did previously with Raven You can effectively do a complete wipe of the database with a single command in Martin Before any kind of automated tests makes it very easy to effectively provision a brand new database schema per test Right if you've done any work with relational databases inside of automated tests that can be a lot more complicated Relational integrity making sure you delete things tables in the right way. It's just a lot of extra work. That's potentially pretty slow right, so why postgres SQL and Let me get this one out of the way fast because every time I've given this talk somebody asks the logical question is Why did you not use SQL server? This is a dot-net tool most dot-net chops want to use SQL server. They're more familiar with it and We'll be honest. We know that Martin would probably be have much more adoption if we've been able to use SQL server. So our belief is That Martin is using a lot of features that are very specific to postgres SQL around its JSON support It's embedded JavaScript support a lot of JSON operators that are unique to Postgres QL itself We think long term That not the current version of SQL server but the next version of postgres version 11 and Hopefully whatever the next version of SQL server that SQL server will reach enough parity and Both of them will support a SQL slash JSON spec that kind of standardizes how you address a JSON Data inside the database with JSON path But that would make it a lot more possible a lot easier for us to finally make Martin database agnostic but For right now postgres pretty awesome. It's super easy to install. It's really lightweight All the examples we're going to show today are actually running in Docker Because it's super lightweight. It's really easy to bring down a post a Docker image and get going It's been around a long time. It's over 20 years old It has a very active community and they're innovating very hard and very fast But specifically for Martin it has a lot of really unusual JSON features The the JSON itself is stored in a special column type called JSON B That is a binary representation of the JSON document which enables postgres to Reach in to the JSON Documents much more easily and much more efficient and part of My original our original goals building building Martin was we also needed to get on to something With that kind of usability we need to have grown-up DevOps tools We have good monitoring tools backup tools, you know All those kinds of things you have to have in a grown-up shop and by being right on top of postgres ql We get to have everything the postgres ecosystem has All right, so We catch my breath for a second and we're gonna actually look at code finally so getting started with Martin now Let's assume we're building some kind of order management system and a really simple one at that so Let's say we have a very simple C sharp class like this order class. It's on the screen Order class itself may have one or many many order details and you see that I'm using a custom enumeration for the priority As quickly as possible we want to get this spun up where we can persist and load these these little order classes with Martin So first thing I want to do need to create a document store for Martin and in this case We're not customizing anything. We're not Configuring anything we can go with all the default default options So the only thing I need to do is just say I want a document store for this connection string And right now this is pointing to an instance of postgres They we check this You'll see over in the right.  So I said very much earlier We have just a little handy helper that will allow you to quickly clean off your database schema and start over And that's what I did did here with the code that's highlighted Looking in the right of of our IDE now, there's no tables at all in our public schema Just out of curiosity for anybody who's wondering if you've never seen this before I'm using JetBrains writer for all the demos today Just giving JetBrains a big shout out they have been very generous they give I have an OSS license from them and Martin's pretty well supported and built now at least from my side with JetBrains writer So we have no database, but we have an order class. We'd really like to get it persisted So we have a store So that represents that is going to be a singleton object within your system I don't there's not a direct analog inside of any framework, but if you're familiar with in hibernate, that's I'd say that's roughly analogous to the iSession factory from in hibernate so but to get to Martin's version of a DB context we need to get at an iDocuments session That's what's happening in this method right here. So the document session represents a unit of work To Martin so it allows you to establish transactional boundaries And it exposes everything you would possibly need to query a Martin data store in this particular case, we're going to create an order object and We'll notice here. I'll come back to this at no point do we actually Set a value for the id here as you can probably guess the id property That's going to end up being the primary key in the database But getting back to it so we're going to create a session. We're going to tell the session that hey, I want to store this order document Save changes here. This is committing any of the Q depth changes to the database whether it's Updates inserts the store here is a generic absurd meaning that it updates the document if it exists or it creates a brand new one And there's several other kind of operations But it flushes all the changes in as much as possible in one command to the database Below that we'll go fetch a completely separate session Just to make sure we're not getting any kind of cash copy from this one And we'll try to load the order back from the id that's been magically assigned and just prove that it's all there So I'm going to run the test here Okay We succeeded down here so a couple things Martin just just by convention if it sees a property called id it assumes that's that's the identity for your object There's some ways to override that but Going with all the defaults are just working with it any medically the way it wants to it knows that id is is our primary key And because it's a grid if You try to store it with an empty grid with it'll just quietly Make a new grid for you and assign it to the document itself before it persists it For those of you are a little more Who are a little more familiar with it? It is a sequential grid so that it Saves and loads quite a bit more efficiently to the database And right off the bat we've been able to load that that order by its ID We've done no mapping we've done no configuration Just to prove that stuff actually exists. Let's take a peek in the database So on the fly we created an order object or an order table that stores it There's not a lot of stuff going on most of your document tables are going to look exactly like It's going to have an id column of some kind It's going to have a data column that actually has the raw data and a little bit of metadata The kind of things you would expect last modified other stuff like that. Let's take a peek Just a second Just to show you what the data looks like and the joys of coding live now. So There's a JSON body So not super exciting, but that's a good thing. We didn't have to have any drama We didn't have to do a lot of configuration. We added the Martin Martin Nugget reference and We created a document store for the connection string because I'm using all the defaults is running in a development mode Meaning that it will create any necessary Tables it needs to on the fly if they don't already exist in the in the database So this is our getting started story trying to make it as easy as possible for new people to pop up and start doing things Show off the advantage of where a document database excels Let's change our order object and See what we have to do so now Let's say the order has some kind of address Maybe it's a billing address. Who knows what it is So have just another little type here And you'll notice there is no ID on this We don't have to the address when it's persisted as a property of The order it's gonna be persisted directly in the order. I don't have to create other tables I don't have to think about anything else To come back into this test Let's go ahead and add I'm not gonna fill out the whole test, but Just have a little bit data. So hello from Austin and Now let's persist the whole shebang Let's run one quick thing here Just to show what the JavaScript is gonna look like. All right, so we're gonna do the same thing We're to save the address we're gonna save the order except now it has an address property We're gonna load the thing back up and I'm gonna try to spit the JSON out into Into the test output if you look at the bottom right of the screen Okay, we've already come back and look there's our new billing address Again, no mappings. We had to do no mappings. It just worked So let's move on to some of the cooler things with Martin so Most of you if you have no background with no sequel or only a little background with no sequel You're kind of wondering why am I making a big deal here in this slide that? Martin and really just postgres underneath it is completely acid compliant. This is something you've always had in a relational databases This is something you always expect to have you can't believe people try to do without this but a lot of the no sequel databases and probably especially the early no sequel databases and Did not have we're not acid compliance most of them had some kind of some kind of eventual consistency where rights Happened immediately, but you were not it necessarily able to immediately read or query over this the state There'd be a little bit of gap when the reads were not in sync with the state of the database This was a huge deal for us as we moved from My previous shop we moved from Raven DB to Martin. It was something we knew we wanted So just to prove this We find the next database sample now what we're gonna do is have a Dave I have a fat object. We used to test Martin Just called target this has a lot of fake values to have every type we can possibly think of we have glids with longs doubles dates We have children grandchildren just trying to be big we're gonna We're gonna throw a thousand of these into the database as fast as we can So we got here and then as fast as we can we're gonna come back and we're gonna query That we can pick out how many of these are green? I'll just to prove that we can immediately query against the data. We just inserted just run these real quick And we look here super fast here. We get an all-new All-new set database session. So if you look at the bottom left spinning ball, we got the green check mark. It just works So there's nothing you have to do here. This is actually pretty rare for a no-SQL approach This ability to immediately query against the data that was just inserted without any kind of Eventual consistency catching up on the read state. That's a huge deal We get all the goodness of a document database and no sequel kind of approach But we didn't have to lose out on asset compliance that we get from good old-fashioned relational databases Getting into some other ideas. Maybe where where a document database shines over The the ORM approaches you may be used to today if you think about having some kind of object hierarchy And in the case we're going to get into for this example Me To where I want to be So we have our order the way that we've had This isn't a very fancy fancy Example we have an order, but maybe we have specific kinds of orders domestic order International order and maybe they actually have some different properties different properties different values different behavior when you pull them down when we Work against the persistence Sometimes we want to see all the orders together. I want to see all the domestic and heart all the domestic and international orders for a certain part And I want to treat it as just an order, but other times I want to load a specific type of part I want to order order load an international order or domestic order I want to use link queries against either the subtype or the parent type Okay, this is something Martin supports out of the box Not nearly as much effort that you have with an object with an ORM I don't have to think about do I have a separate table per type Do I try to put them all in the same type? Do I have like extension properties in the very sparse table? How do I map that forget all that stuff Martin's going to take care of most of it for us? One thing we do have to do though is we just have to tell Martin For the order class. I want you to also include the Pacific subclasses for domestic order and international order Now coming down into usage It's just showing here I can create a domestic order and put all the properties in I want I can create an international order and We just added Something on the fly Because I think we were making fun of Hottie from JetBrains earlier today on Twitter for something. Let's say it's going to Spain and I can store one I can store two save them both And I come back and I can load them as an order or I can load them specifically as the subclass I Can query any possibly mix match here? Looking at the bottom left just to make sure the test passes and there it does Just a cutesy little thing This last one here So I want to query a domestic order where the customer ID is somebody and All I'm doing is Martin has a little little helper that will allow you to preview what the sequel command is for a link query So I'm using that just to grab the sequel to be generated bottom right just see We're looking over this ugly table name and I am limiting the query to Well, this is Martin ease for I only want domestic orders. That's part of the sequel the sequel where clause all right So That's the basics saving and loading documents Just to json if this is all there was to it You can probably code this up by yourself honestly pretty fast except for the link query part It's bust everybody's bubble the link query part is Super work-intensive really monotonous And if you like the link provider and whatever database tool you use Give some positive thoughts and thank yous to ever wrote that because it's miserably time-consuming But so some of the things we've done to try to make Martin fast on top of that We have computed indexes It's perfectly possible and we were we were tipped off to this by some postgres gurus We can define computed indexes inside of our json document I'll show an example of that in just a second. Oh Now let's look at it now So that's actually what we're doing here in that example where We wanted to throw a whole bunch of records in really really fast and then query against them So the code that's highlighted there, that's actually just telling Martin Hey, I want I want an index against the color property of target If you're familiar with the f core and the way it does mappings or something like auto mapper You're used to using these kind of expressions to as a strong typed way of saying this property this type So on and so forth, and that's what we're doing here There's a little more power here to say do I want this to be unique do I want it to be? Use all the the special features and types of Indexes in postgres, but it's probably what you want to do So when I'm issuing a query now down below where I want to say I want to look for where the killer property is Green postgres is able to apply that index Just like you would with relational database when you set a query on a column that you frequently search over All the same problems as database indexes that always exist You always have to wonder is this this creating more overhead on inserts than it gives us in value on speeding up reads Same same rules apply The bigger one in the speeds some of the other things we do Out of the box our default JSON serializer is new soft json It's it's the obvious choice as the default because it's the most battle-tested. It works for everything Some weird things still leak through especially especially some oddball things like like F sharp types or We've had a couple people wanting to query against nota time Objects that kind of give us some trouble with the json serialization, but it's rock solid, but if you want to We've been able to swap out and use Jill as a faster serializer or some of the newer JSON serializer alternatives, so you can opt into Maybe and get some better performance by going to a different json serializer and still use it with everything that Martin does I Actually had a had a little bit of conversation with with a trainer in in Houston that I Or I had sat in on his VB six classes 20 years ago, and he had this phrase that stuck with me ever since network round trips are evil fastest way to make your your Enterprise system really really slow is to be really chatty making a lot of its second of calls to the database a little bit of information When developing Martin, we were trying to be very cognizant of that We've tried to minimize the number of batch query or the number of round trips the database is possible When you're committing it's a database the document session It's trying to send the commands all in one one network round trip same thing with queries I don't have an example sample in this talk, but you can Set up multiple queries Like if you need to get at one document type and another and grab them all at one time So try to minimize the number of wrecked round trips. Excuse me The feature that I'm most proud of We call it piled queries and it's faster just to show an example on this one so Take a look at this find by color class that I have highlighted here So that same query we've been doing where I would just find all the targets where its color is green And that's what we've we're expressing here by this find by color class, and it looks a little funky You're definitely gonna be depended upon resharper or code rush or something like that to Generate the signatures for you from this this interface But let me try to explain why this thing is so cool. Let's take a look at how it's used So instead of using a blank query directly I'm gonna use the sessions query Query there's an overload that will allow you to pass in one of these compiled queries So I'll create that object pass it in here and it basically does the same thing as if this is the equivalent of And it's just writing out So this is actually the equivalent of that so Why this is so awesome even though it looks really funky The mechanics of of doing queries by link are Super-duper inefficient. Just just thinking about all the things that happen when you issue a link query You're creating a whole bunch of little objects It may not feel like it but you're creating a lot of objects in that little expression where you you do the where clause So when you pass the link query in your link provider has to take all these little objects and This is probably more fun if you could see all the goofy hand motions I'm doing but it's got to walk down this tree and this really excruciatingly low detail Low-level detailed model of what are all the expressions there's an end here and or here what property is It's got a parcel through all that stuff figure out what's going on interpret all that object model then Do a bunch of strength and cat nation come up with a sequel command and then figure out how all the data Combine ends up going to an object model and so on and so forth It's a lot of mechanical work to interpret a link expression and do something useful the compiled query feature in Martin it allows Martin to remember the query plan for a link statement so that the first time in The application when I use this find by query model it's effectively parsing and in interpreting the link expression one time and then it's remembering the sequel statement and how to map from the Parameters on our compiled query into what the raw database Database command is and then also it remembers how to go from the results of the query to returning the object models that you want We found in our testing. It's Consistently seen better than an order of magnitude improvement in querying speed if you use a compiled query versus just using raw raw link So we're really proud of it, and that's why it's been so much time talking about it Just talking about some other things that are in there If this is pretty common feature the includes just the idea of if I have one document And it's related to another document type I can actually force Martin to go fetch them in the same network round trip again network round trips are evil We can opt into postgres support for bulk inserts so you can if you get into a case where you need to Jam in a whole lot of documents all at once for some reason You have this bulk insert command that will opt into postgres is more performant mechanism for doing bulk imports of data And finally and especially if you come from the MongoDB world We have the ability in the basically we call the patching API where instead of trying to download the whole document putting it into a Dot net object changing it and sending it back You could just say I want to change the property within the document in the database to this value Actually takes a lot of advantage of JavaScript functionality a JavaScript function running inside of postgres to make that happen Getting close to the end Just some other special features and this will be this will be much better supported into Martin 3.0 whatever that happens so The documents are stored in JSON in the database In some cases Newton soft might have to put some some ugly dot net Serialization stuff in there for type information, but most of the time that JSON is pretty clean it may be perfectly possible to just take the raw JSON and Go grab it because Martin will let's just get the JSON string and immediately toss it down an HP response for Really efficient HP web services You know some of you are saying oh, but you know you're never supposed to put your your object model across the wire Which is true and awfully a lot of the time so along those lines so rather than Pulling in your object and using something like AutoMapper to translate it to a totally different view model and serialize it down your HP response What you can do instead is use a JavaScript function that takes the raw JSON of your model and Changes it into the representation that you want to go out of The response in your own web web service and you can let to let postgres run the JavaScript in the database So you never really create any any objects or do any kind of serialization in your your web API This for for Martin 3.0, we want to go a little bit farther today You have to to create a JSON string to pull this off Which it's still some object allocations In Martin 3.0, we're looking at a model where you could just stream basically just stream the the bytes the raw bytes from The Postgres world directly into the HP response without even having to allocate a string Looking for just the absolute fastest possible way to have Web services that just deliver data out of the database But that is yet to come So the last feature and it is a big one last feature I want to talk about is just shifting over a little bit and looking at how Martin can be used as Used for event sourcing with its full-blown projection support So like like Let me back up so Hopefully when you look at Martin's event sourcing it looks pretty familiar and one of the reasons it should But be pretty familiar if you've used any other event sourcing tool in the net world is we all pretty well started by reading Greg Young's seminal paper on event sourcing and kind of going from there So in the case of Martin just just like like get event store or in event store or several other tools We have really two concepts We have events and streams and all a stream means is some kind of related group of events It's moving into the example I have today Grew up in that kind of in the middle of nowhere Wasn't a ton of kids to well there really wasn't any kids around to play with so kind of naturally became very bookish and Read way too many epic fantasy novels whether it's Lord of the Rings Wheel of Time Game of Thrones hundreds of others But so let's model that well, let's say we're we're building a system to track the progress and of a Party carrying out some kind of quest in an epic novel. So maybe it's Frodo and Samwise Heading off with all their companions going to throw the ring in the volcano or I'm actually going to use the wheel of time as our heroes leave their little village and go out in the big big world But so the kind of things that happen to a quest party as they go out in the world We have events where members show up and join join the join the party. Maybe at other times Sam and Frodo take the boat and go off on their own and everybody else leaves people leave the party They get to certain destinations Maybe they slay monsters whatever it's going to be so it's been sourcing We don't have a master document of what's the state of the quest party. We're tracking all these events members joined arrived at a location When did the quest start? When is it done? Who left? I don't know what that's there for in real life The canonical example, I think I see more in anything is invoicing orders an invoice Somebody filled out an invoice then maybe you added an item Finally, it's approved the invoice was paid tracking those kinds of events so in our case Let's start out. We're gonna create a new quest and We're gonna record just a couple events at a time. It started on Maybe we'd record what day it is, but we're gonna say The name of our quest started We're gonna add some members so these guys started out and On day one and then also at day five this guy Tom he ran off So I'm gonna create the same kind of session from the store document store document session because all this is exposed there Everything is off property called events Show some of the things it does That was more complicated than I was expecting it to be okay. Never mind. That was scary One of the things I can do is I can say all right. I'm gonna start a brand new stream of events and I'm gonna specify what the stream ID is right here. I Can let Martin do this, but we're gonna specifically say it's his particular quit And then I'm just gonna tag on these events to it save my changes events Part of the same unit of work you can mix and match Persisting events or appending events to a stream with saving documents and that comes into play in a minute when we talk about projections Coming down the line. Let's say we have we pick up a couple new team members on Say day seven we pick up these extra characters and we can append them to the to the same stream of events So we could be tracking multiple quests. We could be tracking the Lord of the Rings. We'd be tracking the Wheel of Time About Gary at whatever whatever epic fantasy book you love loved as a kid But keeping straight what party is doing what at what time so that that's tracking the raw data and I think Most people to get hung up on event sourcing or at least my initial reaction is well persisting the events That sounds pretty easy, you know, especially in our case we have one table and we're persisting an ID maybe a timestamp maybe maybe an order and Json XML some kind of serialization of the events. That's great How do we work with that data? Because sooner or later we need to see what is the current state of the system? Some kind of what the CQRS folks will talk about as the breed side model of the view so event sourcing Maybe directly connected to your event sourcing tool. Maybe it's an add-on. You have an idea of projected views taking the raw event event data and Putting them together and trying to come up with what is the state of the system? Let me just Look at another guy called quest party. So real simplistically Let's say that what we care about is the name of a quest It's stream identity and just tracking Who's part of who's part of our quest party right now? You know, if I ask you right now, who's in the party? And that's just the state here, but we derive this By looking at the raw data like events like members join members departed quest started all this kind of thing So at some point we want to calculate from the events we want to calculate and build up the state of this thing and The code you see highlighted It's not the only way to do this in Martin, but for very simple Aggregate projections one way to do this is just have an apply method for every event That would have every event type that would apply to what you're trying to project out Now timing wise it's something. I think it's a little bit unique to Martin Martin's event sourcing But I think everybody should get around to supporting it These projections can be defined at with roughly with three different time frames. I Can either do it live which means If I get into a case where I have lots and lots of event rights But I very very rarely do I ever try to Read what the exact state of the world is I might decide the best thing to do is I'm just going to do the Irrigation completely on the fly when I ask for it and only then in there. Well, I Try to see what the state is So the example right here, that's what we're showing. I want to reach in at this time so started the started that ID that's actually defining what my quest ID is let me You make that a little more clear Let me call it quest ID. So if I know what my stream identity is my quest party ID Just ask it on the fly go load up all the events run it through the aggregation and tell me what you get out the That's what we're going to see up here. So We should see our members should be brand Matt Paran Tom left so you should be subtracted Lorraine and lamb We run the test as always We're gonna look at the results. We should see some Jason on in the bottom right Please Okay, and there are members And there's also the name of the quest So that's a little doing it live So again, the recommendation there is maybe you do that when you have lots of rights So you want to optimize how fast can you write the data into the system? so you don't want to be calculating anything you just want to capture it as fast as you can and Just occasionally read the state and it's not that big a deal to wait a little bit to create the reed side Other thing that's maybe a little bit unique to Martin What we can now say is let's say the quest party. I Want that updated as you capture the events? That's what we call an inline projection So with quest party Now I'm going to do just a little bit of extra configuration with Martin I'm going to say I want the quest party to be aggregated in Just meaning that when we capture any events that are related to quest party I Want that quest party Rejection value updated as part of the same unit of work. What means what that means is the When I try to commit my unit of work It is going to apply the new events to the event vent table Plus the newly updated reed side document that is all going to go inside of one database transaction So at no point you have any inconsistency between the raw and read side view Let's just see if the test for this It's not super exciting because it's doing the same thing. It's just a little bit different different timing Okay, so some of the purists in the audience are probably going to get a little bit freaked out about this Some people believe this is a really bad idea but what we found with Martin users if you have an aggregate that Where you feel like there is very little chance of there being Multiple sessions hitting the same aggregated stream at the same time You may prefer to go about it this way And just update your projected values per stream completely in line So you never have to worry about any kind of individual consistency problems But that gets us right to the third Third approach and this is probably the most common way that people do projections and event sourcing is You have some kind of background process that's reading through All the events coming through and it's trying to keep up and updating the projections as it can So you commit to commit you commit the events. It's persistent in the database The background process is listening for all the events coming in and a little bit later Got an eventual consistency thing going on. So this isn't purely this is the only place where Martin isn't purely acid It's going to get around updating the read side model for you so With the price of the eventual consistency and the potential for making mistakes by showing data before something's processed if You have if you're concerned that you're doing a lot of aggregation across streams or aggregation where It's very likely you're going to get session contention on the projected values, which is pretty easy to do Let's say that in our quest party system We want to have a completely separate view of how many monsters have been slain at any one time So in that case every event across every possible stream that involves Slaying a monster would have to fetch that that one system-wide aggregate document Change it and commit it so you would have a tremendous amount of collisions What we can do is we can switch to an asynchronous model for our projections for just that kind of view Make sure I have an example of that. So we have a feature in in Martin. We call the async demon That is a little bit of Linux Linux and beyond my part calling it a demon Where I can set up Make sure we do this So I can throw a bunch of events in but I can create this long-running demon. Let's just sit in memory I'm heavily utilizing TPL data flow to be to be consistent There's a lot more complexity in here than it sounds but it's Constantly pulling the database to see if there are new events that it cares about that are referenced in some kind of projection They're part of the async demon and it's trying to make sure that it hangs around and applies everything in the exact same order So it's sitting running in the background trying to update these aggregated documents Performance-wise it might give you a big boost if you're frequently updating the same same aggregate document Just by the normal unit of work mechanics it's able to hold on to the projected data views and memory and Updated memories as it's it's updating things, but this is the only possible way you can really go about Doing a projection when you have a lot of contention I should say Didn't get into this enough but the projected documents So the reason why I think it actually made sense to add an event sourcing feature right on to Martin the projected readside documents They're just Martin documents So you can query them you can load them by ID you can query them with any part of the link provider You can do anything you want We think that the easy integration management system readside projected documents with the raw event data Capture it is a huge feature and a win for Martin versus other solutions where you may have to piece together You know a raw event store which may be saving its data to completely different data store Versus some kind of unrelated projection tool Putting your readside in some completely other way Not everybody's gonna agree with that but Many of our users on on Martin that enjoy the event sourcing support That's one of the big features and the key wins for Martin for them with that not exactly sure of the timing because we got uh Started maybe a minute late Where we're right here. That's yeah, we're right on time. Jeremy just you know, I figured we started late It sort of it got pushed around so you know, it's it's all good from here Uh, thank you, uh, Jeremy for taking the time to talk to us and dot net conf There's some questions out on the twitch channel To keep on on par with the schedule. We're gonna uh, I ask you if you can jump over there We can answer those questions you and I can kind of tag team them We have our speakers here and we're going to get ready to roll So, uh, we're going to jump into a quick commercial and we'll be ready with more dot net conf Against Jeremy. Thank you so much


Hello again everybody and welcome to DPDTV. I'm Sargent Warnocky this week a very tough assignment The bosses sent me out into the community to find one of you to shoot a straight Let us know how we're doing and have those difficult discussions So in order to talk on this you have to push the button there and then these are the handcuffs Krispy Kreme has the best donuts for sure And what's your favorite kind? Sprinkle. What do you think about what we're doing with social media? Do you think of the police as fun normally? Have you seen me on TV? Look at these big clunkers Which would you rather stand around in all day those shoes or these boots? These yeah, I would I would almost prefer those two I think Do you run fast? Questions comments concerns Can I have some tea? Well, thank you