Good afternoon, everybody. Thank you for coming out. I'm surprised any of you are here since everyone's eating right now. So I see a couple of you eating in the audience. I'll allow it. I'm here to talk to you today about what's coming out of the DreamHost Labs and kind of an update on DreamHost products and services. By way of introduction, my name is Jonathan LaCour. I'm the vice president of Cloud at DreamHost. And I've been there about three years now working with OpenStack and Ceph and various other open source projects to create some great services. So if you haven't heard of DreamHost before, we're about 16 years old, which in internet time is quite an old business. We were founded as a web hosting company. We have over 400,000 customers, very broad mixed base of entrepreneurs and developers. We also have entered the cloud space, and we have a huge open source focus. We host over 750,000 WordPress sites, 1.5 million domain names. Lots of internet traffic comes through DreamHost. And we're huge contributors to Ceph, Solometer, Neutron, Oslo, a bunch of other projects as well. And we actually were the creators of and incubators of Ceph for many years, one of our co-founders, Sage Weil created Ceph, which is the storage solution that many of you guys know about. We're also a founding member of the OpenStack Foundation. And we've been involved in the OpenStack project since right near the beginning of the project. Simon Anderson, our CEO, is on the board of directors. And we're heavily involved in the community. So what I'd actually like to do is give you a quick context for the project I want to talk to you about today by talking a bit about two other projects. So first is DreamObjects. DreamObjects is our cloud storage product. It's S3 and Swift compatible, and it's built on top of Ceph. As I mentioned, one of our co-founders created Ceph as an open source project. We incubated it for many years, developed it, helped it become production-ready, and took it to market. It's completely compatible with S3 and Swift. And we even have a content delivery network from Fastly integrated that we call DreamSpeed CDN. It's taken off pretty well. Lots of applications out there for users and users who don't want to use necessarily the APIs. And many of you may know that a couple of years back, we created a company called Ink Tank, which we spun out of Dreamhost to incubate and continue to develop and provide services on top of Ceph, the open source project. And that went spectacularly well for everyone involved. And now Red Hat has taken ownership of Ink Tank and has done a wonderful job continuing to steward that project. And that brings me to Dream Compute, which is our open stack-based public cloud. It also is built on Ceph for block storage. We use KVM for our hypervisor and the latest and greatest versions of open stack. Or not quite the latest and greatest, but we're getting there. We use Cinder and Ceph for block storage. And we get lightning fast boot from volume support as a result. So you can create a virtual machine and have it spun up and available to SSH in 45 to 60 seconds, which is pretty quick. That's thanks to the copyrighted technology in Ceph itself. But we also have some really interesting networking technology. And that's really what I want to focus on today. I'll talk to you a little bit about our virtual networking. When we created Dream Compute, we really wanted L2 isolation for every tenant. But we also wanted IPv6 support. And we wanted sophisticated routing. And we wanted all the features that people are going to want going forward. So we created a project called Aconda on top of Linux and IP tables and some other technology. And integrated it with OpenStack, and integrate with VMware NSX, which is what we use for our L2 network virtualization. And I'll talk a little bit more about that in a moment. DreamCube's architecture is also open. We are more than happy to share with anyone who's interested, what our hypervisors are like, what the storage nodes are like. We use 10 gig networking everywhere with white box switches powered by Cumulus Linux, which is one of our partners. Cumulus Networks is here. You should go talk to them about that. It's a wonderful solution. And if you were interested in trying out DreamCube, you can try it out today. Just go to our website and sign up. Note that if you are using an American credit card and signing up from Paris, you may be put in a pending queue because it might look like fraud to us. But just let us know and we'll let you in. We have plans starting at $19 a month, 30 day free trial, as I mentioned. But let's talk about Aconda. This is something we're very excited, just like we did with Ink Tank. And spun out to support Seth, we're spending out a new business called Aconda. And we're announcing that today. You may have seen the press release. At our booth, E30, we have the CEO of this new venture. And I'll be there as well. I'm an advisor for the business. But really, it's all about the open source networking and open source network virtualization. And it's production ready, open source network virtualization for cloud service providers. So this is the technology that we are using in DreamCube today to power all the L3 Plus network services inside of DreamCube. And critically, it supports both V4 and IPv6. We really felt this was a strong and important need. As a smaller provider, we don't have a huge bank of IPv4 addresses to just burn through. And we think that obviously IPv6 is the future. So we wanted to be there and ready today. Aconda is built on Linux, Python and OpenStack. It uses IP tables under the hood. We actually spin up service virtual machines and wire them all together and configure the IP tables automatically through APIs. And we're developing additional services on top, including load balancing firewall. And we're also making the backend pluggable to allow for alternate L2 backends. So if you don't want to use VMware, you could use something else. You could use a physical, pure physical. You could use a different overlay. We're talking about open daylight and several other things as well. So here's the general architecture of Aconda. Essentially, Aconda provides these virtualized services, these virtual network services, routing, load balancing firewall, and many others. The sky's really the limit because it's just software. We're just talking about Linux here, these appliances. The real sophisticated part is this rug orchestration system that we built, which monitors the health of these different appliances that are running inside the OpenStack cloud and wires them up properly to the underlying L2 backends and via the OpenStack APIs, and monitors their health and ensures that they're working properly. And then we have, as I mentioned, other pluggable backends, NSX and several others we're working on all the way down to the physical network, which in our case, we're using cumulus networks with white box switches. And the rug, the way it operates is it actually integrates directly into OpenStack, monitoring messages that come out of all the different subsystems, compute, and networking specifically. And then it reacts to those actions, such as floating IP association, network creation, network destruction, virtual machine boots, router creates, so on and so forth. And it actually then orchestrates the creation and configuration of these service VMs. And I'm actually going to get into a lot more depth about Aconda. Tomorrow, in amphitheater blue at 2 o'clock, we have a full session where we're going to go do a deep dive into the technology and see if anyone wants to get involved with us to make it a really great platform for open source network virtualization. So if you're interested, you can go check out the website at aconda.io. We have some information about how you can sign up for the newsletter, find out a little bit about the technology itself, a link to the GitHub, where we have all the source code. And yeah, we'd love to talk to you about it. And I want to give you back as much the time as possible. I'm going to be short today and have that be it. So thank you so much. If anybody has any questions, you can feel free to shoot them my way as well. Happy to answer questions. All right. See you all at 2 o'clock tomorrow at amphitheater blue. Thanks.


