Hey, what's up 8% nation? Hey, I'm Michael the playmaker of it number 88, and I'm out here at NFL Combine, you know in the Bible aprons 8th stands for the number of new beginning These young men are trying to start their new beginning and become one of the very best in the NFL Just like you guys are the top 8% I will be your keynote speaker in Dallas, Texas, July 27th for the 8% nation insurance wealth conference I'm looking forward to seeing you there for one playmaker to another Let's have a good time. I look forward to seeing you soon


As part of Obangami Express 2016, German Navy sailors continued training Ghanian visit board search and seizure teams. The groups rehearsed aboard a moored vessel at Naval Base Secundi in preparation for at-sea training exercises later in the week.


Oh, hello. I am Brian Sambodin, originally from Panama, then Columbus, Ohio, then Scottsdale, Arizona. So, yeah, I've been going from tropical to winter to the desert. And today I'm going to be talking about Mac Ruby. And why I think Mac Ruby in the Mac platform, it's the perfect combination for the beautiful language that we all love, Ruby. So, in the past, I built a lot of Windows applications. I built them with Visual Basic, with Delphi, with PowerBuilder. Every tool that was under the sun during the client server era, I've used. Some with some success, some others, not so much. And Windows applications, as you can see, I have a Brazilian favela as a background in here. Because it doesn't matter. It doesn't matter how beautiful your Windows app is, you're in a bad neighborhood. There's an inherent lack of desire for the platform to look and feel correct. Many of you have probably flocked to the Mac because of that. I don't see anybody with laptops, but there's one. So, here's one data point. I've also built a lot of Java applications. Actually, most of my adult career has been on the Java platform. And, you know, I have to be grateful to the Java platform for everything that it did for me, but now I can bash it because I found things that are much better. So, Java platform, Windows desktop applications, like, you know, Swing or AWT-based, are well-known to be pretty slow. Clunky. They're also pretty ugly. I didn't build that one, by the way. I'm letting it pass by because I don't want it to ugly-fy my slides. So, we, as Rubyists, want to have beautiful desktop applications. Desktop applications that bring the best that the underlying operating system in the hardware platform can provide. We all see applications like iTunes. For example, in the Windows world, Excel and Word seem to be the flagship applications that everybody tried to imitate.  Not to say that they're actually usable. They're not. So, something like iTunes seems to be the end goal for anybody building a modern desktop application that mixes the abilities of the web and the abilities of the platform. If you try to build something like iTunes on a browser, we know what the results are. It's typically an application that has a very heavy JavaScript site to it. And they seem not to last very long out there. So, web applications would like them to be beautiful but simple. Desktop applications that we're going to have, you know, want to look like the cockpit of an F16, where we're doing, for example, things like software development, but we want them to be reliable, robust, and also beautiful. So, Apple has basically this dogma that designed it's basically job number one. And I kind of stole that from Ford.  But at Apple, that design vision cascades down to the community. So, Mac developers, Coco developers, they like to build beautiful applications. And it's actually hard to find ugly Mac applications. Mostly are experiments that will never see the light of day. So, Apple is really good at mixing form, function and gluing all that together with beauty, which is where I want to go. Now, that's not beautiful. Under the covers, there's something sinister and dark.  That child, it's objective C. Now, in college, I had the choice between going with C and C++ or Pascal. And actually I went with Pascal because I could read it. I didn't have all the symbolic gibberish that you find in C-based languages. And given Ruby, it's a C-based language, but they actually did away with most of the ugly things and ended up with a syntax that it's pretty easy to read in a language that's very enjoyable to develop with. So, it doesn't mean that just because this came from C, that it has to feel and look ugly. But objective C does feel and look ugly to me. Actually, I used to write a lot of code in Lisp and Scheme. And I find that enjoyable. But when I look at objective C, I see this half-baked blend of the two worlds that just really confuses people. The message passing, it just doesn't feel very natural. It feels like a bolted-on syntax on top of C. So, as Ruby is, we would like to use Ruby to build beautiful Mac applications. Here's an example of what you find on the web about people that actually like to bash objective C. And it is a very powerful platform, very powerful language, but it has a pretty heavy RAM hub curve to actually get to learn it. And the main problem that I have with it, besides the ugliness, it's the verbosity. This is an example of how to generate a signature with PHP, an MD5 signature, and how to generate it with objective C. And you can see that the verbosity of the code, you know, it prevents you from really understanding what's going on. So, the veridict, it's that objective C, it's way too verbose to do anything in a rapid prototyping environment, anything where you want to see results, anything where you want to do, for example, something TDD. And with Ruby, now we can bring the frameworks of Ruby to do TDD in a cocoa environment. So, Mac Ruby. Mac Ruby, it's just another Ruby that happens to run on the objective C runtime. In the goal for Apple, actually, Apple is the sponsor of Mac Ruby, so it's not a third-party organization trying to jerry-rig something into the platform. So, there's a full support of Apple behind Mac Ruby. And it's a Ruby 1.9 implementation, which is also very good news for us that had to deal with 1.8.6, 1.8.7, 1.9.2. Going back and forth, every time I do anything metaprogramming related, it breaks in one of those three. So, I'm trying to stick with 1.9.2 for everything, and Mac Ruby started on the 1.9 branch. So, one of the goals for Apple is to make Mac Ruby a first-class citizen of the platform. So, objective C and Mac Ruby are living side-by-side as languages. The runtime is still objective C, and Mac Ruby is seamless integrated with that runtime. And it's really fast. And it's something that not many Rubyists kind of boast about to their frames. It's like, yeah, I'm doing Ruby because it's really damn fast. No.  Well, with Mac Ruby, you have this combination of speed in the Ruby language under the covers. You have also seamless access to objective C. And once you see some of the objective C code, you'll realize why we need Ruby to make it palatable. So, how many of you have done any objective C programming? All right. Well, that's a big contingency. Of those of you that have used objective C, how many do you really enjoy objective C? Get out. Just kidding. I had my share of ugly languages that I love, so it doesn't really matter. And the last element that Mac Ruby brings to the equation is DSLs. So, in Mac Ruby, we have a DSL-ish library called Hot Coco. And with Hot Coco, you can actually build UI interfaces. That's redundant. You can build UIs programmatically. And I will see the non-programmatic way to build UIs and how to handle events and all that with Ruby. So, like I mentioned, one of the nice things about performance in a Ruby VM, it's that on a desktop application, you don't have the ability to say, okay, we'll just add more servers and scale it. You don't have that luxury. So, you need a fast runtime to actually have desktop applications that are friendly and enjoyable to use. In a Mac, it's one of the lead developers of the project. So, let's show you a couple of things with Mac Ruby from IRB and then we'll jump into Xcode to show some more code examples. So, in Mac Ruby, every Ruby command you're used to starts with Mac. So, if I want to use IRB, I will type Mac IRB. And one of the things I want to play with, which is typical in most of the Mac Ruby demos, it's basically use the scripting bridge, which is a library that allows you to programmatically control some of the Apple applications that have scripting support. So, let's start with the number one victim for scripting, which is iTunes. And to get a hold of iTunes, the application, I use this class called SB application, and I'm going to retrieve the application by its identifier, which is COM Apple iTunes. You know, it would be nice if I actually load the scripting bridge. Another thing that you will notice with Mac Ruby, it's that everything that you need to deal with the Mac platform, it's pretty much built in. So, I can load frameworks by using the framework keyword in the name of the framework. So, now I should be able to initialize iTunes again. Then, why don't I figure out what the current track happens to be? And, of course, it's just an object. So, let's see if it's, does it have a name? Let me see. Let's look at what methods we have available. And one of the things with Mac Ruby is that all the classes inherit from Objective-C classes. So, you have a mix of Ruby, Ruby includes modules that have been included into the classes in parent Objective-C classes. So, by passing through and through to the methods command, I can actually see what methods are specific to the Objective-C part of this object. And I'm also going to subtract the methods that come from Object. So, I don't see all the root methods that happen to be in the root of the class hierarchy of Object. So, I should probably do something prettier. So, let's put this in a variable.  And no, I normally don't use variable names like that. If you want to avoid that return value, we do that. Okay. So, let's see what we have. So, we have quite a bit of methods. So, let's take a look at the artist. And as you can see, the artist is nobody. So, let's see if we actually have a song selected. Let's find something weird here. Of course, this is what happens when you try to do a live demo. Let's give it a try again. It should not need to be played, but that's strange. Let's try that again. If there's any bad language, oh, yeah, you're right. I'm sorry. And of course, I can control the plane or pausing of that. Now, let's do something else. Let's actually talk to iPhoto. So, here is my iPhoto instance. Let me just grab the first photo on the last imported album. And now, unfortunately, I don't seem to be able to script the preview app, but I can always use the power Ruby in bypass all that. My photo should be popping up somewhere. For some reason, I don't see it. I love it. I'll fail with error, blah, blah, blah, blah, blah, blah. Oh, yeah, I know what I did. So we have, let me see, first photo, properties, the path of the thumbnail. Do I need... Feel free to jump in and help me. There's nothing more fun than watch a presenter sweat while his demo is not working. Okay, so imagine that I am the scripting framework, and there's a picture. All right, let's move on to more fun things. So, as you can see, Mac IRB feels just like IRB. Mac Ruby really feels just like Ruby. Except that you have the ability to control the Mac OS, use every framework in library that's under the covers, and you can also sell your apps on the App Store and make a lot of money. Be rich, travel Ferrari, typical dream of every programmer. Yes. For most of the scripting automation ones, when I bring up the app, when I bring up an instance of the app, it seems to launch the app, so you see it bouncing on the bar and all that stuff. I'm pretty sure there's ways to do that silently or headless. I just haven't gotten to that point yet. Oh, by the way, I am by no means an Objective-C expert. I'm an expert on a lot of things that kind of look like Objective-C, and I've done a lot of desktop development, so this is to me a brand new world, too.  So there's two ways to build applications with Ruby, with Mac Ruby. One, it's programmatically, and I mentioned the HotCoco framework or library that allows you to basically position elements programmatically, determine how those elements are going to cover certain parts of the screen, how they're going to resize, things of that sort.  They also generated code. So the problem is that they were a one-shot tool. You generated the code, and then you had to actually go and manually change things to make it work correctly just to keep up with the limitations of the tool. So now you had something that was machine-generated, but yet you have to maintain. And that always bothered me. Then in other environments, you have a binary representation of the UI of some sort, and then you hook up to it from the code so you really have a very clean separation of the view from the models and controllers. With Objective-C in Coco, you have sort of a slight combination of both. There's some presentation-based wiring that goes into play in the actual view file, but it's very minimal. It's basically the ability to have aliases to be able to talk to different parts of the UI from your controllers. There's also, and this is very hard to see, lesson number one, always use light backgrounds for everything in a presentation. I just couldn't pass on these pictures, but you can see that there's a carpenter doing things by hand, so that's a problematic point of view. There's also Interface Builder, which there's a bunch of machines back there where you can't see them. So Xcode, it's the environment that all Mac developers use to build Mac applications. And it has a UI builder, which is actually pretty usable, and it's been around for a long time, so it has a lot of time to mature and become a very reliable tool. Xcode also supports Ruby to an extent nowadays with Xcode 4. It's no Texmate. The Ruby support is still kind of goofy. I would say it's still quite experimental. For example, if you highlight a block of code and you do an Apple slash, you're thinking it's going to comment that block of code with Ruby comments, well, you're going to get C comments in there. So things like that, there's little details here and there that need to be improved. So Xcode now has, on Xcode version number four, has support for Mac Ruby applications built in. So it's no longer like a wiserty for you to try to figure out how to get your Ruby application working in Xcode. So you can pick a Mac Ruby application and it basically provides a skeleton for everything that you need to get started with desktop development with Mac Ruby. So this is a preview of what the interface builder looks like. And as you can see, it has a graph paper-like type of UI where you place components. You have a main window for your application and you will place your components and arrange them and lay them out in a way that satisfies your application. There's also a lot of building objects in interface builders, built library. So we have all kinds of buttons and control sliders. Also components that are used for automation with other applications. You can see that there's ways to control scanners in video devices and things of that sort. But we're going to play mostly with the visual controls today. So what I want to build in front of you, which can go horribly wrong, it's a very simple web browser. And the web browser, of course, we're not going to build the rendering engine for a web browser, otherwise we would need a couple years of time for the presentation. We're going to use WebKit, which is the built-in connectivity to the WebKit library. So there's a WebKit web view that allows us to use the WebKit library to manipulate a embedded browser in an application. We're also going to have a home button, which we all know what it does, and a back and a forward button. And I'm going to show you how to build that application, connect everything together, and use Ruby to handle all the important events under the covers. Now, there's something slightly goofy about this example, which I did this example before without a single line of code, which you can do in Interface Builder, because there's ways to connect everything in ways that you can bypass all of the code. So for our example, I'm actually doing all that wiring and handling of events in the Ruby code so you can see the mechanics of a Mac Ruby application. So what we're going to do is use WebKit. We're going to lay out components on the main application window. We're going to deal with something called outlets and, of course, events and actions. I'm going to do some logging, and we're going to build the application so we can have an executable that we can give to our friends and say, hey, use my crappy browser instead of Safari or Firefox. So let's do some live coding. Mystery Science 3000, anybody? No? Cavit Amter. So let's get started. And, of course, I have a cheat sheet to be able to do this correctly. And I'm going to turn on the mirroring so I don't have to be turning my head for this example. Of course, I have a completed version of this application on my computer, and it's also on GitHub so you guys can go get it and play with it. But let's do a brand new one. So I'm going to, in Xcode, which, by the way, this is what Xcode looks like, I'm going to create a new project, and I'm going to select the Mac Ruby application project. And let's call it Mac Ruby Browser Live. And you can see that if you're familiar with Java, the namespace in Objective C and Cocoa and the Mac platform is very similar to what they use in Java. You can see here that my company identifier is already pre-filled. And you can determine which category you want to label your application to be under in the App Store. So the whole App Store stuff is now really baked into the development environment so you can have a very easy transition from finished, compiled, built product to the store. So I'm not going to pick any categories because this will never see the light of day. And you can also create a document-based application where you would have more of a built-in model under the covers for you to deal with certain aspects of the application. But in this case, we're going to ignore all that. There's also core data which allows you to basically use the local file system as a data store source. Being a Ruby application, we could also use things like ActiveRecord if we wanted to in a simple embedded database. So that's the beauty of this. We can take all those gems from the Ruby world to actually help us in the Mac world. We can have truly complex models, database-driven models if we wanted to. Compatibility issues? Yes, they are not all gems work on Mac Ruby. The way that I find which ones work, it's to basically try them. I believe there's a list somewhere. I just haven't gotten to it yet. But the majority seem to work. Objective C also, the runtime can also deal with C++ and C. So in most cases, things will work, but it's not guaranteed that they will. So after I created a new project, I need to pick a place for it to live. So I'm going to put it under my projects folder on my documents. And as you can see, now I have my new project open in here. I have the definition of my project. I have the frameworks that the project is using right here. So you can see that Cocoa framework in Mac Ruby have been brought in. And I have something called an app delegate. And the app delegate, as you can see, it's not an Objective C class. It's a Ruby class. And it has an attribute accessor for the window and the skeleton placeholder for an event handler called application-did-finish-launching. Now, Objective C names are pretty verbose and long, and they actually follow camel case syntax. So you can get queued and try to change that because then the hookup of events in here, it's being done based on the name. So you're going to see, one of the things that bothers me about Mac Ruby is that you see this combination of Objective C methods in Ruby methods. Now, the J Ruby guys did a very incredibly smart thing. It's that when you bring any Java methods into the equation, they get converted to Ruby syntax. So they get underscores in all lower case. Why that wasn't done in Mac Ruby, I do not know. But it's one of the few things that syntactically bugs me a little bit. So you can see in here that that method, it's a Ruby method and it just doesn't have anything inside of it. So there's also an RB main file, and this is the file that it's used to actually launch the application to launch the application as a Mac Ruby application. That RB main Ruby, it's also invoked from this main, the M Ruby, I mean Objective C class, or sorry, C class. And you can see here that it's invoking RB main, with whatever arguments are being passed, and that's going to invoke our RB main, that it's actually loading Cocoa, and loading all the files that you need, the main file name, and executing the application. So let's actually start building the UI. And of course I have, for layouts, here's my cheat sheet, what goes where and how to align it. So let's get started by sizing things so I can actually do some work. Notice I'm going to click on this view so I can see the object library, which is down here. And from there, I'm going to pick first a NS button. All this NS classes are next step classes that are Objective C classes. So I have this component or control called a square button, and I'm going to drop my square button on the UI, and I should not do that, because that button is floating on nowhere. You have to select the window that you're going to work on. So as you can see, I don't have much screen real estate, but there's my main application window. So I'm going to try this again, grab my square button, and I'm going to drop it somewhere on my application. One of the things that I want to do to that button, it's actually style it a little bit. And what I'm going to do is change the image on that button. So notice that I clicked on the attributes inspector up here, and I'm going to find the image attribute for that button right here. And now in that image attribute, you can see that there's a drop-down, and it'll give you a lot of different choices, like what you use for a color panel for a computer. I could not find the one that I wanted for the home icon of the browser. But if you try things, they typically work. So I typed NSHOME in there, and that actually happens to be the image. It won't refresh it at development time, but the first time you run it, you will see the button in there. So let's go ahead and run this. Notice that I failed the build to... What did I do? Okay, I delete that and run it again. Did I leave it sitting out there? Oh, there it is. Thank you. Okay, let's make sure that this builds with nothing in. Nope. Something it's not like any today. Great.  You bring the application that's completed and working. And instead, I'll do a walkthrough through the application. So here's the UI that I built for this, very simple. Notice in here that that's my home button. I have a text field in two round texture buttons. In Interface Builder, I can change the names of the buttons directly on the interface. So there's a lot of things that you would not want to do in code. But for example, if you were using some kind of bundling technique using a Ruby library, then you could still get to those buttons and change the language of the buttons from the Ruby code. So this kind of throws off my whole cheat sheet. So some of the things that I want to show you here, first of all, so here's my application again. And notice that when I click on the home button, I have a action that's being sent from the Go Home action. It's linked to this app delegate, which is the Ruby class that we've seen before. Now also, if you look at the... There's a reference in Outlets, so I could map different elements of my UI to code in the Ruby class. So if I open the app delegate, notice that, for example, I have something called URL bar that I added as an attribute accessor. URL bar, of course, like any other instance variable in Ruby, it's going to be accessible in the code as at percent URL bar. Now, if you look at the connections for the URL bar, you can see that I linked the load page to the app delegate. So that basically what I'm doing in here with my outlets, and I'll show you here a quick example. If I were to try to connect the reference in Outlet to the app delegate, it tells me what do you want to connect it to. So in this case, I'm going to say that's the URL bar. And that's how you create connections between the UI and your Ruby code. Now, to be able to load content, I created a couple of methods. One, it's called go home. And the go home method, it's going to use the built-in Objective C logger, which is the class NS log. And you can pass a Ruby string to that. And then I'm grabbing that URL bar, and I'm setting the string value of the URL bar to a URL, just Google.com. And then I'm calling a method that I wrote in here called load page, passing the sender that was passed to that method. Now, in load page, what I'm doing is accessing the main frame of the WebView. Now, you might ask yourself, what is the WebView? If you look back at the UI, there is a component called WebView, which I took from the WebKit library, which is the only component that's available there, and that is a WebView. So basically, a full-blown browser in a Objective C control that can be placed on any application. Now, inside of my WebView, I connected my WebView to the app delegate. So the at percent WebView in my code, it's pointing to that WebView. In the code, then in the load method, I'm getting to the main frame of the WebView, and I'm loading a request. And of course, as a Rubyist, to find out how you can do this, you would have to actually look at the Objective C documentation. It's all online, and there's a lot of how-to articles in there. So there's a lot of searching involved with learning Objective C if you don't have a guide of sorts of some kind of book that you're following. But I seem to be able to find most of the things that I need just by searching the library. So in here, I'm using this NS URL request. I'm requesting a URL with the specific string that actually happens to be in the URL bar. So I modify the application that finished launching to actually go to the home page immediately. So the application launches, I go to the home page. Then I connected the events, go back and go forward to the go back and go forward methods in the WebView, and I attach those to the buttons. If we go back to the UI, and I pick the back button, for example, you can see that the action go back, it's being sent to the app delegate. In the back button, it's referenced in the app delegate. Now, let me show you a couple more things in here, and then we'll launch this thing. So I show you how we go home, how we load a page. Let's actually view those in a running application. And hopefully this should work, because it worked just five minutes ago.  So here's my little browser. Very little work in terms of basically laying things out. I've probably lost... No, the Wi-Fi seems to be working. No, it's not. So Google's new page, it's so simple that it doesn't have any text on it. It's beautifully simple. Well, I deserve that for trusting Wi-Fi connection. But trust me, it works. And you can get the code from GitHub and check it out. Some of the things that I did in here, I made the URL bar text field the driver for the whole application. So whatever URL goes in there gets reflected on the WebView. If we go back to the code, there's also a couple things that I had to do to be able to keep that text field as the driver for the application. So one of the things that I had to do is figure out a way to change the address of the page that was loaded. So if somebody was navigating on the browser, I need to capture those events and then change the URL that's being shown. And I did that with this method. So notice me here that the method starts with WebView. Then there's a parameter called WebView, and I did start provisional load for frame, a colon in the word frame. So it looks very non-ruby-ish, very strange. It's valid ruby, but it doesn't look very ruby-ist. So inside of that method, I'm putting a log message, and I'm checking that the frame is actually the main frame of the browser. And if that happens to be the case, I'm setting the string value of the URL bar to the absolute URL of the frame that's being loaded. Now, you might ask how did you figure out how to write that method? Well, the first step was to actually Google for how to refresh or how to get the title or the URL of the page being loaded. And of course, I got a snippet of Objective-C. And I'll show you what that snippet looks like. Hey, the word's never wronged through, huh? So here's the Objective-C method that I found. You can see that there's a dash, return value, it's void. There's prefix with the word WebView in a colon. So that's what you see in the name of the method WebView. The WebView parameter, it's basically the sender that we see up there. And the didReceiveTitle has two parameters. One, it's a title, and then there's also a forFrameFrame parameter. So the syntactic sugar that they use in Mac Ruby to be able to bring that type of method signature into Ruby was to use colons. So you can see that I have the didReceiveTitle. Of course, I don't need types because we have an untyped environment. And I have my title and my frame. Also, you can see some of the strangeness of Objective-C when you see all the brackets on the inside of the if. So all the message passing, it's done with nested brackets. So in this case, they're sending the window message to the sender, and then they're sending the setTitleMessage to the result of that. So it's kind of like dot notation but with brackets, which I don't know what they had against dot notation since it was a C-based language, but that's a topic for another day.  Sorry, one of the things that I forgot to mention, too, is that if I run the applications as it was before, it also wouldn't work because I needed to actually add the library. And if you look at the definition of the application, you'll have to add the WebKit framework in there. So from here, you can have access to basically all the built-in frameworks of the Mac platform. So there's a lot of stuff in here that you can start playing with, and that's sort of how I've been discovering Mac Ruby by actually loading a library and see what methods are in there and playing with the code. I got the Ruby part down, so now it's basically the process of discovery of Mac Ruby. We have the URL on GitHub where the code lives, and I'm going to keep on adding more and more everything that I experiment with. I throw up in GitHub. There's hundreds of Ruby projects in there, hundreds of Java projects in there. Just ignore those. And soon to be a lot of Mac Ruby projects in there. We also use a native logger, and I can show you that there's an executable. Well, you get it. There's an app that you can basically now drop into your applications folder and anybody can use it. So basically you have a native Cocoa application that is being controlled by the coolest language that we know living on your Mac. And I can already see an explosion of Ruby-based development tools probably built with Objective-C in Ruby Cocoa, in Mac Ruby, and it's an interesting time to actually be on the Mac platform. There's a few books out there. I got the early release of those two books, Mac Ruby in Action in Matt Imonetti's Mac Ruby, The Definitive Guide. This one so far it's really good, and it's all available online for free on the O'Reilly site. Thank you very much. Any questions? Yes. Sorry. Next question. No, Mac Ruby actually uses the garbage collector. So the iPhone and iPad applications are not allowed to basically touch that part of the infrastructure of the system, so not yet. But I hear rumors that things are changing for the better. So I'm tempted to say that in the next six months we might see some announcements regarding Mac Ruby on the iPad and iPhone. Yes. This is what I've been using. Well, all the Ruby class, I mean, you can build your own RDOT from the Mac Ruby source. I don't know that somebody has posted online somewhere so everybody can get it for free. But maybe that's something I'll do. I have a few servers laying around. But the Ruby, it's still just Ruby. It's the Objective C part that you're going to have to basically look up and then do the translations like I did from some of the Objective C examples to the Ruby examples. And that took me a little bit of time figuring out how the dynamic of converting things. I don't know if somebody can actually write a parsing tool that can actually do the conversion for the method signatures. That would be probably a very nice thing to have. Any other questions? Yes. Same here. I have the same problems with understanding Objective C syntax method, the way they think about passing messages to objects. Nothing that it's a clearing house. Yeah. There's not a clearing house of basically all information for Mac Ruby. So if the Mac Ruby website has a lot of links to different things. But you can see a lot of DS sales appearing around the complexities and ugliness of Objective C. Like for example Hot Coco, it's a library that basically wraps building UIs programmatically with Mac Ruby. So it looks completely like Ruby. There's nothing weird in it. And the more I imagine the progress of the platform is going to be that people just build directly by touching the Objective C classes, but they start writing basically libraries that encapsulate some common behaviors. And eventually you're going to have DS sales wrapped around all the Objective C ugliness so we can be completely shielded from it. You still have to go and understand it because you're really talking very close to the metal of development in here. And UI development is that way. You really need to understand what the control that's under the covers, how it behaves, how it works. There's also going to be probably memory allocation, the allocation issues that you might have to deal with in complex applications. So things like that, you will start seeing libraries or DS sales wrapped around complexity in little areas like that, just like Rails did with web development. One more question. Well, I actually... The first desktop app that I bought through the App Store was Xcode 4, which actually then I discovered it was free. But somehow you paid 5 bucks to buy it from the App Store so you can get updates and stuff like that. So I'm going to write a letter to Steve to get my $5 back. But other than that, it seems to be an explosion of applications. It's growing fast. It's not as big as the iPhone Store or any of those iTunes stores. But it's growing. And I think they have a very high level of standards to let applications in. So you're going to be again in a good neighborhood. Thank you.


Welcome back folks. We had the Vow Industries finished down 80 NASDAQ up 19 S&Ps flat. Bottom line is that you had a sideways market out here with light volume folks. We're going to take a look at the S&P for what you're going to see out here is that you're slamming right into the October 10th, the downdraft. The top of that is $286.91. We hit $286.23 today, bottom line did 38 million shares. Yesterday you did $77 million. So you can see some major resistance right here and we'll see whether you're just building cars to get up and over it or in fact just can't handle a little price. That was your S&P. NDX100 is the same type of setup. Now the differential in the SDX is that that hasn't reached the high yet of the 21st of March. It's 182.83. We got to 182.90 today. You're closed at 182.73. Bottom line is that you have light volume 21 million versus 42. Now that you can say is a subtle failure, pretty intense, but it's still laying at the high. Small caps are still the weakest thing to see out here. The sideways move out there slightly lower, down 40 cents, $154.36. The differential is that the small caps, I made it to the downdraft of the 22nd of March. That was the second downdraft because the small caps had topped out and this last get go on February 25th. So the date we're talking here is on March 22nd. Got above it closed underneath it, 40 million shares versus 17 today. So that is a failure in spades too. Notes and bonds. We're going to use some more volume out here. What we did do is that you had price going up six ticks, no big deal there, but bottom line you're going to need more volume. You are in the higher range though. That's the bottom line. We came down yesterday. You came down with heavy volume yesterday. That being said, it's still much lighter than the volume that you went top side with. If we take a look at this, what you're going to see is that you're coming into the strength. The strength had 2.5 million contracts in the 10 year. We did 1.7. So when you do something like that, bottom line, that is staying, guess what? You still want higher price, low yield and good old king dollar. King dollar, I traded up to a price point of 97095 today, 13,000 contracts. The high I was looking for is 970160 and the bulls and bears are still fighting it out over a king dollar and it's actually all about the Euro. The Euro is right at its lows. That's trading 111.99. We'll see whether it wants to jump off the cliff. Stay right there folks. Come right back.