Okay. Well, I think that's close enough to 11.30. I'd like to welcome everybody to the last session before lunch. Everybody will be on edge and ready to pounce. My name is Stan Shubbs. I work for Mentor Graphics, the so-called Code Sorcery Division of Mentor. Mark Mitchell's company, which was bought a couple of years ago and absorbed into Mentor's embedded software division that includes accelerated technology guys and a bunch of others absorbed companies whose names I don't remember. Actually, most recently, we have picked up Montevista's automotive Linux guys, taken them off Cavium's hands because really, Cavium's a networking company didn't want to do automotive. Anyway, I'll talk a little bit about GB work that's been ongoing and gradually progressing from the things that actually work to raw dough that your mother warned you not to eat. So, just as a start as a background, GB GNU debugger has been a part of the GNU system since around 1986 or so, when it actually first appeared as a sub-directory in the GNU-EMACS distribution. We don't actually have much history going back that far because no one actually had source control or kept very much track or even said anything about what they were doing just showed up. It originally was just set up to be a native debugger for Unix-type systems got early on extended for cross debugging, and since gone through a number of major redesigns and rewrites. Target Vector, which I'll talk about more in a bit, is abstraction for the back end, objects to represent the frame, stack frames, GB Arch to represent target architectures as objects rather than piles of macros as is familiar even today for people that work with GCC. In fact, just as an amusement, a couple of times I've done a diff of the lines from an earliest version of GCC to nowadays and there's literally just a couple of pages worth of lines that are actually still the same and so pretty much everything has been worked over. It's been the default debugger for Linux since forever. There is a work on an LLVM debugger called LLDB and it's a possible successor needs regular patching to be made to work on Linux. Apple uses it as their default debugger now as part of Xcode. But unsurprisingly, Apple is not quite as energetic about maintaining a Linux port. So just a quick review of the overall big picture of how it's put together. At the top we have the different user interfaces, command line interface, the machine interface, which is kind of a more heavily sugar version of the command line interface that Eclipse uses. GB, TK, Agui, and TUI, which is a terminal user interface, which is a curses based interface. On the one side, we have the so-called symbol side, and this is all symbol table handling. The BFD is the main intake library. This is what actually knows how the object files look, and it dumps basically blocks of raw symbol data into handlers for different file formats. At this point, pretty much Elf is really the only live one. There used to be a lot more. Then also an add-on for the symbolic information, which is kind of an M by N with the symbol information often not entirely. So in theory, you could have ADOT out format with dwarf information and weird stuff like that. In practice, really, mostly what people do nowadays, it's Elf and dwarf. On the other side, we have the specifics of how you interact with targets. So for instance, Linux NAT is the code that does Linux native specifically. exec is short for getting information out of executable. So for instance, if you wanted to read a initialized variable before running a program, you can, you just print the value and it digs it out of the executable treating it as if it were a target system, similar for core files. There's a whole bunch of other protocols for across debugging, but the star of the show is remote.c, which has never been given a name. It's people will say the remote protocol or RSP or whatever. Actually, a lot of times I just call it the remote.c protocol because that's the file it's from. Maybe that's the default remote debugging protocol, and then it has a lower level that can go through TCP or Unix or whatever. Then on the target side, if you're not talking to the target directly somehow, there's a GDB server that is very often used in the embedded Linux case, where GDB server sits on the target, and it does the target side of the remote protocol. The other pieces, we have a collection of languages. The language support does parsing, that sort of thing. And then GDB arch objects, which define things like, what's the byte pattern of the trap instruction? How do you take apart a prolog? How do you interpret a stack frame and so forth? And then finally in the middle is the execution control, and this is what actually implements the algorithms that are at the heart of debugging. So to take an example, the single step process. Single step at an instruction level, it basically goes straight through. You say step i or si, and it basically sends a single command to the target, and then the target does whatever is target specific to single step. For instance, the Linux native that amounts to a single ptrace call. But to say single step by source lines, there's actually an iterative process, a single step by instruction, reads the PC back, goes back to the symbol table and says, is the PC now pointing to a different source line? If it points to a different source line, it says, oh, I'm done with single stepping. So that's actually one of the reasons that the single stepping optimized code is funny, because the compiler has taken the single source line and scattered bits of it all over the program. And so the GB algorithm just blindly says, oh, it's a different source line. Not realizing it was actually the same source line you ran a moment ago and just jumped you back there. So that's the execution control is all about those kind of algorithms. So the target system trends, as we saw yesterday, lots and lots and lots of Linux targets. We're up in the probably over a billion out there now. It goes everything from the low end, the phones, the tablets, the gadgets to the middle end, which is these automotive systems, infotainment systems, which are more or less desktop sized, but they're not actual desktops. And then we have the high end, the backbone switches and compute farms and so on that are pretty big iron. And desktop, yes, all the enthusiasts have desktop Linux and nobody else does. So coming down to the multi-core aspect of it, right now, two to 16 cores is pretty commonplace. Different people have different numbers of cores. We go around the room and look at everybody's laptops. There's anywhere from two to eight desktops will have more. In the lab, though, as with Activa, Teller, and so forth, there's quite a few higher numbers of cores being experimented with. And I didn't, there's actually some thousand core systems that have been kicked around, although some of them cheat and they're actually like hyperthreaded for a thousand threads and it's really not that many, not quite as many physical cores. This has some implications for debugging. Because you have a lot more stuff going on in the target, a lot more stuff going on simultaneously. And there's a number of approaches we could take to this. One approach is to do nothing. You say the kernel conceals the fact that there are multiple cores, it allocates the threads to the cores in whatever way it feels like, and GB already knows how to do threads and Ptrace does the hard work of connecting the threads to the debugger. So you're good. This isn't necessarily a great approach, it starts to break down as the number of cores increases. One of the things that can happen is you have an application that has core affinities. So you'll have threads that are actually allocated to specific cores and you could have a situation where say there's a bug in the system and the one core is being good and the error core is being flaky. And it's the fact that the threads are on particular cores is where the root cause of the problem. There's also designs that we saw a couple yesterday that people were putting up on the screen showing heterogeneous cores where they may all be arms but you have like A4s as a sort of a compute fabric and then an A9 as a main processor. So another thing where the thing that starts to happen is as you have many more cores you can have many more threads than you had before. And so another approach that we'll talk about in a little bit is to generalize the commands to operate on sets of threads or sets of cores rather than one at a time. And then finally in the most extreme case we can start shifting work to the target. So instead of having the host GDP have to do everything and have an immense amount of traffic going to and from it the to shift that somehow get it off the network and get it onto the target somehow. And I'll go more in a little bit about what all that means. So as the illustration of what's going on here so in a single core system with a bunch of threads what's really happening it doesn't overwhelm the debugger even if you have a lot of threads because ultimately everything is running once at a time. And so the X's here indicate breakpoint hits that even if you have the breakpoint that's all the threads hit the breakpoint is really still only being hit one at a time and there's a little bit of interval between one and the next and it could even be long intervals if there's other activities going on. Plus which if GDB is running native on that system some of the gaps in between this reds running is where GDB itself is being swapped in and is essentially throttling the rate at which the breakpoints are hit. But if you have a four core system you know those breakpoints could all be hit literally simultaneously so now you have four requests for breakpoint handling showing up to GDB at exactly the same moment. And you know what do you do about that? You end up with a, you can end up with sort of a congested system all wrapped around with GDB as the bottleneck. So the first thing that this is in the category of something that actually already works is to only try and operate on one thread at a time. The old GDB behavior was to stop the entire system and if you think back in 1986 there wasn't a whole lot of thread programming going on. So the entire process was brought to a halt and you stepped and then brought it all to a halt again. And this sort of generally works for threads except for all the real time threads that time out because you're sitting at a breakpoint. So several years ago we introduced this nonstop mode where you can leave a number of the threads running and just start and stop an individual thread. You can still ask to interrupt all the threads, you can still ask to just stop one thread and then continue all the others and so forth. So this has been available for some time. I don't know how many people actually use this or have used this mode. Yeah, I had a feeling it's not been widely advertised. The way it works is you can't do the usual dance of removing the trap instruction for the breakpoint reinserting it because even if it's only one instruction that you're single stepping past, if you have a whole bunch of other threads running through they could all sort of escape and get past the breakpoint at that moment. So we added a backend thing to GDB to do the so-called display stepping. So the way that works is we leave the trap instruction in place, but the instruction that was overwritten, we copy it over to a different location. We modified if it's at all position dependent and for instance say a relative memory reference. And then after that there's a jump back to the following instruction if necessary. If the instruction being written over as a jump instruction then we just modify the target of the jump. So this allows the trap instructions to stay in place continuously and to catch all of the hits. So the user interface for this multiple thread situation is still basically a one thread at a time kind of operation, even in nonstop mode where you can say continue all the threads or stop all the threads, you do still have to say either all the threads or just one of them. And if you say you wanted to step one thread and then another, you actually have to switch to a thread using the thread command, step it, switch to a different thread, step it, switch to a different thread, step it, and so forth. If the threads are at all organized or coordinated anyway you get kind of a chaotic situation where eventually the program makes forward progress but it's behavior is not at all like how it works in real life. So if everything is interlocked in a way that there's no timing dependencies, this kind of sort of works. If there's any interdependencies you'll get so many timeouts that this essentially becomes unusable. And so it's the kind of thing that'll work fine for a worker in a consumer thread, maybe a couple worker threads, but anything past that, it just really breaks down. So the proposed change to this is to extend the GDB commands to work on sets. And this is being a little bit vague about what the sets are actually called because we've had a couple different versions of the name and we've managed to generate all kinds of confusion and we haven't even finished implementing it yet. But the general theory is that it's consists of the thread, the set is consists of processes.threads at cores. And this is a fairly general framework in that you can explicitly name the threads or processes. You can explicitly name, you can specify them by ranges. You can use predicates, you can do set operations of the usual sorts and then you can define name sets and then use those in commands. So just to give a couple examples, the, you want to say all threads of a particular PID, say 4563.star, can specify that to say, tie it down to a specific subset of cores. So you have 40 cores, you only want to look at the first 20. You can add an apt notation. And in case anybody's wondering why they're in different colors, it's because AtSign wasn't a great choice for doing PowerPoint type presentations because all the software thinks it's an email address. So, and in fact, it's horribly difficult to edit it because it really, really wants to treat it as a single object. And it's like, thank you presentation software. Anyway, so there's no deeper significance to that. And for some reason, LibreOffice doesn't really know about quoting either. Otherwise they put some backslashes in or something. Anyway, so another possibility is if you had name threads, you could say something like star.signalshaper and that would actually designate the same, thread of the same name among a whole set of processes. So you had a situation where you fork several processes and they're all generally the same threads with them. You could set a break point that would actually apply to all the processes. A mechanism as yet undetermined. Yeah, there's a little bit of theoretical aspect. There's a kind of a POSIX thing where you can apply a name to a thread and nobody has that, that's true. Yeah, yeah, this is why I say it's getting a little bit closer to the half-baked range. There are targets, RTOS and so forth, that do have name threads that are built in as part of their design. And another part of the set notation is that you can just omit things. So you can omit, say, if you just want to refer to the current process, you can just omit the process specification, just say 1-20. So to get some examples, the original idea I had for this actually was to use kind of a square bracket notation as a prefix to the commands. And it turns out the Swedes didn't like that at all. They say, well, why the Swedish? Well, if you've ever seen a Swedish keyboard, doing a square bracket is not easy. So they didn't really like the idea that you would have to do a square bracket in front of every command to do multiple core commands. So at the moment it's been left a little bit vague as to what the final syntax is going to be. So for the purpose of concreteness here, I'm using this as an argument to the commands, since that's something that we can fit into the GB syntax. So our first example, single step, all threads of all processes that are currently attached to core six. So that would be if any process that had their affinity set to core six. And so that's the one they were using. Chabelle do something like it continue, specify a specific set of threads, include both by numbers and names. If you can't remember, say the thread named worker is given different numbers, depending on the way the thread allocation works. So this particular continue command solves this problem of having to start individual threads one at a time and then get into the ordering difficulties. We have a existing command, existing modification to the break command where you can say break give a function and specify a thread. But right now it's currently limited you can only resume a particular thread. The break point can only be attached to a particular thread. It's not very easy to use if you want that break point to trigger on several threads but not all of them. So this will be this set notation give us a way to fix that long standing problem. So the whole set idea is actually not original with anybody in the GB world. This actually came from a total view and was a quasi standard for this high performance debugging forum that was briefly active in the mid to late 90s. And they actually produced a sort of a standard and then the whole project kind of disappeared. So you can actually find the HPDF spec out on the net and I think we made a copy onto the GB wiki just for documentation purposes. But in any case, to see a real live example you can actually go look at the total views manual and they actually have a very similar notation worked out in great detail. So I originally put this idea up for GB and a couple of years ago and first calling them process thread sets as an HPDF and then there was interested in doing this for cores. Mostly in an embedded context where the cores were not all homogenous. And so we extended that to column PTC sets, process thread core sets. And then the implementation says, well, you know, in GB we generalize this to call them inferiors. And in general, we call the processes that GB is operating on inferiors. And the traditional belief is that they're called that because the child of the forked process is called an inferior process. But actually in the debugger world we call them the inferior processes because, well, they're inferior, right? They have bugs. If they didn't have bugs, we wouldn't be running them in the debugger. So by definition, they're all inferior processes compared to GB. So anyway, so that was the idea to call them inferior thread sets or IT sets for short. And in retrospect, that probably wasn't a great choice because really they an embedded system, sort of a bare metal target is an inferior in the GB sense, but it's not really a process. So it's kind of, it's a little bit confused and it hasn't been decided what we're really gonna call them. In any case, Pedro Alves worked hard on this and got the work in progress pushed onto a GB branch and they couldn't take it anymore and so he escaped from mentor to go to Red Hat and left the work behind. And there's been a little bit of work on the infrastructure since then. And the reason there's the, while the data structure is a data structure for set operations is relatively straightforward. The, a lot of the old code and execute the execution control in GB is still has a lot of implicit assumptions about the single threading of control. And so that essentially needs to be rewritten to accommodate the possibility of multiple threads running simultaneously. And so that's been going on. It's not been not real speedy. We've got an update patch that Yao Qi has been working on he's been holding it off until 7.6 has been released so everybody doesn't get distracted. So check our training. Okay, so that's the set stuff and hopefully we'll see it before the end of the new millennium. Anyway, so I made reference before the host as a bottleneck and GB is really like a duck. When you do the single step command, I mean there's a lot that goes on behind the scenes. The getting a register, if you ever turn on the debugging any of the debug remote flags and you can see just how much traffic is going back and forth. And so there's a lot of reading of pieces of memory looking at the piece of memory saying, well I should de-reference that because it's actually a stack pointer to make it get a piece of stack. That's referring to another variable. Oh, I need to go get that. And it pretty much does everything one at a time. And if you had a single core target even with multiple threads as the diagram earlier showed since only one thread at a time is really needing attention every all their threads are suspended and they don't have to do this traffic back and forth. So there's a nice self-throttling effect. So even if there's a lot of traffic, your single step performance isn't really degraded. But again, on a multi-core system if the same thing happens you're gonna have hundreds of threads hitting that same breakpoint. They're all wanting the same kind of attention. You now have a huge number of packets or P-trace calls. Even though a P-trace call is native they still have to switch the context of the OS dig stuff out of the other process and then switch context back. So even if there's not network traffic there's still the java bottleneck type situation. So the idea is to get the host out of the critical path by moving work to the target somehow. And so it's a little bit of a strange idea. It was partly inspired by the trace point work that we did several years ago in which you essentially can collect data without stopping the program. So the GB sets up the trace points, installs them on the target.  And so the way this works then is that you have some kind of an agent. So the original stub is just get a byte, return it but now the agent then can do more work. And in fact it got with the trace points it actually got as far as designing a small bytecode engine and sticking it in the agent because you had say complicated variables you had to calculate an offset based on the data type of the variable, say an array. And so you needed some way to do the computation on the target side without getting GB involved. So the ways to do this target agent now that's doing more work, you can do a static link. We did this for one customer and the program had seven threads and we added an eighth thread and the eighth thread was actually a debugging stub and it controlled the other seven threads with signals. And so it worked really well. It's unfortunate we couldn't give it out to the world. It was very customized to their application. But it was a nice little scheme where the program didn't require a GB server. There was no context switching required because the, oh you've got to be kidding me. That Linux software. We'll see how long this lasts. Okay, yeah, so anyway, so one way to do this is statically linking to a dedicated thread. Another way, and this is what actually GB server does now, is that it has a copy of the agent or more exactly it has two copies of the agent, one which sits in GB server and a second copy which sits in the application as a dynamically loaded library. And so it kind of manages all that behind the scenes. So this is actually not a totally new idea. We've had some time about five, 10 years ago, we introduced a Z packet to the remote protocol to set breakpoints. And what it did was it moved the breakpoint trap management to the target. So instead of having to go back and forth inserting the reading instruction underneath the trap instruction, inserting a trap instruction, inserting the reinserting original instruction, you send a single packet to the target and it does the rest of the work. So one more recently, we actually took this to the breakpoint conditions. So you have something that looks like breakfood.c line 45, but only if global variable is more than 92. And the way this works by default is that the breakpoint is always hit, comes back to GB. GB evaluates the global variable comparison, which means that it's pulling the data from the global variable. And then if the condition is false, then GB continues on. So again, duck style, all this chatter is going back and forth and the ultimate result is the program continues. Well, okay, it continues after having had its time wasted for some fraction of a second. So again, coming back to the 100 threads, you have 100 threads all marking time waiting for their condition to be evaluated. It goes from an unnoticeable nuisance to everything is dead in the water for a noticeable amount of time. So we introduced these target side breakpoints. We borrowed the trace point mechanism, compiles the conditional code to byte codes, sends it on down. And again, with the help of the suitable target agent which includes GB server, it can do that all by itself. So it can't do everything. So for instance, if you have a reference to a convenience variable, which is only maintained inside GB, it still has to come back to the host for that. But for a lot of kinds of real life conditions, it works pretty well. And now it's actually been in and was in the last release of GB, GB 7.5. So anyway, so now we're getting to the really unbaked material. So a lot of this stuff is all based around trying to hack up the remote protocol and trying to redesign how things work. Now, this protocol was really designed for 68,000 debugging over a serial line running at 1200 BOD. And you could only assume there was a few kilobytes of memory on the target that was even available for you to work with. So if you've ever looked at the example stubs and GDB sources, you'll see some effort has been made to make them as small as possible and do as little as possible. So literally it's brought down to the single letter command G to get all registers, which is all fine for a 68,000 or an x86.  Or for say an extensive, which has 2,000 bit registers and lots of them. So the G packet has to return everything. So to reiterate, there's any lots of packets even to do a simple back trace, we got all the overheads and then we multiply that by a number of cores. So it's kind of a situation where doing a thin protocol doesn't really seem like it was a great idea anymore. So as part of that, the multicore association who originators at MPI and then the common trace format has had a working group now for about a year or so developing a general services framework aimed at mainly debugging and tracing and that sort of thing. And it's not a very open group that is anybody can join, can participate but they don't put anything out of the net which I don't entirely agree with. So this is just me speaking, there's really been no actual standard put forth that's still at the discussion point. The general requirements, I see all the Anas Merkin there. I know what you're thinking, I'm gonna get to you. So anyway. Yeah, the general expectations that would be cross-platform, cross-technology, there's a desire to have a discovery. So that is instead of having to know what the target is ahead of time that you can essentially go out of the net and pick out fine targets that are amenable to debugging. And of course this is also part of the secret plan for world domination because lots of Cisco routers have GB backdoors in them already. It'd be handy to like discover them all at once. The protocol needs to have a high performance and it's not so much for debugging because as much as I talk about the traffic, we're still talking about several hundreds or maybe several tens of kilobytes of data but the air client is tracing tools that can dump multiple gigabytes in a real hurry. And then another part of this is that we want to coordinate different host tools. Right now there's a little bit of a difficulty of say GB is trying to control the target and something like LTGNG is trying to return trace data. If the target is stopped because you said stop in GB, LTGNG is not getting its data. So in the GB context to the extent that we've figured out what this is gonna look like, one thing I think we would like to do is to extend the target command to have URIs. So here we say MCSF as a protocol, we can do kind of the slashes as the routing to an actual target and then the PTC sets could actually be an argument coming out at the end of the URI. So in this case, process 456 and all its threads. The thing is service oriented so there's a number of services and the services are defined by the target. And for debugging it seems to boil down to about four main services that you need. And the first is to get state, set it, execute control and then instrumentation pretty much subsumes everything that is gonna run independently, break points, watch points and so forth. And the key thing here that makes it different from the old remote protocol is that something like the get is allowed to have an arbitrarily complex set of arguments. So in this case I threw out as example get register zero through seven from cores one through six memory location two and then 16 bytes after memory location three. And all of this is essentially a single packet and the target does all the work to compose that up, however large that is, returns it all at once. So we go from a situation where we have dozens of packets to just one. So that's the theory that this actually hasn't been implemented. So here's the artist conception in the way that the hypothetical things have the amazing artist conception that makes you think how it's really going to work. So we have like two host tools, Mesa's mentors, a sorcery analyzer tool which is really an Eclipse wrapper for a trace tool like LTGNG. And then it can talk to proxies and proxies are essentially that just communication forwardings to other targets. And then, and this subsumes things like JTAG probes and so forth. And then to look deeper into a target the target will can have an agent and agent has a bytecode engine. And then the cores are either talking to the bytecode engine that is they're not interacting with GDB and then hopefully just from time to time the core actually needs to interact with GDB and so it'll connect through to the host. So yes, this is a more complicated agent. So anyway, that's the general picture and now we're really at the raw stuff. So it'll take this opportunity to solicit some reactions.