What's up team welcome back is your biggest fan the real Casadero and in this lecture we're talking about the html 5 global attribute of Draggable, which is also used with the html 5 global attribute of Drop zone they aren't used together in the same attribute. I guess they could be anyway team Here's the point is that both these attributes they're separate They're used separate but you can use them together in conjunction with every other attribute and every other thing that you're gonna find inside of HTML 5 to build just about anything you can imagine right the number one skill We need to have when it comes to all of this is not necessarily understanding any of the stuff that I'm talking about But it's being able to have an idea in your imagination or receive some sort of instructions from someone and be able to think your way Through these instructions because there's different problems that need to be solved along the way and that's what you do team You are the problem solver. You're also the creator the coder the artist the entrepreneur Whatever team so you got to learn to think about this stuff for yourself. I'm just here to show you the way So let's jump into a team and look at the html 5 global attribute of Draggable alright team. So we're here on the desktop and the first thing we're gonna do is create a new project So we'll just right-click and we will go where is it at new folder and we're gonna call this html 5 Draggable DRA gga vle Draggable attribute a Enter and now we'll double-click to go inside of this folder We'll right-click and say open with code is gonna open visual studio code and I've got multiple windows here Let's close this one with the alt f4 and we don't want to save that We're gonna go back over here to our main window do a control w control s It's not do always because we closed the other window So here we'll go new we'll right-click inside of our Explorer bar will go new file and We'll name this index dot Html so now we have a html file and we just got to put an exclamation point and hit tap and we have a basic document We'll call this html 5 Draggable DRA gga draggable Attribute a ttribute and then we'll shift will control shift Right at left arrow to select all of these control C And we'll just go and look notice how we're scrolling around. Let's hit um, I think it's alt Z To turn on rapping and then we'll hit control B to get rid of this sidebar And now we'll add a h1 and we'll just paste this in now what we're gonna do team is we're gonna hold the alt key and hit enter and That it's not that didn't do it. I wanted to do so we're on this line It should be alt enter or the control control enter my bad team To go down to the next line and make another line and now we're gonna make two paragraphs And we're gonna fill them up with some text because we're gonna use these paragraphs to demonstrate What draggable is team and let me adjust this volume. It looks like it's up too high. All right So what we do now is we just go down here and we're gonna say p times two and A child item of that piece. So this is gonna be less than is gonna be our alarm text And we're gonna make it ten words and then we'll hit tab and we get two paragraphs So if we save and do alt f4, we don't need this right here and Right-click inside of our folder again and go open with code like we've done so many times before already It's gonna give us the ability to use We don't need this don't save all right, it's gonna give us the ability to use our live server So we'll Open up our live server over here So we'll put one off to the left and we'll put our code off to the right And when we go in here neither one of these are draggable things So what we can do is we can add the attribute of draggable draggable And we can set this to true save and then we can drag this thing around now another thing We can do like say for instance. This one doesn't have an attribute. We'll give it one though. We'll call this draggable And we're gonna set this one to false f a l s e save and Nothing changes. We still can't drag it Because false is the default now some items are automatically draggable like links in images So if we add a tag and we I don't know it doesn't matter We can just put this in here and you can say I am a link and I am draggable by default and then Here we'll put I am a link and I am not draggable because Well, actually we'll say Not draggable and they will say draggable draggable Attribute is set to false f a l s e enter Yeah, so we'll control s to save and so links are in line elements So we just need to put a br to put a page break between them and put them on different lines And we'll add another one to give some more space Save all right So now we got some space between our links and we can drag our links around just like we can our text that we set to be true But down here We can set this to false. Of course. We already know that right so draggable and we can say false save and Then we won't be able to drag This link around we can still drag this one because that's what the default is But we can't drag this one around because we set this draggable to false team now The default attribute is auto So if it's set to auto then every if it's a draggable element, then it'll drag and if it's not a draggable draggable element Then it won't team unless we explicitly fast special unless we explicit explicitly specify That we want to use true or false now images by default So I've read or draggable, but when I tested it I I couldn't make them not drag So like if we go out like I think I have an image I don't know if I have an image if we go out to the internet and just grab an image. So we'll go internet This type internet will go on Chrome see it actually let's go edge So we'll hit windows edge and this will open Bing and Bing has the best image search I think so we can go let's look at my computer case NZ XT 700 So we got these computer cases we go to images boom we got all these cases We have a white one so we'll click this one And these are actually not what I was looking for but hey look you can get one on eBay for 138 bucks. Let's go back What's going on? Okay? All right, let's close this and go back over here We just want the images right so this is going to be the organic images down here at the bottom And this is just a nifty trick in case you ever need to find an image and what we're going to do is going to say PNG and We'll say white the VHIT so we're looking for just the white cases So we're going to do is we're going to click on We'll click on this one right here click it again, and now we got this full image. We'll just right click we'll go save as and It's going to ask us where we want to save it and we're going to go to our desktop and we have this folder We that we just made we just have to find out exactly where it is So we're going to make this bigger and we're going to sort by date modified And now we have our draggable attribute there and save this inside of that folder close this out and now we can go here and We can set our image so we can go IMG Well, actually let's put our image outside of this link So we'll go IMG and then what our source will be this image right here, and we'll say alt and we'll go the NZX NZXT 700 computer case save Now we got our computer case there And what we can do is add another attribute to control the height and width of this thing. So we're going to say height And then and also height and width or global attributes as well So we can set our height we'll set this to 100 pixels save and now it shrinks down to a more reasonable size And we don't even have to specify we can specify the width if we want so we can go WIDTH Is equal to whatever you want it to be actually need a Gotta put a quotation mark there. We got to get rid of this quotation mark Let's do a alt Z. So all this stuff wraps up if we aren't scrolling all over the place And that to do what I just did you just hit the alt and the Z key team All right, and we'll set our width to like 200 pixels So now we get an image desk, you know stretched out You know I'm saying so we can control we can control stuff like that team Now also images are in line elements. So what we want to do is we'll add a BR underneath our link So we'll do BR tab safe So now our computer goes under these and we'll just add another one by holding alt shift and hitting the down key Save. All right. So now we've got our computer image and by default These images are draggable now. We should be able to turn this off. I haven't tried this before I don't know if it's gonna work, but if we go in here and we go to drag a bowl And we set this to false in theory We shouldn't be able to drag this image around and we can't team. All right, so it worked So that is how you can set things to be draggable and not draggable team. That is it for this Lesson this lecture whatever it is you want to call the team but That is that in the next in the next in the next lecture We're gonna talk about drop zone and then we'll and then we'll actually go into how we can drag and drop stuff And that's gonna team. I'm telling you it's gonna take you further down the rabbit hole because we're gonna be looking more at JavaScript in order to implement this stuff team like we have we have the tags We have the elements of HTML We have the attributes to do a bunch of cool stuff But there's times where we just need to use JavaScript to specify things and that's just the way it is right It's you know these things could in the future Any of these things that we are doing in JavaScript could very easily become tags in HTML That just do the stuff for us, right? So if we can make that happen by going off and you know joining the community and helping to write the standard what or whatever So whenever we have to use JavaScript is just because somebody else hasn't come up with one solid single Tag or element or attribute or command that will execute all of those different things required to produce the action Or the result that we want and that's what we do as programmers We are looking at a problem and we're using code to close the gap So when we want to start a business we look at all the different things out in the world all the different Possibilities there are to maybe going out and starting a business and then we go Hey, how can we condense this down into something that a computer can help us do right? So maybe we don't need to storefront all we need is a website We need to sell stuff or we want to sell stuff or want to sell a product or service So how do we give people the ability to to book us to book an appointment without having to pick up the phone? We want to make everything as easy as possible, right?


Another tale well-calculated to keep you in. Have you ever received a letter threatening your life? And if you did, what did you do about it? Well, let's find out what Dr. Fraser did as we listened to Crank Letter, Written for Suspense by Walter Black. Just speaking. Hi, Doc. Paul Lee. You believe in telepathy, Lieutenant? Big pardon. Well, I was just about to pick up the phone to call you. Oh, I guess the department must have notified you, huh? Notified me about what? No. No, you see, I got a letter and I wanted to talk to you about it. Could I drop in later today? Well, sure, my check-up. Save you a trip. Well, I guess it can wait. Uh, let me see. Can you come in at four today? Yes, I can. I'll see you then, Doc. Hello, Lieutenant. Now, the outer door will be locked. So just call out and I'll let you in. You can put your shirt back on now, Lieutenant. Okay. Well, what's the verdict? Oh, your sound is a pre-war dollar. Although if I were you, I'd take off a couple of pounds around the middle. Well, I keep telling myself I will, but when it comes to my wife's cooking, I only got all the willpower of a jellyfish. All right, Doc, now it's your turn. You mentioned the letter. Yes, here. Read it. You quacks are all alike, murderers.   Now, she went to a lot of trouble, didn't she?  She reads like a woman. Could be a man, of course. I suppose you've handled this, haven't you? You mean fingerprints? Yes, I guess so. I didn't know what it was, of course. Well, it doesn't matter, Doc. She probably wore gloves. I wouldn't worry too much about it. You wouldn't worry about it. No. No, it's not addressed to you. No, no, no. Take it easy. I only meant... Well, we get hundreds of poison-penned stuff like this every year. 99% of them turn out to be crank letters. And the other 1% lieutenant, what do they turn out to be? You know of anyone who might have a grudge against you, doctor? No. There's no reason at all for anyone to hate you, that right? Well, there's no. Rational reason, no. I said no reason at all. Well, it isn't really a reason. Let me be the judge, huh? Well, all right. It happened last week. I was performing an operation on an elderly patient in his 70s. Now, his heart failed on the table. Everything possible was done for him, but it wasn't any use. He died. Anyway, it's been on my mind. I feel terrible about it. Guilty. No. No. Why should I feel guilty? It happens sometimes, no reason. Just asking, doctor. The man who died, what was his name? Gilbert. Joseph Gilbert. Any relatives? He lived with a son. Name? Well, I don't... Wait a minute. I probably haven't on his records. Here it is. Frederick Gilbert, 210 South Oakland. You ever meet him? Yes, once. What's he like? He's big and burly. He, uh... He won. Well, it was after his father died he threatened to hit me. He had to be restrained by some hospital attendants. You think he wrote this letter? Nope. I think it's just what I said it was, a crank letter.  I'm pretty sure it'll turn out to be just another crank. Excuse me, Lieutenant, but there's a Dr. Donald Frazier outside. Says he has to see us. Says it's important. Yes, sir. You can go on in. Okay, thank you. I'm sorry to bother you, Lieutenant, but... Ah, it's no bother at all, Doc. What's on your mind? This. Hey, with the morning mail. Well, go on and read it. All right, all right.  Relax. I'm too nervous, if you must know. Now, suit yourself. You killed him. You and I know it, even if nobody else does. Your turn is next. Hmm. Well, is that all you can say? Cheap grade of paper and no signature. You killed him. You think this refers to that patient of yours? What else can I think? Look, I'm not... I'm not normally a very excitable person, Lieutenant, but this has got me... Scared? Yes, scared. Can you understand that? Or... Or don't policemen ever get scared? Sure we do, often. Send Evans in. Oh, and what am I supposed to do now? Get out of here and go about my business, is that it? I'm scared, Neiman. I'm scared sick. Now, does that penetrate? I want protection, and don't give me any more of this crank-letter routine either. This thing is genuine. I can feel it. I think you're right, Don.  I'm sorry. I... I didn't mean to blow up at you. It's all right. Forget it. Let's go on in, Evans. This is Dr. Fraser. Don, this is Detective Evans. How do you do? Evans, you're off desk duty as of now. Until further notice, you're assigned to the doctor. You'll pick him up every morning when he leaves his apartment. You'll go out on calls with him, accompany him to the hospital. That works. You got it? Yes, sir. And every night you take him back home and wait until he locks his door. Yes, sir. What am I supposed to be looking for, Lieutenant? Your guess is as good as mine. Just make sure the doctor stays healthy. Yes, sir.  I am, Donald. Real serious. In just a moment, we will return for the second act of... suspense. Here's Hollywood star Mona Freeman. Who feels like acting with a miserable cold? I relieve cold distress the fast way, with four-way cold tablets. Yes, tests of all the leading cold tablets prove four-way fastest acting. Amazing four-way starts in minutes to relieve muscular pains and headache, reduce fever, calm upset stomach, also overcomes irregularity. When a cold strikes, do what I do. Take four-way cold tablets. It's the fast way to relieve nasty cold distress and feel better quickly. Four-way, only 29 cents. Our program will continue in a moment after we're about another fine product of Grove Laboratories. To get rid of embarrassing dandruff in three minutes, change to Fitch, dandruff from over shampoo. Three minutes with Fitch regularly is guaranteed to keep unsightly dandruff away forever. Apply Fitch before wetting hair, rub in one minute, add water, lather one minute, then rinse one minute. Every trace of dandruff goes down the drain. Three minutes with Fitch and embarrassing dandruff's gone. At the same time, Fitch can brighten hair up to 35%. Get Fitch dandruff from over shampoo today. We was at the hospital from 2.35 to 7.15. Then we went to eat, went to a movie. Not a bad one either, Lieutenant, the one at the palace. You seen it? Never mind that. No, sir. We got back to the apartment at 11.08. I checked it out like always. He locked the door behind me. I picked him up again at 8.10 this morning and I'd just come from his office. Office door locked? Oh, yes, sir. I make sure of that. He says some of his patients complain about it, but he locks it. Nothing out of the way. No, sir. Lieutenant Neiman. It's John Frazier, Paul. I got another one. Another letter? Read it. Something, Paul. Take it easy. We're doing our best, Doc. This just came in the mail? No. No, I found it on my desk when I got to the office. What? I'll be there in five minutes, Doc. Come on, everyone, let's go. Locked her now. Let's see what we've got. Her outer door wasn't tampered with. Neither were the windows or the catchers. The building superintendent has been in. The cleaning woman was out sick, so she wasn't even here last night. Now, you're absolutely certain the door was locked when you left last night and locked when you got here this morning. I was with him, Lieutenant. It was locked all right. Uh-huh. And yet there was the letter right on your desk. How did it get there? What was... Paul, I... I should have mentioned this before, but I didn't think it was important. What? I lost my key ring last month. You what? Now, it was only missing two days, and then somebody returned it through the mail. It had my name on it. Now, ain't that just Jim Peachy Dante? Well, I'm sorry. I... I didn't think it meant anything. Heaven's call to station. I want that man Gilbert brought in. Let's find out about Gilbert once and for all. I have to keep that light shining in my eyes. We don't have to, but we're going to. We like to see who we're talking to, even when they're as ugly as you. I'd like to get you out from behind that badge bust. Didn't hear you say that. Any time at all. All right, Gilbert. Let's go back over that story of yours.  Where'd you go? I told you. Tell him again. I went bowling.  Well, you think I'm a kid or something? I knew you had a tail on me. Am I supposed to write him a letter if I feel like going out? Why not? You've been writing Dr. Frazier letter. I ain't writing nobody nothing. How many times I have to tell you? Turn off the light. What? You heard me. And get that clock out of here. It's making me jumpy. Yes, sir. Pretty rough about your dad, Gilbert. Dying on the operating table like that? Of course. Who's to say whose fault it was? Accidents will happen. Listen, my old man had the constitution of a nox. There was no accident that killed him. You think Frazier did it on purpose? If I thought that Frazier'd be his... You really want to know what I think? Yeah, I do. My old man was a clinic patient. No dough. Slapped him on the table, cut him open. If he lives okay, if he dies too bad. Well, like I said, I don't blame you for wanting to get back at Frazier. Now who said... I do. You're our boy, Gilbert. You got the motive and you got the opportunity. We got witnesses who heard you swear to get even with Frazier. That's when a guy says lots of things. That don't mean anything. Tell it to the jury, Gilbert. You only got one chance, Mr. Copper, please. I never wrote no letters. Where have you had the duplicate keys? You'll find them sooner or later anyway. Lieutenant Neiman. This is my last warning, Lieutenant. Frazier hasn't got much time left. Who's this? You're his friend. Tell him to make us peace with God. If he can. Wait a minute. Comedy. Put a trace on this call. If you've got anything against Dr. Frazier, why don't you come on in? We'll talk it over. Give him my message, Lieutenant. Hello. Hello. I just don't get it. I was so sure Gilbert was the one. You're in good company, Doc. We thought so too. I didn't. I never did. He was just the only pigeon inside. Doc, tell me. This town you were born in, where you grew up. What's the name of it? Haydenville. Maybe the aunt is back there. But I left after high school. I never went back. I told you that. I know, I know. What about your family? Well, my father's dead. My mother lives with my aunt out in California. Nobody else? Brothers? Sisters? Cousins? Nobody else.  I had no reason to. I'd made new friends in college and later in med school. There weren't any close ties at home. All right, Don. How about college? Medical school? No, no, no. Not that I was the most popular guy or anything like it, but I've... Well, I've never gone around making enemies. I wouldn't call our letter writer a bosom parallel, exactly. Hey, Lieutenant, maybe it's a patient. Maybe one of them's kind of a crack. None of my patients has any reason to wish me harm. Old man Gilbert conked out on the operating table. Was there anybody else? I'm not in the habit of either killing or wounding my patients, Evans. Now, you can check my records if you like. Okay, Doc, just ask you. Let's go, Evans. I'll pick you up at the usual time, Doc, if I'm still around. Okay, Doc, it's me, up on Adam. Hey, Doc! It's me, Evans. Let's get going. I like some breakfast. Doc? Smells like... Hey! The moment we will return for the concluding act of... Next time you refresh. Enjoy a frosty, ice-cold Pepsi Cola. Sociability, Charlie. All right, Kay, how's this? Pepsi is light. Refreshers without filling. You like to refresh? Have a Pepsi right now. I'll offer it to everybody, Charlie. I will. Enjoy Pepsi at the fountain. It's delicious at home, too. Have one at lunch or with a snack. Charlie. At the beach or at dinner. Wherever you go, wherever you're thirsty. Pepsi is there. It's here, too, in our Be Sociable song. Be sociable. Love is Pepsi. Drink is Pepsi. For the weekend, have plenty of Pepsi around. Pick up an extra carton today. See, Kay? I'm sociable. With Pepsi, everyone is. Doctor says you'll live. Thank heavens for that. You know something? Frazier must open that door himself. Even with duplicate keys, nobody could open it from outside after he shot the bull. So, in a case as crazy as this, it's nice to have one solid fact to sink your teeth into. Crazy is right. No sign of a struggle, not a mark on him. Yet there he is, stretched out on the couch, and every burner on the stove going full blast. Lieutenant, I just thought of something. Whoever the guy is, he's someone Frazier knows. You don't open the door in the middle of the night to a stranger. No kidding. Well, it's something. It's nothing. Like everything else we got. Go on back to the station, Evans. But what about you? I'm going to see Frazier as soon as he'll let me. Doctor Frazier? Don, can you hear me? It's Neiman. You're going to be all right, Don. You hear me? You're going to be all right. He was lucky this time. He won't be again. What? I should have turned the gas on earlier. Doctor, that voice, what are you trying? Next time I'll use a gun. That's the same. It was you on the phone, wasn't it, Doc? It was me, Lieutenant. What? It's very simple. I called you. I wrote the letters. I tried to kill him. And I'll try again only the next time. All right. It was you. Who are you? Donald Frazier. But, Doc, you're Donald Frazier. Where do you live? 92 Main Street. Haydenville. Haydenville. Where do you work? Mulholland's Meat Market. After school and an all-day Saturday. School. What grade are you in? I'm a junior in high school. Why? Just routine, Donald. You have plans to go to college? Sure. I'm going to be a doctor. You mind me asking why you're out to kill him? He's responsible for Jamie's death. So he has to pay for it. Jamie? My brother. He's too... I mean, he was two years younger than me. How did he die? He drowned. I don't want to talk about it.  He got cramps. He yelled. He could have been saved only... only he was too busy swimming to pay any attention. By the time he looked around it was too late. And you blame him for that? Yes. He's got to pay. Suppose it had been the other way around. Would you blame Jamie? You know how it is when you're swimming.  It's easy to forget about the guys with you. I didn't have forgotten. No, but he didn't forget deliberately, did he? No. Will killing him bring Jamie back? What are you asking me so many questions for? Will it accomplish anything at all, Donald? Maybe it'll give me some peace. Is that what you want most? Yes. Killing him will only make you feel worse. You'll be a murderer then. Is that what you want? No. You want to be a doctor. That means saving lives, Donald. Not taking them. Start with giving back his life. That's the only way for you to find peace. You... you believe that? The Bible says, judge not, lest ye be judged. I don't think a guy like you could go through life with a secret like that on his conscience. I just want some peace. Then try it my way, Donald. Forgive him. He's suffered more than you'll ever know. How do you know? I'm his friend. He's a very decent guy. I wish you could know him as I do. What about Jamie? If he could, I think he'd say the same thing. He doesn't blame him. It was an accident. Try it my way, Donald. Will you, Donald? I'll try. Can you hear me? It's me, Paul Neiman. How do you feel? As Evans would say, Jim P. G. Dandy. You had an accident. It's over and done with. You're going to be okay. I'm funny, Paul, but I feel... burden's off my back. No, not at all. Sure it is. If it happened to me, I know... I know it was no accident. That letter, I'll try again. No, he won't, Doc. Because you see, we found him. From now on, I don't think you'll have any more trouble. To crank the letter written for suspense by Water Black. In a moment, the names of our players are the word about next week's story of suspense. Kellogg's All Brand helps put you back in tune. All Brand is the natural way, the good food way to end constipation caused by lack of bulk in your diet. There's only one All Brand. Kellogg's All Brand. It's whole brand content, gentle's away constipation, supplies your system with the bulk forming food you need. Kellogg's All Brand is the only whole brand cereal to bring you the combination of proved effectiveness, appetizing taste and Christmas. It never gets mushy and milk. So get back in tune and stay in tune. It's easy with the one and only Kellogg's All Brand, A-L-B-R-A-N. Safe, reliable, pleasant. Millions enjoy it every day. They know they can count on Kellogg's All Brand to relieve irregularity. Heard in tonight's story were Lyle Pseudrow as Dr. Donald Fraser, Les Damon as Lieutenant Neiman, Phil Meeder as the young Donald Fraser, and Larry Haynes as Fred Gilbert. Listen again next week when we return with Lieutenant Langer's Last Collection by George Bamber, another tale well-calculated to keep you in suspense. On CBS Radio.