Section 13.4 deals with congruent and similar solids. Now these ideas of congruent and similar solids really basically the same idea from previous chapters when we talked about congruent and similar polygons. So you'll want to take out your notes and put this into your table of contents, and then we'll begin. So congruent solids have exactly the same size and shape. Two solids are similar if they have the exact same shape but not necessarily the same size. And so instead we would say the corresponding linear measurements must be proportional. So linear measurements are things like height, length, width, diameter, slant height, etc. So let's look at an example. Let's say we have these two similar prisms and with a smaller of the two, its measurements are 12 by 9 by 6. The larger let's say is 20 by 15 by 10. Now we know since the prisms are similar, all of the corresponding angles have to be congruent. In other words the ratio of the angles must be 1 to 1. All of the corresponding edges or the linear measurements are proportional. And so that's scale factor or the ratio of corresponding edges. Let's take a look at one pair. I've got 12 and 20. And we typically do scale factor by shape on the right divided by left or left divided by right. So in this case we'll do right divided by left. So 20 divided by 12. So that would give us a scale factor of 5 to 3. The ratio of the base perimeters will also follow that same scale factor because all linear measurements will be proportional in that 5 to 3 ratio. Now all corresponding surface areas are also proportional. However, they're not going to follow the same ratio. They're not going to follow 5 to 3. Instead if we take let's say the surface areas, total surface areas, that area ratio, 1300 divided by 468, ends up being 25 to 9. Which is related to 5 to 3. The surface areas are 5 squared to 3 squared. And so any of those surface area measurements, the two dimensional measurements, will follow that squared ratio. So volumes are proportional as well. If we look at the volume of these two prisms and then take their ratio, so 3000 divided by 648, it's quite a large fraction, but that fraction ends up being 125 to 27. Which again is related to 5 to 3. In fact, it's 5 to the third power, to 3 to the third power. And so to recap, if we have two similar solids with a scale factor A to B, the perimeter ratio is also A to B. In other words, any one-dimensional measurements, so perimeter, heights, base measurements, slant heights, those will always follow that scale factor of A to B. Surface area ratio will be A squared to B squared. And volume, A cubed to B cubed. So let's apply that to a couple of examples. Let's say we have a cone-shaped drinking cup, and it is currently 15 centimeters tall with a diameter of 10 centimeters. If we triple the height and diameter, what will be the volume of the new bigger cup? We'll walk through two different ways to solve this problem. So the first method is just figure out what that bigger cup looks like. We have our smaller cup and our bigger cup. The original cone had a diameter of 10 and a height of 15. And if you take and triple all those measurements, then the diameter is now 30. The height is now 45. And so the volume of the red cone will be 1 third pi r squared h, which is 3,375 pi cubic centimeters. The second way to solve this is using proportions. I know that the volume of the new cup divided by volume of the old cup will follow that same scale factor, 3 to 1, but not 3 to 1, 3 cubed to 1 cubed. And then the original cup, sorry, the blue cup, yep, the original cup had a volume of 125 pi. And so if we set that into our proportion, we know x over 125 pi must equal 27 over 1. Again, 27 came from 3 to the third. 1 to the third, of course, is just 1. Now, if you solve that using cross multiplication, we get a volume of 3,375 pi cubic centimeters. So again, two ways to solve the same problem. Next example, sorry, got a bit cut off there. A square pyramid has a slant height of 16 units and a base edge of 20 units. So we've got the square pyramid, and we want the surface area of a similar square pyramid that's been reduced by a scale factor of 2 to 5. So we're going to use that perimeter, sorry, the proportions idea, the surface area of the new divided by surface area of the old must follow 2 squared to 5 squared. And so the surface area of the original we can find using 1 half perimeter temp slant height plus the area of one base. And so that gives us 1,040 square units. We'll sub that into our proportions calculations and solve for the unknown. And so therefore the surface area of the new smaller pyramid will be 166.4 square units. Let's take a look at one more example. So let's say we have a cylinder with a surface area of 800 pi and a volume of 3,000 pi cubic units. What would happen to the surface area and volume of a similar cylinder if we enlarged by a scale factor of 3 to 2? So this is again a proportions problem. We know new over old will follow our scale factor. And so surface area of new over old will be scale factor squared, so 3 squared over 2 squared. Sub in what you know, solve for the unknown. Likewise with volumes, instead of 3 over 2, we want 3 cubed over 2 cubed. And so we'll sub in the known value and solve for the unknown. And there we go. Similar and congruent solids. Enjoy.


So we've got a little bit of breaking news here turns out there will be no justice for Breonna Taylor So as AP reports a Kentucky grand jury brought no charges against Louisville police for the killing of Breonna Taylor During a drug raid gone wrong with prosecutors saying Wednesday that two officers who fired their weapons at the black woman Were justified in using force to protect themselves Wow The only charges brought by the grand jury were three counts of wanton endangerment against fired officer Brett Hankison for the shooting into Taylor's neighbor's homes during the raid on the night of March 13th The FBI is still investigating potential violations of federal law in the case Ben Crump a lawyer for Taylor's family denounced the decision as outrageous and offensive and Protesters shouting no justice no peace began marching through the streets some sat quietly and wept later scuffles broke out between police and protesters and some were arrested the announcement of the charges drew immediate sadness Frustration and anger that the grand jury did not go further the wanton endangerment charges each carry a sentence of up to five years Right after the decision protesters brought cases of water to injustice square the Louisville Park where people have gathered to demand Justice for Taylor some began preparing food later police in the city cordoned off a street with yellow tape and Officers with protective gear could be seen handcuffing some people Some scuffles broke out and police ordered a group that broke off from the protests to disperse Warning that chemical agents might be used if they didn't now Hayes Gardner a reporter for a career journal Actually has some video footage that he posted to Twitter of this scene What's being described here and as you're going to see the police officers are very obviously trying to intimidate people Who are doing nothing? We're just standing there and being peaceful take a look So I guess that people just aren't allowed to peacefully assemble Did you see anyone doing anything wrong anything that can be described as violently protesting? rioting of course not This is what they are doing Because they know that they just killed a black woman and they're getting away with it and they know people are going to be angry and so what they're doing is a Trying to use brute force to intimidate people into not doing anything Because this is kind of like a tacit message.   That's the message that I get when I see this as they threaten people as they walk through, you know The streets with handcuffs strapped to his side ready to just arrest people. They have all of the power You have no constitutional rights anymore apparently because they could just do whatever they want. I mean think about how devastating this is police officers in Her own home murdered her and they're getting away with it. The only charges that we're seeing are for want and endangerment Breonna Taylor's life wasn't endangered. It was taken away. She was killed and these police officers are Gonna get away with it and the only charges that are being Lobbed against that one officer Brett Hankinson Hankison is Because he fired his weapon Into the neighbor's walls. I Don't know what to say. There's really no words for things like this. I Just feel sadness. I think that maybe because You know the circumstances were so extreme that she was killed by police in her own home Maybe there is just a small chance that there would be justice in this instance But I mean this sends a message to people that it doesn't matter what the circumstances are You could be doing nothing and police can kill you with impunity and get away with it I mean what's left to say? There was no justice in America There's no justice.  It's God-free. It's just There's no words. There's no words. I think the lawyer put it best This is outrageous and offensive because it is so I mean, I don't I don't know what to say I'm a little bit shocked. I'm even though like it's not surprising, but it's still like to see it again. It's like Really they're really just going to get away with this when they killed her in her own home. It's just It feels like nothing matters. The laws don't matter.


The use of a ternary donor alloy strategy was employed to optimize the energy levels of the charge transfer states in organic solar cells, resulting in a significant reduction of the energy loss associated with charge generation. This optimization led to an increase in both the open circuit voltage and the power conversion efficiency of the organic solar cell, while maintaining its short circuit current density and fill factor. This article was authored by Gene Wa Gao, Na Yu, Ji Ha Chen, and others.