Hey, this is Brett and this 2020 Chevy Silverado 2500 Crew Cab Short Box LT1 Z71 is stock number 12502 ZA. We're here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used heavy-duty truck headquarters. This 2020 Chevy Silverado 2500 has the 6.6-liter V8 gas engine. It puts out 401 horsepower. This truck has been fully safe and inspected by our service shop. It has a fresh oil and filter change. All the fluids have been checked and topped off. This truck is 100% ready to go. We're going to go inside underneath, start it up, and look all the way around on this truck in this video. Summit White is the color and we shoot all of our videos in 1080p 60 frames per second. So if you have HD capabilities on your computer, tablet, smartphone, or television, I highly recommend turning them on right now because it is your best way to check out the quality, condition, and options of the vehicle before seeing it in person. And if you like the video on how we do things here at Summit Automotive in the upper right hand part of the screen is a subscribe button to our YouTube channel. Click that and then click the bell notifications and you'll get updates every time we do videos here at Summit Automotive of our new and used inventory. It comes with the 20-inch painted and polished aluminum rims. It's probably one of my favorite rims on the Chevy's. Goodyear Wrangler Trail Runner AT tires. These are LT275 65R20s and these tires have right around 50 to 60% of the tread left on them. Frame and underbody looks really good. You can see it does have these Rancho shocks which are part of that Z71 off-road suspension package. Front fender is in great shape. Didn't see any dents or dings on there. It does come with the LED fog lamps. Front bumper is in excellent condition. I didn't see any dents or dings on there. Headlight lenses are nice and clear and the grille is in nice condition as well. I didn't see any dents or dings on the hood and it does come with the cab lights up top. Passengers side front fender, no dents or dings on there. And the passenger side rim is in excellent shape. As you go down this side of the truck, take note of 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 but you're still interested in purchasing the vehicle, you can see the truck here, the truck end of confidence in the vehicle that you're looking at before you even get here. So when you do get here, there's absolutely no surprises. You can make a smart buying decision from wherever you're at. And if this video helps you make that decision, let your salesman know that you saw the video that it was helpful and that Brett sent you. The back rim is in nice shape as well. And the back tires have just as much tread as the front tires. Frame and underbody is in really nice condition. You can see as the felt wheel well liners which keeps your frame and underbody looking this nice and clean. And it does have all the remaining factory exhaust so it hasn't been altered. And the lower rockers and cab corners all look really good. It comes with factory painted step bars. You get side box steps. Very nice down that side. Coming around to the back, the rear bumper is in great shape. No dents or dings on that. It does have the rear bumper steps. Full towing package which includes a receiver hitch four pin and seven pin wiring. The tailgate is in excellent condition as well. Does have a locking tailgate power drop down tailgate.  And in the bed has a shock down assist as well so it's never going to slam down on you. And in the bed we have a line X spray and bed liner and a Kurt 20,000 pound sliding fifth wheel. LED bed lighting back here as well. And the bed is in very nice clean condition. Tailgate shuts solidly and as you go down the driver side just as clean as that passenger side. No dents or dings on the box. And for full disclosure this back rim is in excellent shape as well. Down the rest of the side of the truck looks really good. Does have the telescopic tow mirrors built in directional signals. They telescope out like so. They also fold in. Inside the LT1 package gives you the black cloth interior. There are no rips. There are no tears on the seats. They are in very nice condition. Smells very clean inside this truck. You do get a power driver seat factory all other floor mats. Auto headlamps. Push button four-wheel drive, fog lamps, cargo lamps. All that good stuff. Power windows, power locks and power mirrors and you get the wood grain trim on the doors there. We'll hop inside. Take a look at the miles radio and everything this truck has to offer on the interior. 19,195 miles on this truck. Get a compass display as well. Instrument cluster is very nice and clean. Comes with the heated leather wrap steering wheel. Bluetooth and information center controls on the right cruise controls and heated steering wheel controls on the left. Six speed automatic transmission with the optional tap shift. This one comes with the Chevy infotainment system and FM radio. Bluetooth capabilities as well. And if you go into your home screen here you can do Apple CarPlay and Android Auto. So you can project your cell phone to the screen. So if you have a nav system such as Waze or Google Maps project it right to the system and radio and you can use it through the radio. So that's pretty cool. And then you have your backup camera here. I think the truck has to be on for that particular function to work but I'll show you that once we turn on the truck.  Get a 12 volt power point there. Carpeting and passenger side format are in excellent shape and you do get the dual glove boxes there. Passenger side seat looks really good and the headliner is in very nice shape as well. You do get map lights on star and SOS buttons up there as well. We'll take a quick look at the back seats and then we'll start it up. Take a look under the hood. Check out that backup camera. Back seats are just as clean as front seats. No rips or tears back here. It does have the latch child safety system for any child car seats you may have. Rear window defrost. No rips or tears has almost completely flat floor back here. All weather floor mats and you do get two USBs and 12 volt power point back here as well. Child safety locks on the back doors. Bottoms of the doors all pretty good. And we'll start it up. Starts right up. No check engine lights or anything like that. There is your backup camera and yes you do have to have the truck on for that to go. I would personally like to thank you for checking out the video today and hopefully from this HD video you will have been able to verify the quality and condition of this truck all the way around inside and out. And under the hood we have the 6.6 liter V8 gas engine. Engine bay is very clean, runs very smooth. Once again this truck has been fully safety 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. There is your emissions sticker.  And I would highly recommend this truck from a quality and condition standpoint and to see more pictures of this truck or one of our other 450 new and used cars, trucks, SUVs, minivans, wranglers, half tons, three quarter tons, one tons. You name it we got to go to that website right there www.summitauto.com full pictures and descriptions of every single vehicle from two locations all at summitauto.com. And if you'd like to check out more HD videos you can go to youtube.com slash summitauto. Remember to like subscribe and share on this video and all the videos that you see there click the bell notifications you'll get updates on the videos we do each and every day here at Summit Auto. In fact in a second you will see a link to subscribe to our YouTube channel the upper left a link to more Chevy 2500 truck videos like this one the upper right a link to this vehicle on our website in the lower left and a link to one of our latest YouTube videos in the lower right. Click those check us out and we're super excited to help you with this ultra clean 2020 Chevy Silverado 2500 crew cab short box LT1 Z71 in summit white. Thanks again for checking out the video remember to like subscribe and share