Hello and welcome to the session. In this session we discussed the following question which says in figure that is this figure P and Q are points on the sides AB and AC respectively of a triangle ABC such that AP is equal to 3.5 centimeters, PB equal to 7 centimeters, AQ equal to 3 centimeters and QC equal to 6 centimeters. If PQ equal to 4.5 centimeters point BC. We know that if a line divides any two sides of a triangle in the same ratio then the line is parallel to the third side. This will be taken as the key idea for this question. Now let's move on to the solution in triangle ABC we have AP upon PB is equal to 3.5 upon 7 which is equal to 1 upon 2 then AQ upon QC is equal to 3 upon 6 which is equal to 1 upon 2 that is we have AP upon PB is equal to AQ upon QC so we say that the line PQ divides the two sides AB and AC of triangle ABC in the same ratio therefore this implies that the line PQ is parallel to line BC. Now in triangle ABC and triangle APQ we have angle A is equal to angle A since it is the common angle then angle APQ is equal to angle ABC since they are the corresponding angles and we have PQ is parallel to BC then angle AQP is equal to angle ACB since they are the corresponding angles and PQ is parallel to BC Thus we have the triangle ABC is similar to triangle APQ by AAA similarity and thus we have that AB upon AP is equal to BC upon PQ is equal to AC upon AQ Now this AB is equal to AP plus PB upon AP is equal to BC upon PQ is equal to AC now AC is equal to AQ plus QC upon AQ We got this from this figure that is you can see that AC is equal to AQ plus QC and AB is equal to AP plus PB Now on substituting the values for AP PB and AP we get 10.5 upon 3.5 Equal to BC which we have to find out upon PQ which is of length 4.5 Now since we need to find the length of BC so we can ignore this part and we consider these two So from here we get BC is equal to 10.5 into 4.5 upon 3.5 Now from here we get that 5 7 times is 35 5 9 times is 45 then we have 7 15 times is 105 then this is equal to 135 upon 10 which is equal to 13.5 so we get that BC is equal to 13.5 centimeters Hence our final answer is BC equal to 13.5 centimeters So this completes the session hope you have understood the solution for this question


we had the first no hitter thrown in the Caribbean series since 1952 when Cuba's Tommy Fine did it and this is the only base runner that Angel Padrone from Venezuela is going to allow in this game we're in the eighth inning he had him 02 the leadoff batter he walks him that's the only base runner he allows and he still gets this dude out on the double play so he still faces the minimum in the game which is kind of just like bittersweet 27 up 27 down he's one out away and now they're just like fastball let's just do it fastball is working throw the fastball that might have been a changeup that got away I don't know they didn't have the miles per hour that's a swing and a miss and now one two count catcher is going to say hey now let's throw that changeup and throw it with some fun some pizzazz get some out in front of it rolls it over the shortstop no hitter Venezuela


Good morning. I'm Mary Ellen and today I'm going to be sharing with you. What's been making me happy? What's kind of not so much been making me happy? Winners of my last giveaway. I have three one hundred dollar winners to announce and of course some like follow-up and chit chat And I'm gonna go ahead and get started I was kind of late to the game on checking out one quince But I love cashmere lined gloves, and I love leather gloves, and I've had some for oh as long as I've been an adult I've always had it, and I'm really good about not losing them my very favorite pair I got about 30 years ago and I wore him for probably 20 years and then the cashmere kind of got worn out and I keep them in my car I mean they they they they were past their prime, but I've got them in my glove box Well, I ordered these and I'm thrilled with them. I don't know if they're in stock. I'll look and I'll see but they are Kid leather gloves, and they are lined with cashmere And here is the lining and they just feel so good, and they're very warm I've checked out all the stitching and to me. I mean the quality Looks excellent. I just took these off so I could show them to you, but these made me very very happy And I only have one pair and that's okay because they're special and they're cashmere socks Somebody bought me some cashmere socks years ago I saw these and I think they were $28 and I ordered them and I love them I've washed them and I just let them hang to dry. I think I think they're 87% cashmere 12% polyester and 1% Elastic and I just love the way they feel so I was very happy to get those and The heads up. I don't know if they're gonna have any sales. Of course. I'm not affiliated with them in any way I bought anything I mentioned I buy unless I tell you differently because I just prefer to buy my own things That's just kind of how I roll, but these two things really made me happy. I was glad about the quality I would not hesitate if I wanted to buy Sweaters from there or anything else I thought if I can check out the quality of the socks and the gloves that'll tell me all I need to know and The next item was in a box of several things that were somebody's very favorite things and The note on here before I go on it's called buff city soap and the scent is Narcissist the note says not sure if you've ever used this laundry detergent before but this is my detergent splurge I save mine for towels and sheets. It's also my favorite scent Well, I've used it four times and I absolutely absolutely love it and again. It is a splurge So what I wash with these with this are things like that I wear for a day through the day and They just smell so good even hanging in my closet when I walk by I get a whiff of it It just makes me happy. I will I know I'll purchase these for gifts I probably would at some point repurchase it for myself Why not but I do like to have things that are just special I don't have to have the best all the time. I just want it Occasionally just when I kind of need a little bit extra and I do have some makeup I bought that I really like and it's by merit and this is what I'm wearing today This is social and I have that I just put that all over my lid and After I had just blended it with my finger I Used the next one and it is called Nelson and it's very dark I just use this little tiny brush from BK Beauty and just went over of my Above my lashes, which I usually don't do and made a little wing and I've used this several times this Combination and I really like it. I also Any cream eyeliner that's lighter in color this one just happens to be from Charlotte Tilbury And I put it right on the inner corner. I do like it. It's a very easy quick Natural look not that's not too heavy. The thing you need to know about these When you turn when you close them you want to close them till they click and it's clicked So when you open it, it's a little bit different. You have to kind of work it open I would imagine it helps keep it from drying out I've just always had the habit of any time it is a cream product I turn it upside down and it's the only time I don't have to put on and I Shadow primer is when I use a cream eyeshadow, but these are excellent on my lips I'm wearing what is called fashion by merit and I bought I bought this oh probably about a year ago I do like their lipsticks too. And so when I order the eyeshadow, I bought cheeky and there's cheeky and I Think it's beautiful. I'm wearing it today. I just you can either put it on your cheeks or what I just did I just put my brush in it and dabbed it and put it on my cheeks and it it does look I think it looks really good. It doesn't have any shimmer to my eyes I couldn't see any but it does kind of give a nice little glow. I do like the it cosmetics Confidence in a serum I have this and I have the clear and I enjoy them. They feel good. They last a long time Nice clear one that I think is in my car because I keep it in my little area that they're $26 That is the only thing I don't like about them I have spent more than $26 for something for my lips But I would look for these when they're on sale, but they're really nice and I like them I've been so happy with all the built puffs that I have purchased. I haven't gotten any samples lately But I ordered one a milk chocolate puff I haven't gotten it in yet. They do I want to let you know they do have them on Amazon I don't know if they're as fresh as ordering from the website, but I still have a 10% discount code and I can put a link to Amazon, but my favorite This is a cinnamon roll which I love and I love that white is peanut butter and it's covered in white Chocolate and these just are for me. They're healthy. I know they're not a whole food I know that but it's a lot better for me to grab this in a candy bar Especially when this has like 17 grams of protein. I still like the bars, but I'll tell you once they start making the puffs I just have to make myself eat a built bar Occasionally because they're not gonna go to waste. I have them in my freezer So I know they'll keep a long time, but I'm glad they're available other places I've heard some of you say you've met you've seen them in Sam's or Costco Speaking of Sam's in Costco at one time. I told you about Walmart plus I got it for a month and I canceled it because one of the perks I liked about I think was $89 a year you can get free shipping and handling on anything from Walmart and They deliver groceries and I had said that if they ever start delivering groceries at the Walmart, that's closest to me I was gonna resubscribe Well as soon as it became available in the Walmart, that's 10 miles from me Exactly, it's exactly 10 miles. I called the store and I asked them What radius they were gonna be serving and they said a 10 mile radius So I think the street one block up is where it stops, but they are delivering groceries I love that. It's been very handy. They put it on a glider I have out back and it's covered and they always separate frozen and cold and canned I asked them to do that So if I don't want if I want to leave something out there for a while I can until it's it's nice out. Also, I get Paramount Plus and I taste something that really shocked me I needed something from Walmart and it was something that was like six dollars and I put it in my cart And I really needed it rather quickly And so I looked at my my cart to make sure I'd put it in and it said free shipping. I Couldn't believe it. I won't I don't do that I don't just order one thing, but I needed that one thing and like a six dollar item was sent to me Free shipping and I got it the next day. So that made me happy. We I live in southern Illinois. It's a rural area So, I mean, we don't have any major cities. St. Louis, Missouri is the closest and it's two and a half hours from here Three hours something like that. So a lot of times things are slower in our area Okay, don't judge me. Please don't judge me. I have judged myself enough I went to the eye doctor. I had not been In over three years I Was due to go when the pandemic started and so all that I did not go. I It's just something that we had so many other appointments. I just kept putting off. I knew my eyes felt good I knew that my vision was good, you know, but you need to be checked for cataract and I have no symptoms of dry I I don't even use any eye drops. So I I wasn't I was concerned, but I wasn't worried But I went my eyes are exactly like they were. I don't have any cataracts yet Absolutely, no dry eye and I was a little concerned because I use retin A. I don't put it up underneath here but I do pad it up on my cheekbones and I take it down to my eyebrow and that's one of the side effects so He said boy, you're doing good being 70 and not even needing eye drops. So I was very happy and in the future I'm gonna do better. My vision was the same. It was absolutely a wonderful appointment and I thank God for that because It could have been different so don't do as I did you do as I say When I give gifts, so I I don't I used to be somebody who wrapped the presence and You know, I mean really took a lot of time and had beautiful packages And I really felt like that was just a waste. I mean I did I and then so then I started buying nice Reusable bags. Well, I saw something on Walmart that I wanted I had a gift that was a piece of jewelry that was in a box a small box and I thought well I'm gonna order that I'm gonna see what I think of it. I in fact, I ordered from two different companies You know how on Amazon prices change? I'll put in what I paid for it and they're these kind of a pouch and They're really good and they work what I thought was real funny. They even described it as lamb skin leather lamb skin Leather this leather that well, they're all I knew they couldn't be because their price was very reasonable and I Gave my gift and gave them one of these so they have a gift and then they have something to use and I will also use these I have Well, I have five of them left and I will just put them in in a drawer I'll use a couple of them and then I'll have something if I have a small gift to give and on that same note These are my things that are kind of in the middle and they're not bad They're not good. This is a gift bag and it's very nice and all you have to do Like this you put your gift in there It has a fold right here so it can get larger. I think you know what I'm talking about I should have shown you one that had something in it and you just tie a bow and whoever you give the present to they can You reuse it because they look perfect even after you've used them Well, I ordered it from QVC and it read it was a tin count and I can't remember how much it was It wasn't cheap. Well, it wasn't a tin count bag They counted the little cards that you can put through here So I really like them that I was disappointed. I kind of felt misled, you know when I should have read it was my fault Great bags, but and great quality But anyway, they're just kind of my so-so and then the other product that was just so-so is That it's by a van. It's a sycophate Restorative lip cream and it's just okay. I mean, it's not bad. I used it quite a few nights I really couldn't tell any difference than if I put a lip gloss on I keep my lips in good shape I always have something on it. I always have something in my pocket So I don't know if maybe if my lips were in bad shape that they would it would have helped But I wouldn't repurchase I did have some questions about my pacemaker and my Omni-lux mask and my iris store Her helmet that I'm still trying that I still don't know what I'm if I'm gonna keep it or not I bought both of those. I sent the specifications to my Electrophysiologist prior to having my pacemaker implanted and he was fine with both of them He had told me in the past don't use anything with microcurrents I had atrial fibrillation for probably 10 plus years So I don't use radio frequency or microcurrents LED lights are fine for me But you know, you make sure you ask your doctor, but I had him look it over real well And and it was fine there has been a glitch in YouTube and it's not just me Tamara from Tamar's timeless beauty. It's been happening to her and if you don't watch her you need to I'm gonna link her channel below She does excellent thorough reviews and she's just I think the world over She hasn't steered me wrong in anything my comments disappear. They it was awful on Sunday I had to keep going in I never have my comments turned off. I had them Turned off in one video and that's right about eight years ago. So it's just default It's just set that my comments are always turned on and I don't know why they're supposed to get back to me I always close my Giveaways the Wednesday after the video goes up and what I do is I go in and I just load The you URL into random comment picker. Well, there weren't any comments So I got on chat with somebody I went ahead and I turned them on and I did get them back on and I was able to load them into random comment picker and then pick a winner But then I notified YouTube that something's going on They said they look into it, but I've had to check back and forth But all like the comments are gone. So if that ever happens, it's per video So if you ever see where there's no comments If you don't care, let me know go to another video and say your comments are turned off on, you know recent video Or anybody I'm sure anybody would appreciate that, but that's really frustrating Especially if you're having a giveaway, so I'm sorry if somebody didn't get entered I think there were like 283 entries and I will give you the winners and I will put up what they had to say the word was glow I wanted to use just use the word glow in a sentence each of you will be winning a $100 e-gift card or a hint $100 into your PayPal account and the first name that came up was Donna Thomason 2 3 0 The next name is Don't you know 8591 and The next name was Cindy Kay 87 43 I want to congratulate Donna Don't you know and Cindy and make sure you leave a comment below and I'll let you know how to get in touch with me So we can take care of what what you want I thought I'd leave this to the end because the people that stayed to the very end are interested Jim did go to the doctor. He got some options. The number one option was surgery Jim has a lot to think about before he decides if he wants surgery right now His pay is in not much pain when he's sitting or when he's lying down It is when he's getting around. We have a lot of things. We're looking into for the house things That will make things easier. He has some other options and I just told him whatever he decided I would be supportive period, but I do thank you for your prayers and your good vibes We all need him we do we do But it is all good God in my life It is all good and thank you so much Thank you so much for everything and I will see you in my next video. Take care and an item I did not like I don't have any more and Again, but it does help that yesterday I went to when it's convenient for me I get the it had and it said You know this is my sit and and made me very very happy