And Senators Sariman Osumbo, one of the governorship aspirants at the just concluded APC primary, held on the 17th of February across the 18 local government areas, and three, seven, four words of Edo status insisted that the outcome of the primaries is a sham. The governorship aspirant made these known after submitting his petition on the sham election that took place in Edo state to newsmen and party sympathizers at the party headquarters in Abuja. Primary elections took place in Edo state. Primary elections don't take place in a hotel. Primary elections take place at the designated points in each of the 192 words of Edo state. I have seen the statement credited to the resident electoral commissioner that the primary he witnessed was the one that took place in a hotel in Edo.  Is that how they conduct direct primary elections? You answer it. So that is a self admission that direct primaries were not conducted in accordance with the law, the guidelines, the APC constitution, the electoral act. What you saw was not conducted in accordance with the provisions that was only one clause as status because has confirmed that the only one that took place in a hotel in Benizete, there is a self-impactment. While calling on the leadership of the party to save the APC from national embarrassment, Senator Osumbo expressed surprise over the announcement of 60 votes for him over a primary that was never held in his ward by a faceless returning officer. Do you know that the election is a national matter? It is a matter for the national working committee, it is not a state election. So everything concerning this process has to be done from here, the national secretariat of Benizete. Wednesday 21 February has been fixed for the hearing of all petitions arising from the outcome of the primaries.


Welcome back to Tennis Talk, my name's Cam Williams, and we have the final event of the regular season for the ATP this week. The Stockholm Open was actually cancelled last year due to COVID, so it's back after two years' absence. And we've got a lot of young players playing in this event, but some big names have also pulled out, so let's go to the withdrawal list. So this is a very long withdrawal list. Basilashvili, he's out. Diminor, Dimitrov, Garin, Umbair, Hercatch, Karatsev, Monfice, Nori, Rudd, Schwarzman, Senego, and Zverev have all pulled out of this event. Most of those players are the ones who have actually qualified for the ATP final, so they're not playing this event, so they can get ready for next week. Alright, starting at the top of the draw, we have eight seeds in this one, and the top four seeds get to buy in the first round. Yannick Sinner, he is the number one seed of this event, and he gets to buy in the first round. He awaits the winner of Murray, the wild card taking on a qualifier in the first round, and again, Murray just can't catch a break with these draws. He's always playing the top seeds in these small events, but hey, who knows? Maybe he can get the win over Sinner if he makes it through the first round. Then we've got the wild card Leo Borg, who, yes, is related to Beyond Borg. He is the son of Beyond Borg, so very fun to watch him. He's taking on Tommy Paul in the first round. Winner of that match takes on either a qualifier or the number five seed Fritz in the second round. So a lot of players to watch out for in this one, actually, probably everyone is worth watching, because Sinner, great form, Fritz is in great form, Murray's a veteran. Tommy Paul's been in pretty good form as well, and Borg, the son of Beyond Borg, that'll be interesting to see how he does. So pretty much watch everybody in this part of the draw. Going to the second part of the draw now, and we've got Evans, the number four seed. He gets to buy in the first round. He'll take on the winner of Fakina versus McDonald, who are going at it in the first round. Then we've got Martinez versus Russavari. Winner of that match takes on either Ema or the number eight seed Tiafo in the second round. So the players I'm watching out for in this one, you've got to watch out for Evans, but the big one is Tiafo. Watch out for him, because he's been in great form in the last couple of weeks, made the final of Vienna only a week ago, beat City Pass along the way, so definitely got to keep an eye out for Tiafo, especially in the top half of the draw, with a lot of really good plays at the very top of the draw, but he might be able to make a semi-final if he can put some matches together, and the way he's been playing lately, he should be able to make the semis. Bottom section of the draw now, and we've got Bublik, the number six seed. He takes on Rindanik in the first round. Winner of that match takes on either Gowacek or Giron in the second round. Then we've got two qualifiers going at it. Winner of that qualifier battle is going to take on the defending champion for 2019 in the number three seed, Dennis Shapovalov, and we all know Shapo hasn't been in great form since Wimbledon, but maybe this is the chance to finish off with a really good result in a tournament that he is the defending champion of. So we'll be watching out for Shapo this week. He's the biggest name in this part of the draw that I'd be watching out for, and he is the defending champion. And the bottom section of the draw now, we've got the number seven seed, Fuchovic. He takes on Manorino in the first round. Winner of that match takes on either Vandezanshu or Thompson in the second round. Then we've got Bayano versus Krianovic. Winner of that match takes on the number two seed, Felix Ojaliasim. So watching out for FAA in this one, he is still legitimately a backup for the ATP finals. If he wins this event, it would be his first title. That's one thing, but also he would be a reserve for the ATP finals as well as Sinner. So big points on the line here, not just to get his first title, but also maybe play the ATP finals if there are some injuries in that top eight. So FAA, if you want to have a good week here, and he's got a pretty good draw. But remember, he will most likely be paying Shapovalov if both of them make it to the semis. But based on form, those two guys aren't playing great lately. So who knows who's going to make the semifinals in the bottom half. So there it is, the Stockholm Open. We didn't get it last year, which was a bit of a shame. But we have it back this year in 2021, Shapovalov, the defending champion. He is in the bottom half of the draw. He hasn't been in great form lately, is this his chance to finish off with a really good result. And of course, the Davis Cup is coming up for those guys like the Canadians, Shapo and FAA. So maybe if they can get some good results this week, it'll help them in the Davis Cup in a couple of weeks time. But let me know down in the comments below. Who do you think is going to win this event? Because it's pretty wide open, maybe Sinner is the obvious choice. But who knows, last match of the season or last tournament of the season, it's anyone's guess. So taking a look at the draw here and I'm going to go with Tiafoe. I think he's had a great couple of weeks and in a draw where, you know, the names aren't as big as, you know, the top 10 players like Sverev and those kind of guys. I know Sinner's top 10 technically right now. But I think Tiafoe might be able to sneak through the draw and finish 2021 with a win. He's been in great form lately. He's going to have to get through Sinner in the semifinals potentially, which will be tough. But who knows, Sinner might lose to someone like Fritz or Murray in the first couple of rounds and give Tiafoe a little bit of a break and get to the final. So Tiafoe, he's my pick to win this whole event. Let me know down in the comments below, who do you think is going to win the last regular season event? To the ATP, it's coming to a close with the Stockholm Open being the final event of the season for most of the players.