Hey guys, Shea Bear 1,000 here and... It's Monkey! So, Shea Bear's spooky story time. It's about a haunted car. But not only that, we have video proof kind of, of that car, so stick around and check this out. Okay guys, so we're sitting in the truck, or new, well it's old, but it's new to us. Because it's kind of fitting, because is this car haunted? We don't know yet, do we? But there was some very interesting stuff, if you guys watched, if not go back and check out my paranormal and hauntings and paranormal investigations playlist. It'll be in there, there was something going on in this car. It has not done it since, and it didn't do it before it just did it that one night. So anyway, but it's not about this car. It's about an old Buick, out in the middle of nowhere. So, dorm ledges through, I would just start clipping, but it's real quick, okay? And I'll have to loop it for you, and I'll magnify the audio the best I can. You may still have to put your headphones on, or that, but, that's it. What is that? I think, okay, I got a big IR light up here on the dash, and there's a full charge battery. You and me, the shivers. And it's going dead. Wow. That's a full charge battery. That's one of the ones I just charged up the other night, and I haven't used it. Okay, well, so anyway, it's got an interesting, it's going dead, see it?  I got three more batteries, yes. Let me get a battery, guys, freaking her out. I'm tight. Oh my God. Okay, guys, we're back. Battery number two. So anyway, where was I? The green Buick, right? Yeah. This thing is out in the middle of nowhere, so I'll tell you a story, it wasn't too long after we got together, I was with her going to work, it was one of her patients, and I'll let her kind of tell the whole story here in just a second, but she went in, and we parked right beside this Buick, you'll see in the video clip, and the door, the doors on this Buick kept locking and unlocking, you know, has power locks, so, you know, well, there was a guy over at the trailer about as far from here to the house away, and he was climbing up and down a ladder when this was going on, so I just thought it was his car, and he had his key fob in his pocket, and it was pushing buttons, you know, how they do, and it was locking and unlocking the door. Well, she came back out just a minute or two later for your blood pressure cuff or something, she had to get something out of the truck, right? Yeah. And so, I said, I said, this is funny, I said, this guy's got his key fob in his pocket, and his doors on his car keeps locking and unlocking, and she says, oh, that's not his car, he drives that van over there, he's just a handyman. I said, what? She said, yeah, that car's haunted, what the fuck? She said, yeah, it's haunted, this, the guy in here, his dad died in that car. Yeah. Okay, so anyway, it's like, well, and she just walks the hell away, goes back in there, I'm like, what the hell, so I get my phone out, and I'm trying to record this, I caught it one time, but I was kind of talking, but you'll hear it. If you listen closely, you'll hear it unlocked, as it unlocked. So I'll let her tell you the story, hopefully she don't get too far off track. I'm good at that.  Anyways, I asked the woman I was taking care of about the car, and I said, is it for sale? And she said no, she said it was her son's, and her son won't sell it, it was his dad's, and he passed away in it, so he would not get rid of it, so he would wash it, and he would sit in it, and it would stay in the driveway. But she said that it was haunted, and I said, what do you mean it's haunted? And this is way before I even got into this paranormal with him. And she first heard the story, we weren't together yet? No, we were not even together. So, and she told me that, you know, the doors would open and close the locks on the doors would go up and down, and the lights would go on and off, and the horn would go off in the middle of the night. And they figured it was him or his dad. And this car didn't have alarm system, it just had electronic locks, just like this. It's got a key fob, but that one's going dead. It's got a key fob, but it didn't have the alarm, and wipers would come on? Yeah, every once in a while, they would show up on it. They would look out and wipers would be gone. And these all didn't happen all at once, they happened here and there, Yeah, not all the time, just whenever they'd be sitting like in the living room and they'd see headlights, you know, how like you see headlights come in through the window. And they'd look out, thinking someone pulled in here, the Buick had its lights on.    But they don't come on wipers. And they also had a couple of different mechanics. Yeah, he had a couple of mechanics look at it because they thought there was some wiring issues or something going on. And there was nothing wrong with it. Nothing. Yeah. The guy just got started up once in a while and sit in, listen to music, whatnot, worship and whatever. But when it started going, they just thought. I know these batteries are fully charged. I'm telling you, I'm telling you, I changed the battery because here's the one I took out. So anyway, so they, you know, just thought there was an electrical issue, a short. So they wanted to have it checked out because they didn't want the car burning now. So that's a story of the Buick. Now I'm going to throw that clip in right now and I'm going to loop it for you several times so you can hear it and I'll play pretty much the whole clip for you. It's only like a minute long. But and then then I'll I'll loop the on hence the audio and loop, loop it for you right when it happens so you can hear it. So and then we'll be back with you. OK, I got to try to get this. I don't know if you can hear it or not. But just right there. Did it this Buick, there's no one in it. And the door locks keep locking and then lock the power door locks. Apparently someone died in this car. OK, I got to try to get this. I don't know if you can hear it or not. But this, but this, but this, but this, but this. OK, so there you go. I put the other battery, the first one that started going dead back in and look at it's fine and these things are getting warm. These batteries never get warm when they run down. They just quit working or they'll start, you know, flashing like it and quit working. They never get hot. Both of these are starting to get warm. So anyway, what do you guys think of that? That's pretty cool, huh? Like I said, we still don't know what's going on with this thing. But we're going to do an investigation in here some night. Maybe we'll do a live stream. That'd be interesting. Maybe we'll see. So but like I said, it didn't do it before that night and it hasn't done it after that. And I watch monitors every night. However, that night is when the hard drive on the DVR stops recording. You know, it is old. You know, it's coming up on four years old or whatever. So, you know, that's probably natural. I mean, it's old.  So it is getting old, but for it to go out at that time, you know, that day. Weird. But anyway, so yeah, we're not sure what's going on with this thing. But now that light's working good. That's it. Yeah. That's weird. All right, guys. Well, and of course, we got a car coming. So anyway, is that all, monkey? That's all you got to add to the Buick story. Yeah, I didn't really talk about it a whole lot, but that's what they told me. Well, no, I wouldn't either, because people think you're crazy. Well, I don't care though. I wouldn't talk about it.  He he wasn't going to sell it. I tried to get him to sell it, but he wouldn't sell it. Yeah. As long as the sun's alive, he won't sell it. No. And he's what? Or age? He's probably 62 somewhere in there. But anyway, yeah. So all right, guys, well, there you go. That's the spooky story time.  I won't, I won't consider it as true or, you know, as as proof. But I mean, the story is true. You know, I mean, well, we can't prove the cars haunted, but the story itself is true.  And I kind of can verify it with that door unlocking.  So pretty weird, man. So anyway, there you go. So I guess I'm going to say she better met the man of legend. I'm out for now. It's hot. Monkey says she's out for now, y'all. Bye. You scared? No. You scared of this truck? No. Did it bother you, though? It still bothers me. Because I'm sitting there thinking that someone died in here. Well, and it was in her on her seat. Yeah, that's even worse. It was in her seat. So I'm cool over here. So yeah. But all right, there we go. And this battery is down a bar on my camera. It's fully charged. Wow. I just took it off charger today. And there's a lot of that going on because it's rained all day here. Yeah, it rained all day. We're not talking to sprinkled it poured all day and didn't let up. They actually filled the boat up with water. Yeah, because I didn't have it tilled it up. Yeah. And so I got it tilled it up and it took five minutes of green. So anyway, this has got to be annoying for you guys. So we're going to go now. We'll see you guys soon.  All right, monkey. Anything else? Not right now. Well, if she thinks of something, she'll tell you guys later. I knew in the next video. All right, bye, guys. Bye, y'all. OK, I got to try to get this. I don't know if you can hear it or not. But this, but this, but this, but this, but this right there. And did it this Buick. There's no one in it. And the door locks keep locking and unlock the power door locks.