Welcome to nursing school explain in this video on lifestyle changes that can help to reduce blood pressure As we know hypertension is a very common disorder in our society and there are many ways to treat this but the number one thing We should always recommend to our patients our lifestyle changes because not only do they help reduce blood pressure Intern they also help reduce many of the complications and other bad things that can happen in association with blood pressure So let's look at this. I've listed them out in a table form here in lifestyle Modification and then the possible reduction in the systolic blood pressure, which is absolutely fabulous Because it saves the patient from maybe having to go on blood pressure medications If it's just slightly elevated or it might help to minimize the medications They need to be on because let's keep in mind every medication has side effects And if we can just treat it by my lifestyle modifications We might just be able to treat the patient without or with just minimizing the blood pressure medications They need to be on and those are all lifestyle modifications that occur or that we can modify to reduce the risk factors And if you watch my video on hypertension that I'll link to right here in the card section you can see those risk factors and then you can make the link as to why it's important to Modify these lifestyle changes these lifestyle habits So first of all weight management being of normal weight is very important because we know that obesity and overweight cause Epidemia and Therefore if they can lead to hypertension so a weight reduction in 10 kilos, which is 22 pounds Can possibly lead to a systolic blood pressure reduction of 5 to 20? Millimeters of mercury so a significant reduction here, and this is really the most important factor and with the most Decrease possible decrease in systolic blood pressure Now secondary we have this thing called the dash diet. You've might have heard of might have heard about this before It's called the dietary approaches to stop hypertension And what that means is we need to stay away from processed foods the more Closely the food comes from its sources the more the fresher the vegetables are the darker the greeny the leafy greens are The better it is so the less processed the food is the less packaged foods We consume the more closely it comes from the farm itself The better it is for us and that includes a good variety of vegetables and fruits an important aspect are also whole grains such as Brown rice and all the legumes such as beans and lentils And really mostly what the research shows now at that that a mostly plant-based diet Benefits patients to reduce hypertension and all these other cardiovascular risk factors. So we also want to minimize dairy products as well as processed cheeses and Then meats and fish and if you consume those make sure that you consume those from a Reputable source where hopefully the animals haven't been treated with antibiotics and growth hormones and Where it's safe to consume that but also we want to keep that in moderation. So most of those dietary Changes or most of the diet that we consume should come from natural sources It's always better to eat vegetables that are fresh rather than coming out of a jar out of a can or being frozen before Those are always have always have the most nutritional value and then and these dash Dietary changes can reduce the systolic blood pressure by 8 to 14 millimeters of mercury which also is significant Then thirdly Reducing dietary sodium definitely helps Typically the recommendation is we need about 2300 milligrams of sodium per day, but for somebody with hypertension They really should stick to a less than 15 milligrams of sodium per day And that really goes hand-in-hand with the dash diet because if we consume fresh Food then we don't have all the preservatives that many times are high in sodium and therefore we just eliminate the sodium just by simply Consuming fresh goods and if you really start reading food labels, which is super important to do you can see the sodium content of One serving of whatever food you are consuming and you'll be surprised by what items contain sodium and by how much it is per Serving sometimes a serving can be a cup Sometimes it can just be a tablespoon and the sodium contents vary greatly and just keep in mind that if you consume three tablespoons Of a certain product then you have to multiply the sodium content and really everything on that food label by three And you if you really start paying attention it adds up quickly So the more we can stick to natural foods the more the less they processed are the less sodium content They also have and this can lead to a reduction in blood pressure of two to eight millimeters of mercury which are also quite significant Then fourthly here moderate alcohol consumption because alcohol is a risk factor for hypertension And in general and I didn't make this this is the recommendations from the scientists that the studies have shown over time It's two drinks for per day for men and one drink per day for women per day, let's add this here per day and a drink typically Consists of 30 milliliters or one ounce of spirit So that would be hard liquor or 12 ounces of beer or a regular small-sized glass or five ounces or a small glass of wine And keep in mind that although it says per day We should always discuss that only because for a man for example, you could have two drinks per day so two beers per day You can't save them all up and then have 14 drinks on a Saturday when you go out So that is very important to mention. It's kind of funny that we have to mention that but that could certainly Be a contributing factor to somebody having a problem with too much alcohol consumption and if we keep Alcohol consumption to moderate levels. We can reduce blood pressure by two to four millimeters of mercury Which is also really nice and significant and then physical activity as a big one here That'll help with both weight management and also eating better will help with weight management and then physical activity The recommendation is 30 minutes on most days of the week and that is moderate Activity where you break in this in a in a moderate sweat. You don't have to do You know marathon training just a brisk walk around the block for at least 30 minutes Most of the week most days of the week or whatever exercise it is that you prefer Swimming biking Yoga any kind of activity you can really think that makes you happy that Also will help you with compliance and get into it on a regular basis But 30 minutes of exercise on most days will help to reduce blood pressure of four to nine millimeters of mercury So also very significant and then here two other things Avoiding tobacco because we know that tobacco also leads to hypertension. So helping patients stopping That tobacco consumption, but maybe helping them with nicotine Patches or gums or whatever it is that's going to work for them to stop that habit And then manage psychological risk factors such as depression anxiety stress and isolation Because for those two we don't really have any Numbers that we can put on as to how it can help reduce systolic blood pressure But we know that stress and anxiety and overall Mental poor mental health can also lead to hypertension because it just increases our stress so if we can manage the psychological risk factor as well by again physical activity eating well talking to somebody when we have problems and Really taking care of our mental health. It will also benefit in reducing hypertension So now if we look at all these lifestyle Modifications and what they can do to possibly Reduce the systolic blood pressure if we add these up if we do all of these and we adhere to them We can possibly reduce the systolic blood pressure by 21 to 55 millimeters of mercury and that is Significant and that can be done without any kind of medication. So that's why we should always recommend this first to our patients to see if we can Manage their risk factors as well as the hypertension with lifestyle changes And if you really think about it the recommendations now are for a systolic blood pressure to be less than 120 So if a patient has a systolic blood pressure in the 140s consistently really they would only need to reduce it by about 20 to 30 points and So it can easily accomplished by a combination of those and they might not fall exactly in these ranges But certainly we could get to the goal of the systolic blood pressure less than 120 with just lifestyle modifications Now as to the recommendations the current recommendations for blood pressure guidelines Please see my other videos where I discussed a sprint study where the research was done and to determine what numbers of hypertension are Considered dangerous and when we should start managing our patients and I'll put the video link up right here So you can refer to it later. So thank you for watching this video On lifestyle changes for reducing high blood pressure Keep in mind that these are pretty simple to attain which is to really have to encourage our patients To do these things that will help them not only manage their blood pressure, but also their mental health overall Feel better reduce their risk factors for heart disease Stroke effects on the kidneys on the peripheral vascular, their eyes and all those bad things that can occur with Undetected or blood pressure that is out of control Thank you so much for watching this video. Please also check out my other videos I'll put them in the description below So you have easy reference and I'll see you soon right here on nursing school explain. Thanks for watching


He broke down and his site is thefriendformula.com, I want to give him credit because I love this. He basically broke down a conversation and conversation skills is one of the hardest things to teach because it's just so abstract, right? You're in a conversation, you're trying to be present, you're focusing on the girl, but where are you during that stage, right? Like how do you know where, how you're doing, how do you know what's going on? So what happens in any normal conversation? It's between a man, a woman, a man and a man, random people, people you haven't seen for a long time. You start with cliches. How's the weather, you've been here often, how's it going, what's good bro, right? Normal cliches, when you open any conversation, what do you do when you pick up the phone? How are you? What's up? And if they respond, oh I'm not good, things are really, really bad actually. Thanks for asking. You're just like, whoa, we're not there yet, I was just saying hi. You're jumping the gun, so what needs to happen after cliches is then you exchange some facts, right? So you're talking to a girl at the bar, hey, how's it going, you come here often, all the lame cliché lines, cool, where are you from, what do you do, oh yeah, I live over here. I'm from San Diego, I'm from LA. And then you start sharing opinions, oh yeah, so you're from San Diego, what do you think of LA? Oh, I like LA, it's cool, it's kind of the same as San Diego, it's bigger, it's more spread out, different club scene, and I'm like, yeah, actually LA is cool, but San Diego sucks, it's Man Diego, and I go into that whole spiel, right? And then eventually we start sharing feelings, right? Drivers behind how we feel about things, you know, I really miss growing up on the East Coast, you can talk about childhood things, but if we skip this stage, if we go straight from cliches to feelings, like if you walk up to a girl and be like, hey, how's it going, nice to meet you, she goes good, and you say, tell me about your childhood, gonna get some weird looks, right? Or if you kind of just jump in the other way, if you go real directly real quick, because a lot of the things that we're taught is we need to connect, we need to share our emotions, and that's true, but you have to follow the stage, even with people you haven't seen in a long time, that are your friends. You know, you can quickly kind of dive in, and someone who's like your best friend, right? I could just call him up and I could be like, dude, I just got through a terrible, going through a horrible breakup, I'm crying all the time, help me out, right? You have that closeness, but if you don't, you know, follow this in conversation, you can always kind of know where you're at.  And we connect through our feelings. So if, you know, she has to feel something from you. If she walks away from that conversation, knowing a bunch of facts, but she doesn't feel anything, you're probably not gonna see her again. Even if you get her number, she's probably gonna flake. Cuz she needs to feel, we don't remember what typically happens in conversations, like, you know, what I'll do sometimes is I'll write down facts about her in my phone as notes right after the interaction, just so I can use that as callback humor and stuff when I text her, and that'll give me some points, like I was actually listening. But so often, I'll have a conversation with a girl, I'll remember almost nothing. But I'll remember feeling this amazing bubble, cuz it was just me and her, everything else in the space kind of disappeared. We had that connection, I felt good, she felt good. And the truth is, none of the conversation actually matters. What matters is the feelings.