Hi and welcome to the session. Today we will learn about 3 dimensional shapes. In our day to day life we see many 3 dimensional shapes around us. For example, cubes, cuboids such as a box, spheres like a football, cylinders, cones such as ice cream cone, presents, pyramids. Now let us see what are the faces, edges and vertices of 3 dimensional shapes. So let us consider a cube.  So here let us count how many faces a cube has. Here this is the first face, the bottom one is the second face. Now there will be 2 faces on both the sides, this one and this one. So we have 2 plus 2 that is 4.  So that means there are 6 faces. Now let us see what are the edges. 2 faces meet at a line segment called an edge. So let us count how many edges are there in a cube. Here we have first edge, second, third, fourth, then fifth, sixth, seventh, eighth, ninth, tenth, eleventh. So that means there are 12 edges in a cube. Next 3 edges meet at a point called a vertex. Now vertices is the plural of vertex. So let us see how many vertices are there in a cube. 1, 2, 3, 4, 7 and 8. So that means there are 8 vertices in a cube. This is how we can find the faces, edges and vertices of a 3 dimensional shape. Similarly you can find the faces, edges and vertices of other 3 dimensional shapes also. So with this we finished the session. Hope you must have understood all the concepts. Goodbye, take care and keep smiling.


Picture this, you're walking home one evening, you're alone and the streets are empty.  Maybe there's suddenly a cozy bridge crossing the large river that usually forces you to take a detour. Maybe there's a meandering path crossing a flowery meadow where there should be a construction site. Maybe you find that a tranquil alley has replaced the busy motorway in front of your home. The road looks completely different each time, but some things are always the same about it. It's short, it's peaceful, and it will grant you your deepest desire. Imagine that. Imagine that taking it will give you whatever you want most in life. Start on one end and reach the other. That's all you have to do. But there's a catch. Of course there's a catch. There's always a catch with these sorts of things, isn't there? I live in a small town surrounded by steep mountainous hills.  The place gets busy in autumn when harvest season rolls around, but right now you'll at most encounter the occasional hiker along the route. I've started hiking up there myself. Part of my New Year's resolution. I hike up there three times each week, a bit higher each time. It was on one of these trips that I encountered, the vagrant. I'd sat down on a large rock in the shade of a lone pine tree and was about to bite into the sandwich I'd taken along as provisions. Suddenly, a disheveled figure stumbled into view. He was thin, his dusty clothes too wide for his scrawny body.  He took a few steps, dragging his feet over the asphalt. Then he noticed me. He approached. His hungry gaze fixated on the food, then looked away, feigning disinterest, and dropped down to the ground where he pretended to massage his ankles. I instinctively scooped away from his figure, protectively clutching my food closer towards my chest. He watched me from the corner of his eyes. What was this guy doing here? There was nothing up this dead-end road. There were no cars, no people. There was nothing up here. Did he just get lost? I was about to scoop away even further when I noticed his shoes. It was hard to even call these things shoes considering the state they were in. The souls were wore down to the point they'd basically ceased existing. His bare feet were clearly visible through the large gaps, coated in dirt, swollen, calloused. Something had recently torn into the skin beneath his big toe, clotted blood spread all around the fresh injury. I instantly felt regret at how I'd reacted to the stranger a moment ago. All that suspicion and distrust. I cleared my throat. Hey, um, you want a bite to eat? I leaned slightly towards him and held out the piece of bread. His head snapped up as if he'd just waited for his cue. Oh, yes, he said with a raspy voice. Yes, thank you, thank you. He rose back up and took a few more steps towards me, limping slightly whenever his injured foot touched the ground. As soon as he was close enough, he reached out, hesitated for a second, then snatched the sandwich from my fingers and with a sudden motion as if afraid I might withdraw the offer at any second. His body dropped down into the dirt again. Thank you. He managed to say with bulging cheeks as he hungrily took the first few bites. The bread vanished in record time. He wolfed down the food, clearly not bothering to chew half of the time and I looked away to give him a bit of privacy. Have you ever heard of the road that'll make your deepest wishes come true? He suddenly said. He was still chewing, but he'd slowed down enough to become a bit more intelligible. Um, I… no. I answered with some hesitation. Picture this, you're walking home one evening, you're alone and the streets are empty. You walk a path you've walked a thousand times.  He paused to take another bite. I leaned closer, still slightly confused by the direction our conversation was taking. Was he just sharing some sort of hobo legend to repay me for the food? Maybe there's suddenly a cozy bridge crossed in the large river that usually forces you to take a detour. He continued, maybe there's a meander and path crossed in a flowery meadow where there should be a construction site or maybe he suddenly stopped and looked into the distance, his eyes unfocused. Maybe you find that a tranquil alley has replaced the busy motorway in front of your home. He shook his head and pulled himself out of whatever vision had suddenly haunted him. The road looks completely different each time, but some things are always the same about it. It's short, it's peaceful, and it will grant you your deepest desire. He looked down at the last few bites that remained of the sandwich. Imagine that taking it will give you whatever you want most in life. His fingers tensed against the bread and a few crumbs of the crust fell to the ground. Start on one end and reach the other, that's all you have to do. He raised the last bite to his lips. But there's a catch, of course there's a catch. There's always a catch with these sorts of things, isn't there? His mouth opened and the sandwich disappeared. For a bit he just sat there silently chewing while I nervously tapped my fingers against my knees, waiting for him to continue. What's the catch? My voice finally broke the silence. I'd gotten more involved in his narration than I could have anticipated. He looked at me, then down at his now empty palms as if waiting for more food to magically appear there. The catch, he mumbled. The catch, right, the catch, is that you have to walk the road with your eyes closed. No blinking or peeking, no matter what. Doesn't sound so bad, right? Not such a short and straightforward route, how hard could it be to do this blind? His voice broke and he closed his eyes, rubbing the bridge of his nose. It seems so easy until you reach the middle of the road and the sounds come.  Beautiful, angelic music beckoning you to look at its creator. The voice of a loved one who just passed away, no matter what you hear, keep your eyes closed. Or else what? Or else, well, it said that. He stared down at the ground while one of his hands rubbed his injured foot. The wound had opened up again and fresh blood was seeping over his soul. According to the legend, you will be trapped on this road forever. Oh sure, you'll reach the end, but then you take a turn and you take another and suddenly you notice that you've stepped onto the road again. It looks different, but you can tell somehow. So you turn around and try to retrace your steps, but the path you just came from has suddenly changed. You stumble across it confused, and then you look down and notice that you're on the road again. His breathing grew louder and more rapid, his hands wildly motioned in the air in front of him. So then you start running and running faster and faster until your legs hurt and still you keep running. The landscape flies by, rapidly changing, but no matter how much it changes, there is one thing that always stays the same. You're on the road again, and again, and again, and you sink down exhausted.   His voice had become more and more intense the longer he'd spoken. He was shaking. His eyes were staring into the distance again. I noticed that I had grown equally tense. I rubbed my upper arm in an attempt to fight off that shivering feeling that had crept beneath my skin. Then I forced out a polite little chuckle. Well, that's quite the story. I said, just one little hole. How could we ever find out what happens to those who open their eyes? If the story is true, they're trapped on that road forever, right? They'll hardly be able to tell anyone what happened, right? Rationalizing the story in this way helped me get a grip of myself. He had told it quite convincingly, but in the end it was just some silly little legend. He nodded, then pulled his legs towards his body. Yeah, you're right. I guess you're right. His head dipped forward and squeezed itself against his knees. It was a car horn, you know. What? I said, unable to really grasp his sudden non-sequitur. No demonic voices or angelic messages or siren songs. Just a damn car horn. And I was sure I'd made it to the other end and that I'd accidentally stumbled into the road. So I just... I just... He fell silent. I stared at him, my mouth opening and closing as I struggled to find an appropriate answer to the strange outburst. Before I found the right words, he suddenly pulled his upper body away from his knees, shook his head, and let out a laugh. I'm sorry. I'm sorry about that. I'm just tired. It's getting late.  Well? He said, trying to get a sense of levity back into his voice. What would you ask for if you ever stumbled on the road? Uh, I don't know. Money? Eternal youth? I guess I'm not really creative when it comes to this stuff. I gave him a smile. What about you? It's your deepest desire. He stared at the horizon, which was slowly turning orange from the setting sun. Getting home. He said with a grave voice. Then he took a deep breath and began to walk away. I sat there, the weight of those last few words pulling me down. When he'd vanished behind that last corner, I came to a sudden decision. I jumped up and began jogging after him. It felt wrong to just send him away like that. I was sure I still had a pair of sturdy shoes at home, shoes I never wore anyway. Might be the right size for him, better than his current pair in any case. We'd passed the house anyway on the way down. I rounded the corner and stopped dead in my tracks. There should have been only one way to go. One single serpentine road taking a sharp turn to the right, clinging to the mountain side. Now, however, there was a second road branching off. It led straight forward through a calm patch of forest where there should have been nothing but empty air. I stepped closer. The vagrant story was still fresh on my mind. Picture this, you're walking home one evening. A fresh mirror of blood vaguely shaped like a footprint was visible on the gravel of this new road. Clearly, this had been the way the stranger had taken. I stared ahead, now standing right at the start of the road. It seemed completely harmless. I could see the end just a few hundred steps in front of me. My deepest desire and all it would take was to walk this short distance. I closed my eyes and raised my left foot. The world seemed to freeze.  And then I just have to keep walking for a minute or so with my eyes closed. How hard could it be? And still my foot refused to move, refused to take this first step.  Being trapped on that road, walking and walking through freezing nights and burning days through hunger and thirst, always walking until the legs go out and you crumble to the asphalt and you die, only to wake up from death and start walking again. My deepest desire just 60 seconds away, I couldn't do it. I opened my eyes and the road was gone. My foot was raised over the abyss. The world had changed back to how it should be. I was standing right at the edge of a cliff, my foot raised into empty air, just one step and I'd end up as a shattered heap of bones down there. A sudden gust of wind shoved against my back as if urging me to take this step. A few stones crumbled beneath my weight. I flung my arms around in panic, searching for something to hold onto. My foothold slipped. My knee buckled. I fell backward. My elbows painfully slammed against the ground. With panicked motions, I began crawling away from the edge, staring at the cliffside at the place that for a short minute had been a road. And then it reappeared, literally in the blink of an eye, one second it was gone in my eyelids fluttered shut and when I opened them again, there it was along with a surrounding forest as if it had never gone. I managed to scramble back to my feet. My heartbeat refused to calm down. I kept standing there, staring at the road while the sun slowly vanished beneath the horizon. My deepest desire. Just a quick little walk.  I turned and began walking down the usual path, the path that I'd walked down thousands of times before. My deepest desire didn't come true that night, but I did get home.


10 English Phrases for Talking about Price from EspressoEnglish.net 1. That's a bit steep. That's a bit pricey. Use these phrases to say that something is a little bit expensive. 2. It cost a fortune. It cost an arm and a leg. Use these phrases to say that something was very expensive. 3. I'm paying through the nose. This is an idiomatic expression that means that you're paying too much for something and it's painful. For example, I'm paying through the nose to park my car in a private garage in New York City. It's 600 bucks a month. 4. That's a little outside my budget. I can't afford it. Use these phrases to say that you don't have enough money to buy something. 5. That's quite reasonable. If you describe a price as reasonable, it means you think it's a fair price for what you will receive. 6. It's 20% off. The word off in the context of price means it's a discount. 7. I got two for the price of one. It was buy one get one free. Both the expressions, two for the price of one and buy one get one free, are common phrases used to describe a special offer when you buy one product at normal price and get another one of the same product for free. 8. It was a real bargain. You can use this phrase to describe something that was a very good price for the value, like you can't believe you received so much for the price you paid. This expression can be used for any amount. For example, buying a $50,000 car for $10,000 is a real bargain, and buying a $100 shirt for $10 is also a real bargain. 9. I got it for a song. This is an idiomatic expression that means you bought something for a very low price. 10. It's dirt cheap. Use this phrase to say that something is extremely inexpensive. For example, if you can buy lunch for $1, that is dirt cheap. Thanks for watching English Tips from Espresso English. If you liked this video, please share it.


Hi, I'm Lenny Gale, life is no-yo. One of my favorite consulting cliches is you don't know what you don't know. It's the little known facts that change everything. Like, do you know what feeling hungry actually feels like? Because there's different types of hunger pains. Some are like, can you please give me some water? Or, can you please insert something that's like cocaine? Something different than just, I want food. These are the facts backed by science, but then there's also the things that you don't know about yourself that you don't know. Like, there might be a habit of yours that's keeping you in a self-destructive loop, a loop of dissatisfaction and not feeling as good as you deserve and what you're capable of. And I get it, I've been there. Shalva too, my wife and partner in this project. Look, programs and apps and books and all the diets and things that you've tried have led you here, to this point. If you ever said to yourself, I would give $1,000 to just lose that last five or 10 pounds. Just lose 30 to 40 pounds. Just feel good in the clothes that I'm wearing. Just have energy in the morning. Just have mental clarity like I used to. Like I think I should be able to. I pay $1,000 for that. This is our 30-day program, it's called 1K30. It's easy, it's flexible, it's bite-sized goodness. Every day for 30 days. Look, you don't build a house overnight or in a week, even.  And then after 30 days, it starts to add up and it looks like a house. We made this little program to bottle up 10 years of teachings from coaches, from academic studies, from our own success, from people who have followed us's successes. Put together in bite-sized pieces in a logical order in an arc to get you the results that you want, the results that you deserve. Our participants reporting quick wins, better sleep, reduced stress all from a simple diet and habit system that's easy to start and easy to get results. This is about feeling better than you ever have before. Even if you have a trip or a big family event coming up, you can easily just pause everything and come back to it. I should note that this is not for folks looking for a strict diet plan here. It's what, to eat every minute, every hour of the day. Or folks that are looking for gimmicky overnight results. That's not this, you can find that somewhere else. But if you're truly ready for a change, give our diet and habits plan a shot. All you need is a Vitamix. You know what I gotta say, I think the feeling you might be feeling right now is I need the perfect time. And that's kinda how I feel right now. I need the perfect last thing to say. And I don't have the perfect last thing to say. So I'm just going to say, go for it. Try it, you'll love it. It will change your life, we promise. And well, thanks for watching. Thanks for considering. Let it go, life is no joke. 1K30, 1K30.com, give it a shot. Or don't. You can stay with what you've been doing. Okay.