So now we'll talk about web services which is a more specific instantiation. When we talk about SOA, we are talking of general concepts. This is where the rubber meets the road, as they say. There's a phrase that is used to say that you have to have something concrete. Don't just keep talking of stuff in the air. Okay, so the notion is that HTML and browsers have now existed for a while. Last decade or so it's become really popular. And they are meant for applications, humans to interact with applications. Every time you go to an e-commerce site, at the other end there is an application. But here you are sitting as a human and ordering something from that site. You are interacting with the application. Every time you have ordered something, three devices have gone by and have not received the item. I want to check the status of it. I can go to the courier company site and check where is the package in terms of delivery. In fact, if people have used FedEx or UPS, they track every leg of that parcel's travel. It's really cool, right? So it says parcel was picked up at this location, delivered to the UPS center location here on this date and this time. It is scanned there and then it was put on a plane at this date and this time. The plane arrived here, it was picked off, delivered to this load. It's really cool how you can track the fine granularity of the movement of goods today. Again, it's human to application, right? It's a universal way for humans to access applications. But what we are going to be talking about today is mainly for program to program, machine to machine communication, right? So humans are not at the other end of this, right? There is another program, a consuming program who is going to access a providing program, right? That is the notion. So this is meant for application to application access and the standards ensure that it is universal or ubiquitous in nature, right? So web services are basically nothing but an instantiation, a specific instantiation of the SOA concepts that go beyond enterprise boundaries. It also is meant to use internet protocols. That's the other thing, right? SOA has no specific reference to the internet. Remember, it's just saying that if there is a high latency network, you should treat things differently. But the internet and internet protocols such as HTTP are specific to web services. So here is the definition by W3C. W3C, by the way, is the, yeah? Is there any specific instantiation of SOA apart from web services? Yes, JAXTA by Sun, JAXTA and Gini, they are Sun-specific technologies. That is Java-based and it's also an instantiation of SOA, right? .NET by Microsoft actually employs web services in its outer shell, right? So it says that interaction with the rest of the world will happen to web services, although internally it can play a lot of games if it wants to. But the most popular instantiation today is probably web services. And the one statement is the SOA and XML based web services. Is there any other kind of web services that are not SOA based? Not XML based, no, but not SOA based, yes, is the answer. So there is something called restful web services. We'll talk about rest on day four and rest stands for representational state transfer. It is a lighter weight version. People claim that SOAP was too heavy weight. It was taking up, the protocol was becoming too heavy weight. And therefore there's a lighter weight version that was proposed and now is actually in the process of being standardized as well, right? So that's called restful web services that are not SOA based, but they're still XML based. XML underlies everything. So W3C is a standardization organization. It stands for Worldwide Web Consortium, has pretty much every country in the world who deals with computer technology is a member of this organization. And they are responsible for protocols all the way from HTTP standardization into web services as well. So here's their definition. So it's a software application that is always identified by a resource identifier of some kind. It's a URI that will identify web services, right? Whose description, right? And whose bindings. The bindings is how do I access engagement notion of it. That's a binding, right? Are all described using XML. XML underlies the basis of how web services operate. So it's basically a document exchange technology at its heart, right? So XML documents are exchanged between each other, right? It's very different from the notion of RPC where a thread of control it gets transferred from one process to another. There's no such notion here. I ship off an XML document to somebody, right? Who understands what's in that XML document and then he may send me a message back. He may not send me a message back. That's okay. You can have a one way call, right? Which is not going to be two and request reply synchronous mechanisms. Right? So that's the notion. Everything is described using XML. Okay. So the third part is kind of redundant. Suppose interactions with other software applications. Also using XML based messages. Finally. So it kind completely wraps itself around using an XML shell. So anytime you want to talk to a web service, either from an internal application or from another web service that sits outside, you have to interact with it using XML as a basis. Right? Via Internet based protocols. Internet based protocols are two most popular ones being HTTP and there's one more very popular protocol. It is used over the internet. Mail, yeah. If the HTTP tool, but the SMTP is probably the more popular one. Right? So there are bindings for both HTTP and SMTP within web services. So SOAP sits above the actual protocol on which SOAP messages travel and that protocol can be either SMTP or HTTP as it turns out. So this is a graphical view of the three core components. That's why you call it base protocols. So these are the core components and every service oriented architecture would have to have these core components. Right? So first of all there is a provider of a service. Somebody who is going to say, you're going to do this for people. Right? I'm a tax consultant so I will prepare tax returns as a provider of a service. Now they have to publish, the first thing that they do is to publish via UDDI. UDDI is another specification for a web service but they have to publish their capability somewhere. So whether registry is the second notion, that registry or a service registrar happens to be UDDI in our case and then there is somebody who will consume these services. That's the third entity. Right? And the consumer of these services will be able to find services from this registry. This is a directory much like a phone directory. Right? Yellow pages, white pages, whatever. Right? Once they find it, they still have to use it. So the description of how to invoke the service comes back from the service provider or it can come from the directory also. It doesn't have to come from the service provider. There are two ways by which they can get the description and then it connects via SOAP and exchanges messages. Finally. Right? Those are the base protocols. Base protocols will then turn out to be visible for description, SOAP for message exchange and UDDI for discovery and for search. Right? So the question is that many people will write services. So what is a good web service? A good web service is one which if I take a look at a description, I can say what it does. Unambiguously. Right? Remember what we had talked about earlier. Unambiguous and formal way of saying what is it that it does. Right? So it's self-describing. So it has an XML schema. Right? Which actually describes the grammar of this. And you can read it too. Human can read XML. It's not. In fact, there are many XML browsers that will really nicely structure XML for you and allow you to read it like a tree. Right? So it's an XML schema for this. So it has to be discoverable. In other words, there has to be some way of advertising the availability of this service. I have to be able to tell the world that this service exists and it's running at display. Please go find it. Right? It has to be coarse-grained. This is a good example of this. The CRUD operations of create order, read order, update order, delete order. When you're talking of it at the granularity of an order, not of a specific data item within that order. Right? So for example, if I have a shopping cart and if I have to add a particular item to the shopping cart, that may not be a service. Right? So that's not how I would have modeled it. So the example given here is set price, set product, set customer. These are all object-oriented type methods. Right? On the server side, you'll probably still build this with object technology. One of the things that you have to realize are web services are basically protocols for people to interact with the services. Service implementation is done using some computational language, Java, C++, whatever it is. You want to write it using Perl and you can write a service using Perl. No problem. Right? More often than not, it is asynchronous. There are synchronous ways of accessing services that are out there. But given the fact that these are going to be accessed over the Internet with large latencies, asynchronous operation is probably the best. So here's a comparison between traditional client-server systems and with web services. Traditional client-server systems are within an enterprise boundary. They don't cross boundaries. It's tied to some set of programming languages. So it's implemented in COBOL, C++, Java, whatever. It's not usually procedural, but it can be object-oriented as well. It is bound to a specific transport. So if I use RMI, I am bound to JRMP. That's my transport, underlying RMR. And there is no choice there.  And it's tightly coupled. And the question that was brought up earlier with respect to efficiency or performance is typically traditional client-server systems are highly performed systems. We've seen it. We've built up systems for many, many years. And these systems have scaled pretty well. Web services go across enterprises. It can be done within enterprises. Not that it can't. In fact, if you take a look at the adoption of web services, the first phase of adoption would be within an enterprise. People don't want to expose their functionality outside initially. But it's typically because the internet protocol is meant to go outside enterprise boundaries. That's the notion. It's programming language independent. Of course, you have to still build your service implementation in a concrete programming language. So what happens is that there is a web service, a container, or an app server capable of understanding a SOAP message. And what it does with the SOAP message is it will go off and on a program somewhere. That is written in a specific language. The results of the program are translated back into XML as results and then shipped back to the person who requested it. It's message-driven as opposed to synchronous request reply. Can be bound to different transports. And we shall actually see examples of it being bound to both HTTP as well as with SMTP. It's loosely coupled. Relatively not efficient processing. It should be obvious why because of the fact that everything has to be translated to XML and back is one big overhead that you're going to have to face. Now this is being awarded. There are different ways of dealing with this. We won't necessarily go into all the ways here. But one of the advances in technology that is happening out there is that people are now beginning to build XML parsers in hardware. Things that can do XML translations are being built in hardware as chips. It's like a math floating point co-processor that you have along with your PC. Every time a floating point operation comes up, you don't want the main CPU to deal with it. You offload it. Somebody else will deal with it and give you back an answer. And that somebody else is optimized to deal with floating point operations. Similar to that, if I want to parse an XML document, I'll ship it off to the XML co-processor who will do it for me and come back. That's the next generation. That's where we're going to next. So that relatively not efficient is true, but that is being dealt with today. So is it a way the application would be often questions... Oftentimes I get that question as well. So it's not a way the application, a web service is different because it is meant for machine-to-machine interaction or program-to-program interaction where the applications are meant for human-to-program interactions typically. So that's actually the single biggest difference. The rest of them are kind of superficial. But we are really looking for a scenario in which you dynamically discover a description of a service and you're able to call it, a program is able to call it without a human having to get involved in the loop. Here are some of the characteristics. The XML base, we've discussed this, we've beaten it to death already. Message-based, programming language independent, dynamic. So I think we've called all of these things. I think the last one is important based on industry standards. It's a very, very open process. The web services aspect of it is very open because it is driven by W3C which is one of the broadest consortiums and it has got industry acceptance, possibly the widest industry acceptance that I have seen of any standard so far. So we talked about Corba a little earlier. Corba was actually a pretty neat kind of technology when it came out. It did most of the things that were plaguing people at that point in time. However, Corba did not survive whereas Java kind of survived. There are many applications built in Corba, especially banking sector applications that are sitting out there. But today nobody would think of Corba's choice technology for building enterprise applications anymore. Why? Do you know why? Anybody dealt with Corba before? If you compare Corba and J2EE, they are actually very similar in terms of functionality, not very different at all. There is hardly anything J2EE gives apart from language-based portability that Corba will not give you for obvious reasons. So why did Corba fail and J2EE succeed? Complexity is an issue. It is also there in J2EE to some extent. I mean it is not that it is completely free from it. Because we are dealing with a single language domain, things become a little simpler within J2EE. One of the main reasons why Corba failed is because there were two companies that managed to scuttle the entire Corba effort. Corba actually, OMG had membership from something like 250 enterprises who were backing it. All the big ones were backing it, Oracle, IBM was backing it. But there were two companies who said, you know, we do not want this Corba business. We are going to do something different and those two companies were enough to scuttle these 250 other companies. Because they were big enough, which is the two big ones. At that time they were big enough. Microsoft was one of them. Microsoft said, no standards, we want proprietary stuff. So, you know, forget all that. We are going to do Decom and .NET after that, right? And Sun was the other one. So Sun said, you know, what is Corba stuff? We want Java stuff everywhere. So we will do a remote in Java and build a J2EE container. These two companies went out there and basically scuttled the standard. So this last point is based on industry standards. It turns out that from what I have seen, web services has very, very wide industry acceptance. Even Microsoft is joined in this time, which is saying a lot, right? And if Microsoft joins in, it's a very heavy weight player. So IBM, Oracle, Microsoft are all behind it. Sun doesn't count as much anymore, unfortunately. So this is what we had seen earlier. We are just putting it slightly differently. A wide variety of devices can access or provide services. In fact, we are already seeing mobile phones that can access services, access not provide. But there's no reason why a mobile phone cannot provide, be a service provider as well, right? They're becoming quite powerful today. There are mobile phones and PDAs which have several gigabytes of memory. They have solid state disks on them. They have CPUs which are quite powerful, which can do plenty of stuff. So in the future, we are going to see mobile devices being service providers as well, right? And so that's going to form something like a service grid. And these devices are going to deliver services onto the grid, and then the registry will hook up to this grid, and then the same thing will occur. You will find services and use them for many other devices. There is an ocean of a service assembly where a business process is nothing but a macro service. So service can be considered to be a workflow behind the scenes, because it may call other services in order to accomplish its functionality. A travel agent exposes a service called travel reservation, which includes airline, hotel, and car reservation, right? So things like that. Or it may advertise a cruise service where you're sitting in Delhi.  So the travel agent is going to combine services. Now the macro service is nothing but a business process for the agent, right? Because it describes a definitive flow. I have to first find out whether the cruise line is available. If the cruise line is available and if I can get a booking, then I'm going to book the airline reservation. The cruise line is not available. I'll abandon the booking right now. So there is some flow to it. There is a workflow description, right? So every macro service or every workflow is exposed as another service. It's a macro service. And that's what you'll see. When you build a BPEL process, it is exposed as another web service. How do you invoke a BPEL process? You have to have a residual file for that BPEL. You have to expose it as a web service and you can invoke it only then, right? So that's what this is trying to depict. So why web services? We have interoperability because of standardization, right? Everybody who is going to accept a SOAP message, SOAP is universally understood. Therefore, I don't have to worry about the interoperability aspect of it. And since everything is described in XML, the underlying protocol is somewhat redundant, right? That's the other issue. So I can recycle components. This is true of all service orientation. The important thing again is that I have probably already invested in a web server and I've invested in XML technologies. I don't have to throw that away. That's why the economies do come into play here. It's very rare that there is somebody who is not using XML or web servers today. And since we are using HTTP and XML, the web server can receive the SOAP message and then send it off to somebody else. That's the notion, okay? So this is... So one of the things that we'll look at a little later is how do we go about transitioning to a service-oriented architecture, right? Presumably you have some legacy applications with you, now you can wrap all these legacy applications as web services and make them be available to the rest of the enterprise. The same thing that we did when we went from old COBOL applications to J2E or other modern distributed object standards. Right? Now yet another transition is taking place where your J2E applications now have become legacy and they have to be exposed using the newer standards, right? So it is scalable. We have seen many deployments. Actually there are some very large enterprises. Amazon, for one, who has completely transitioned to a web service-based infrastructure within Amazon, right? And Amazon is more of a software company than it is a retailer today, right? Because of the amount of technology that it uses and some of the innovations that they have even made in this technology. So we have proved that this is scalable and it can work even in very, very large enterprises, right? The advantages of open standards are, you know, you can look at it from three perspectives. One is from a developer perspective. One is from a service user perspective and one from a service provider perspective, right? So what do open standards, what is the role played by open standards for developers is that I can pick up any open source implementation that is there, develop to it. I can get the money for development to buy licenses and so on, right? And then I can deploy it on a more commercial platform which may be more robust in nature and so on. So you could do this with J2E as well, right? So you could develop on JBoss and then you could deploy it into IBM, WebSphere, or into BEA, WebLogic. People have done that oftentimes. So you can use any standards-compliant free implementations if they are available in order to do your development. You don't have to invest money in that, right? And the other advantage is that over a period of time, a huge number of community resources get built up who will help you out if you run into problems with this technology, right? If it is open standards-based. If it is proprietary, then, you know, you probably have to pay for help every time and so on and so forth, right? And it also depends on how successful that proprietary technology has become over a period of time, right? So for example, today, if you're using Apache and you run into some problem with Tomcat or Apache, there's message forums, right? You post a message saying there's this problem. It's likely that within 12 hours you're going to get a reply from somebody across the world saying, here's how you solve your problem. It's highly likely because there's so many people who are out there who are involved in this effort. On the other hand, if you have a problem with some Microsoft technology, clearly, and it all depends on how quick they respond to you, right? If you're an important customer, they will respond to you. If you're not, they won't. That's the truth, right? Okay, so then also there may be a lot of reuse that is possible because many people are developing to the standard and they may make their components that they develop also be available in open source and therefore you can reuse that. So for vendors, the advantage is that every vendor doesn't have to reinvent the wheel, right? The standardization process takes care of specifying a particular protocol and every vendor implements that protocol. And now every vendor is free to actually be inventive over and above this, right? So they can provide higher quality containers. They can provide higher, faster, more available containers, things like that. So there is room for innovation that is, that can go on with independent vendors. They don't have to create and maintain appropriate APIs because standardization process is accounting for that. As far as customers are concerned, you have application portability, right? So if people are developing to an open standard, presumably I can throw one vendor out. I can put the same product into our application into another vendor's platform and everything is going to work. Of course, that is, it's not completely true in reality. The ground reality is that there will always be some vendor-specific APIs that vendors provide that you will get hooked on to and then portability is not 100%. Right? But even if you're 90% of the way there, it's not bad. Right? Okay. So there's a large pool of developers that get built up over a period of time because it's an open standard. Right? Almost any graduating college student today probably knows Java well enough. They may not all know CLR and Microsoft technologies, but they will all know Java. It's kind of guaranteed. Right? So that's what I meant by that. So some of the myths that we have seen earlier that I think we should consider carefully here is the same old thing that we are reinventing and packaging. So this is actually two years ago I actually started out with this. I said it's the same old thing. But having looked at it much more closely, I don't think that's necessarily true. Some of it is the same thing, but some of it is not. Right? So here is a table that shows you. For example, you had with Corba, you had the notion of an interface description. We have Vizdel, which is an interface description as well, where RPC support through the ORB. The ORB is the actual underlying application server infrastructure that does message delivery. Right? Then you have SOAP in our case and compilers, except that they're now based on more ubiquitous standards here, which is XML and HTTP. And here it was all binary in nature. Right? The service registry, you had the Corba naming service. For those of you who have programmed this or GNDI, in the case of Java, to go find out things. But UDDI is much more universal. This is more akin to DNS. UDDI is the better comparison as DNS. DNS is any machine anywhere in the world you'll be able to do a name resolution on. Right? So UDDI is eventually meant to be like that, meant for public registries, if you will. And then there were some things, transaction security, messaging and so on, that have equivalent notion and services as well. Right? So it's not a brand new concept. Neither is it completely different than what existed. Earlier. Right? So there are elements of it that are the same. Yes, it is distributed computing. It is only based on open standards now. But it does help you go beyond enterprise boundaries. And the notion of services are different from objects does exist. Right? So it does add value. It brings something to the table that did not exist before. Web services only require a SOAP, crystal and UDDI. Not true. Right? These are only the core protocols. There are things that are required over and about this. Reliable messaging, for example, is one thing because their messages and the internet is inherently unreliable. How am I guaranteed that my message is going to go from one place to another? I need some kind of a reliable messaging strategy in there. I need security. I need asset properties of transactions to be guaranteed and so on. So we need higher level semantics that are coming by ways of different standards. They are based on RPC. Not true. They are asynchronous as opposed to being synchronous. They are basically a document transfer protocol. That's what it is. I mentioned this a little earlier as well. Right? It's a way of transferring XML documents from one place to another is just that somebody knows how to interpret that XML document on the other side. Right? In the case of RPC, you are actually going to have a binary protocol that will call a method that is sitting on another server. Right? So it's not a human readable message that is going across the wire. And it is asynchronous in nature in this case. Sir, which of the standard for segmenting is synchronous? How less is the standard that is being adopted now? So there is Vizdel with Aul is under doing standardization. It is not yet a standard but Vizdel that is WSDL with Aul for semantic descriptions. Web services don't have to be based on HTTP. SMTV bindings have also been defined and can be used. So the current state of web services is technology and standards are evolving. The core standards are fairly stable. Right? So we have 1.2 of SOAP and Vizdel that we will discuss. But some of the other higher level semantics that we talked about are still evolving standards. So WSRF for example, how do you deal with state in a web services environment? We have kept saying that it is only stateless. Which is not true. You can't really build only stateless applications. It would be foolish. Right? So how do you deal with state in a uniform way? So there is a specification called WSRF for web services resources framework that is not complete unfortunately. So there is work that is being done in management. Web services management which is actually been taken over by this organization called OASIS. Right? If you go to OASIS, not OASIS.org. OASIS something.org. I will find out the URL and give it to you. Which deals mainly with QoS and with management. So it will be adopted in phases. So here are some of the protocols. So if this is actually stopped from W3C. So the wire protocols are basically the HTTP at the lowest level SMTP. Under that would be TCP etc. SOAP will sit on top of this for packaging. And then there would be extensions which would be the different SOAP features. So for example, we say SOAP is extensible. What does that mean? What it essentially means is tomorrow if I come up with a new specification for security and I will still work with existing SOAP itself won't have to be changed. That's what we mean by SOAP is extensible. So SOAP features fit on top of the core SOAP itself. Right? So description starts from WSDL. So it's actually XML schema is at the heart of everything. Right? Once you have XML schema you have interface description which is WSDL. Implementation description we don't necessarily need to worry about. Then you have policy descriptions, your presentation descriptions. Other layer descriptions which sits on top of the core WSDL specification. Right? So for description technologies WSDL sits somewhere here at this level. And then policy will be over a particular web service. How do I specify access policies for example? There's a number of policies. We'll actually take a look at WS policy on the fourth day. And how do I do composition? Suppose it's a composed web service. BPE will also sit somewhere there. Right? Discovery, there is WS inspection which is a low level protocol and then UDDI sits above that. So publication and discovery are both UDDI related. Now apart from these core protocols it turns out that there are some parts of it that will cut across all these things. Right? Whether you are doing description, you're still out of this web service governance for example. Service description governance. So suppose it's a directory out there. Who will govern it?  Well you know how are you going to actually manage this directory? How will service description expire at what time? Is there a notion of leasing? Now all of these are management concerns. Then there is a quality of service concerns. How do I know that I can trust this other person who is going to put out a service description? Can trust be encoded in some way? Right? So for those of you who have purchased something on eBay, how many of you have seen the eBay interface? Yeah. eBay, some of you have seen it. So if you go to eBay, what happens is that there is a small description there that says somebody is selling something on eBay, right? It could be anything from somebody's clothes to you know, tux and refrigerators and cars. So when I sell something on eBay, I may not be trusted by somebody else. How does the other person know that he can send me money safely and I will actually ship him this? There's no guarantee. At the same time, how do I know that if I ship him this and then expect money, how will he send me money? There's no guarantee. Right? So how do we establish this notion of trust out there? Because we are talking of service providers being available on the internet, right? We don't know this person and we are going to use a service that is offered by this person. We are never going to meet him face to face and we're still going to use a service that this person is providing, right? Can we encode trust in some way is the notion, right? So there is security includes all those issues, identity management, trust, etc. And then there's a quality of service itself. How do I know? How can I capture the fact that my request took fewer than X milliseconds, that he advertise and therefore it conforms to the SLA. Otherwise I want my money back, right? So those kinds of aspects. So these cut across all of these protocols, it doesn't matter whether it is for SOAP or for UDDI, QOS is important, right? So conceptually what happens is if you take those three, the wire protocol, the description protocol and the discovery protocols that we had earlier, those can be layered because you need the wire protocol at the lowest level because you even interact with UDDI with SOAP, right? How you contact UDDI is using a SOAP message. So your wire protocol is at the lowest level and then the description sits on top of this wire protocol and the discovery things. Then off on the side would be these three considerations that apply to everything, right? QOS, security and management considerations. So these core, this layer, right? Everything in the yellow, blue and whatever little bit of green is being handed by W3C, right? That is their domain. A lot of the stuff on the side is being handed by some part of it by W3C but some part by OSS, right? So that's the other sanitization organization that is involved in this, particularly the management aspect of it. So this is what I've been seeing out there. This is the adoption phases that I've been noticing. So first phase is simple web services, right? So its consumer focus is not meant for B2B as much. It is still meant for B2C kind of usages but they are wrapping them as web services and allowing these JSPs to hit the web services behind the scenes, right? Soap over secure HTTP. This is already been happening. A lot of the enterprises have done this already. Then the second phase is really that I am going to integrate all my existing point-to-point integrations I'm going to replace, right? So remember this case of Boeing that I brought up earlier, 1,700 odd applications inside Boeing. They are actually replacing all their point-to-point integrations by wrapping everything as a web service and then using a bus, right? So the notion is, I'll just illustrate it with the means of a figure. So today we have something like this. Let's say it's service 1, service 2. So all the different application packages and these are all integrated with each other that look like this, right? And for 4, it looks like this. You can imagine what it looks like for 1,700 applications. It looks like it's a real mess. And there are some very interesting diagrams that IBM has drawn with some real enterprises, right? It almost looks like a design of a chip. The integration of the applications themselves look like a chip design. There are so many lines crisscrossing each other. The density is staggering. So what we instead want is, we want each of these applications to be exposed as a web service. So this is the actual application. This is a web service interface. So there is some standardized way of dealing with these applications. And then all of them are able to communicate where are some standard and that would be SOAP and XML and HTTP. SOAP version, right? So we are trying to go from here to here, right? This is a notion that all the point-to-point integrations will be replaced by a standardized model communicating over a bus. Now you may have heard the term ESB or Enterprise Software Bus out there, right? So what ESB actually refers to is this bus. This bus actually does numerous things. So it not just is a messaging bus, but it may do queuing and reliable messaging, for example. Queuing plus reliable messaging plus persistence if the queue, right? Plus it may do transformations. So there may be some data transformations that are required to go from one place to another, right? So for example, I have portal which is a billing system. The billing system has a customer record that looks like this, right? Then I have some other system for customer management, what do they call? CRM application. And the CRM application has a customer record that looks different. They contain the same data, the structure of the data is different. So I have to interact between CRM and billing, then I have to transform the customer record as it goes from one place to another. The transformation can be specified as a set of XML transformation rules or XSLT rules, right? And that is enforced by the bus. When it knows that the message is going from a particular source to a particular destination, it already understands that it has to do certain transformations, right? So the ESB is actually just a name for a messaging layer but with certain additional functionalities, some of which are included here, right? Some people have started selling this as a product, ESB product, right? Okay. So this is the second phase. So the registry is private in this case. So it's an enterprise-wide registry but it is not a public federated registry that is sitting out there on the internet. And the third phase is only baby steps are being taken towards this third phase now, which is where we have business websites or BPL processes that are cutting across enterprise boundaries and are automating the B2B interactions that are happening between multiple companies, right? So this is something that we're just starting. So now you need to have public registries. You need to be able to publish your services in a public registry that anybody can see. And so the reason why this is not yet happened is because all these notions of trust and QoS have not been fully formalized yet, right? So we are getting there but we're not quite there yet. So the second phase is where we are and it has been successfully employed because there's no notion of a trust. If I'm within a company boundary, I trust everybody. There's no issue there. Yeah. So what difference it will make in purchasing these services whether these services are in them or in the system? There is no protocol difference in accessing the service. You will access it via SOAP itself. The difference is that can I access such a service? Now can I just randomly go out on the internet, pick a service and use it? I'm scared of doing that as a company, right? Maybe because of several reasons. I don't know whether the service provider will be around tomorrow. Suppose I use this service and tomorrow it disappears. Will there be another equivalent service provider? If he's not there, what will I do? I'm kind of stuck at that point. What is the standardization? The UDDI is a standard. The notion of standardization is I have to add elements to it that will somehow indicate trust. How will I measure trust? What is the measurement of trust? I mean some form of certification of the... Some form of certification. Who certifies a particular service provider? Would men become a question? So these questions have to be answered. Until they're answered, it's not that it's rocket science. It can be done, but it has to be done. So this work is remaining is what I'm saying, right? Service is updated. We are accessing the service. What version of service? Service versioning is also an issue, but that can be dealt with. That's not so much of an issue. Yes, you have to worry about it. So what version of the service am I accessing at this point in time? Right, so if it is completely backwardly compatible versions, then you're okay. It doesn't matter. If it is not, then it's an issue. The free service, then there's liability or... Yeah, so who has a liability if it is a free service? Suppose it doesn't work. Free service. Yeah. So there are many of these questions that make it hard for me to go outside the enterprise boundary and access services. It's like open source software, right? Many enterprises are scared of using open source software. Why? What's the reason? I'm the CIO. I tell my organization no open source. Why? That's right. So I'm going to lose my job if this thing doesn't work, but whom do I sue? There's nobody to sue if it is open source. But if it's IBM, I can sue IBM if that damn thing didn't work, right? So this notion of liability not resting in a specific place is the issue of why open source did not get adopted in enterprises. The open source source is about this. Even you don't have the... There is no source. Who are you going to sue? Apache has been written by 10,000 different people. There's no organization that you can catch hold of, right? So that the liability issues, one of the biggest reasons why open source did not get very widely adopted. It could have been. It's a lot of advantages, but that's one of the single biggest issues. It's the notion of if something is free, I don't value it as much. If something is expensive, then I value it a lot more, right? So that notion. Yes. So I have somebody to go point my finger to... So I can catch hold of red hat and say, hey, they were doing work. You better fix it. And they are liable to fix it because they charge me money. But in a real open source world, nobody, right? Yes. So that they're doing because they realize that the software is good actually. Fundamentally, it's good stuff, right? Java actually beats the pants off of both web sphere as well as web logic in terms of performance. Why wasn't it widely adopted? Because it was open source, right? You couldn't point a finger to anybody. So to go to a public federated registry, some of these issues still remain. But that's my ideal scenario, right? I want to be able to go out there and search the world and find... The thing that this opens up is a scenario where I don't have to be a big software company in order to provide services, right? I can sit in my halls, have four software developers, write up a service that may be really interesting, and put it out there on the web for people to use. That's the notion. Actually, if you take a look at organizationally also, there is going to have to be a change. And I've not discussed that formally here. The change that has happened within Amazon organizationally is that software development is no longer being done in 100 people teams or even 15 people teams or whatever, right? Software development has taken on a whole new paradigm within Amazon where they have these really small software centers, right? How small is it? It's called a two-pizza team. Why is it called a two-pizza team? Has anybody heard of this term before? The notion is that most of these software people are working 20 hours a day. They have to stay through dinner time. And when they stay through dinner time, if you have to order more than two pizzas for these software developers, then the team is too big. So as much, the team should only be as big as can consume two pizzas, right? That's the notion. The notion being that these really small teams that have end-to-end responsibility for conceptualizing services, for developing services, for deploying and running the services also. The data center is now become virtual in some way, right? In other words, you not only develop the service, but you run it. It's your responsibility to run it.   Otherwise, you're out of there. So they will actually measure the use of a service provider that way within Amazon. That's what their management strategy has shifted considerably to resemble this now within the software development organization, right? So that change in thinking would also have to happen. Because initially we had, okay, I was going to build an application. I need a huge number of people to build this application. There would be a large software development effort coordinated by a program manager. There would be many project managers under this. It's all out the window. It's not the way that things are happening out there, right? So this organizational mind shift to the paradigmatic mind shift also is something that has to take place in order to move to this model.


Hey everybody, I am in Toronto, Canada at my mom and daddy house and speaking of daddy, I'm going to be doing a video with him. My dad answers your sex and love and relationship advice question.  In the comment section below, I'm going to shoot it today. So write any question that you possibly have with my dad to answer. It can be silly, it can be serious, whatever is clever and then this is also the last week of my Facebook live stream on Facebook.com slash MTV. We're talking about orgasm today, we're talking about the VMAs, how to prepare for the big night.  And now, back to our regularly scheduled program. We are getting hella excited for the VMAs and as stars are prepping for the big show, we have our outfits picked out too, right Josh? Huh? Oh yeah, I'm just crimping over here. I'm giving you guys some tips on how to make sure you are ready and relaxed, have a good time before and after. Uh, an eye mask? No, pillow talk. Oh. For our evening, we have our dress. Check. We got the her, dude. Oh, check. We got that cute bag. Oh, double check. And now before we head over to the big event, we got one more step to make to pick up some condoms. Condoms? That was a line for us. We're going to go pick up condoms? I'm picking up condoms. I mean, I just always feel so awkward when I have to go condom shopping, you know, I feel like a secret agent. Yeah, we're clear. Goin' in. No, don't freak out and don't feel embarrassed.   I like your booty. And I like your thighs. You got me mesmerized. I mean, obviously, the best thing that we all want to hear after good sex is, you are the best I ever had. But if they aren't, don't lie. I like to use the compliment sandwich. I say what I liked about the sex, what needs improving, and then finally what I love.  I think it can be a fun thing as well, too.  Something you should not say. You got somewhere to go from there, only up. In a recent study, more than half the people surveyed admitted that they don't talk to their partners about sex. Not contraceptions, not performance, nothing. What's your pillow talk like? I like the whole compliment sandwich thing. I like to compliment them, like, the performance and what I liked. And then I ask them, of course, what they like about my performance. And then from there, we'll kind of talk about what we can work on. How else can I fulfill your fantasy? That's what I'm there for, fulfilling fantasies. My pillow talk, I try my best not to be a robot because my natural thing is to be like, at minute 12, you did this. Wow. I'm very perceptive, but I try to keep it relaxed and casual and fun because people want to, like, enjoy the conversation. When primping for one of the biggest nights of the years, like the VMAs, make sure you are prepared for what follows. Use a condom every time. Responsible as f**k. Also, the rest of the week schedule, Friday, I'm uploading a hair video because it's been a while and I have new hair now and I thought you guys might like to know about it. Also that video features dormitainment and then Sunday is the dormitainment sex pretty video that I have teased a long time ago. It's finally going to be released and that's the schedule.


So hi everyone Today we will talk about how to come from a basic distance search to a complex multi-criteria search But first let's talk a little bit about me. So I'm Antonela Comme. I'm French and I'm Python developer since 2009 and I'm currently technically at Jeloumo camping car come which is a French website and we have other many websites Like alquilar me auto caravana.com For Spanish or I rents my moto home.com for English, which means exactly the same but in different language We have other for Portuguese, Catalonia and Italian countries, but Because of the accent I will not tell you that weird language So what we do at Jeloumo coping car calm and I will just say GLM for the next time because that's quite long So GLM is a private camper hire So basically we try to connect camper owners and travelers So the owner just posts ads on our websites and hopes to make money when the camper is not used and traveler look for a vehicle and just hopes to Enjoy holidays by traveling over Europe or French or Spain or whatever So the search is one of our primary feature in the websites because we have to connect the offer and the demand And to be simple. We are like the RBNB of campers So I say today we will talk about search But I just want to be clear with that today. We will talk about distance search A step backends Elastic search function score and maybe campers, but we will not talk about how to install elastic search how to install a stack or how to configure your elastic search indexes and We will neither talk to we will don't go deep inside the elastic search implementation so three years ago when we write the first version of the GLM website, we had to write the Search page and search backends. We don't have a lot of time because We had to write all the websites We just make something quick for the search and we say okay a simple distance search will be okay at least for the next month So we use to Django to do that And like Google auto completion in our form. So Google give us a long longitude and latitude We create just a geo point from that and Has to Django to compute a distance between that point and the camper parking address and Let's sold by distance and what? Searching is hard and maybe other than you think and let's see What's happened in the search results? So here is an example of search for Paris using this kind of algorithm As you can see the first camper is at two kilometer from Paris The third the second is three and the third is four kilometer for Paris The first is a van second is another van and the third is a proper camper You can see that there is no reviews for none of them and Worst you can see that we don't have any description for the third vehicle Here I'm quite confident that we can find better camper for people who want to rent a camper in Paris On that kind of slide you will see that there is blue lines. That's blue lines help our Worker people who work at GLM to know how the search engine compute the source here the score is Dependent on distance because we only use thought by distance. So as you can see the score is dependent on distance and And Okay, and the problem is what do we want? We want to reward owner that deliver a great experience to guests and The other question is what guests want So guests want to rent vehicles close to a city because that's important But guests also want to rent to a top-notch owner who rents often have good reviews answer fast and probably other things in the future Guests want an available vehicle. They don't want a vehicle so booked that the owner will never answer or will probably reject him and Guests probably want a vehicle with a lot of pictures because That's more picture you have for something you want to rent Better idea you have of what you will rent so Let's do things better At GLM we choose a stack in this stack we have elastic search which is a Fully functional search engine who provide a compilation highlights more like this function full text Searching in nursing Facetating it's I don't know if who don't know elastic search Okay So yeah that provide all that kind of things and it's more generally a kind of no SQL database Some people use like that In the other end haystack is a Django app that provide Orem and queries object similar to that Django Orem on different search engine like elastic search solar zapian whoosh Probably all there if you want to implement back in The idea is I like the a stack half rush who make easy to start And easy to understand for people who already know Django's because they have the same Paradigm like queries query set and it's convenient to make the code clear for everyone even for Someone who is for example a front-end developer who just Take a look to your form or your back in view and if that guy already seen How looks like As a query a Django query set he will exactly know what he's doing so Let's write or rewrite the same function with haystack and elastic search so I will not spend time on how your data are indexes and I will assume that haystack doc and elastic search doc are clear enough to explicitly say How your index your model So here is the equifunctional function the same as before with a Point instantiation Here the difference is we will ask a last haystack to give us a search query set for a given model which is an ad We ask to compute the distance between the location fields of an ad and the search point And let's order by distance Yeah, I said we need something better not just distance search And If you read carefully the haystack documentation You will arrive in the problem The problem is explicitly written in haystack documentation and say you cannot specify both distance and lexical graphic ordering together so you can Put as many thought by in a stack that you want Except if there is one keyword distance if there is one distance haystack will assume that distance is the name of a field And not the name of a compute field And that not work like that So after some googling reading documentation and asking myself if Is it the right stack? I find something in elastic search named function score and dg function score is The function score query Is a tool to take in control to your scoring process in elastic search It's allow you to apply function to each document that match to a main query in order to totally Alter alter or totally replace the original score So That looks I mean probably we need to use that The problem is function score And neither tk are implemented in haystack Before going deeper we just have a look on how Elastic search haystack and our queries Work together so Elastic search on the right side Provide only an HTTP API so Basically, when you write your query set on haystack haystack Have The haystack elastic search back and generate an HTTP get Send that to elastic search elastic search return you adjacent response and haystack parse that response and Transform that in haystack object and put that haystack object in the query set So it's an important thing for What's happened next? I already told you that elastic search work with HTTP API and Here is the documentation example of how it looks like a function score On top. I don't know if you can see this is just a curl gets on a given path What's interesting here is you can see that All your data are just put inside a function score object or diction error called whatever you want Um, that function score have a query The query is probably the original query That you want to search. Maybe it's a full text searching It's a filter on a given fields or whatever you want to To filter and to ask elastic search to to make your search But important things happen now the score mode the score mode is here to tell how elastic search will Compute the score that will be used to sort your response and score mode can have Different values. It can be multiply, which is the default one. It can be a sum. It can be average. It can be max mean or first will be the first score generated Here we will use the sum because the default multiply A kind of problem if one of your function that we will see after Return a score of zero for an object Whatever other function, whatever what happened Your object will be at the end because you know zero multiplied by something is like zero So let's use the sum And we will see that will be okay Next you have the functions And functions are least you can put as many function as you want Function always have the same form for decay functions You define a curve Curve are important curve are on the right. You have three different kind of curve the ghost the exponential and The linear the graphic speak Um Here we will apply a ghost curve on the location field with an origin point At a given geo point with enough set of two kilometers and a scale of three What does it means if you see that beautiful graph that means Okay that means Imagine a map where you have a central point and a two kilometers offset All objects inside these two kilometers will have the same score for that function and All the points outside Will start will see their score decayed And this case see how it will be decayed or how severity it will be So that works for geo point, but that's also work for All fields the second example is another ghost curve, but based on the price field There is a little trick about origin offset and scale Price let's assume that price can't be negative that doesn't mean anything So origin is set to 50 and offset to 50 That means our circle Which is not really circle for that, but will be between zero and 100 That means all price more expensive than 100 Will see their score decayed and in this example This example in the Documentation is about A hotel and probably the hotel The less expensive is your hotel better Will it be on not maybe better, but more relevant The last things and it's quite important is for each function you can define a weight Here the price weight is twice bigger than the location Whatever it's just That you can mix Your curve your weight your origin scale and offsets as you want And so what because a stack Don't provide with that kind of functionality. So Let's write a custom elastic search back end for a stack Actually, that's not just a back end We need to write a Something named search engine who embed a custom back end and a custom query And we need also writing a third a search query set Don't be afraid. That will be okay quick and fun Let's see how it looked like. Okay. We don't see a top but don't worry This is the search query search queries are like Django queries. They're lazy and executed only when needed The idea of this subclass is just to keep track of a dk function list That you see on top in the in it The big params just is Used by the back end to generate that HTTP request sent to elastic search. So If we have a function score or a dk function, we just return them in our search graphs The add dk function will be used by the query set internally to add the new dk functions and the clone function is here to Give the ability to a query like Django To clone itself. That means every time in a stack or in Django, it works the same You add a new filter or a stored by or an exclude or whatever you add Every time you add something to your queries the query is clone itself and return you a new query with that new capability And here we every time we clone the query We just copy the dk function to the new cloned query Here is the search back end the search back end are in charge of building the Parameters to send to elastic search Here we have something cool, which is if we don't have dk function, we just fade fast go away We don't have to do nothing with that. Just let s stack compute the rest for us The difference is if we have dk function We will embed our query computed by s stack inside a function score code that we see before uh We will put the function the dk function that we had Generate the query given by elastic a stack and the score mode as some We will go faster and here is the query set. This is how user used the query Uh, and we will just add a new function to the query set who will be dk dk will take a function dick Who will be a dk function? dk function will be only a dictionary All this code is available on github at this address I mean I will give it to you later And now let's use it so assuming we want all the vehicle with a park assistance and gps and gps nearby a geo point Let's instantiate Our function query set with a model add filter with park assistance and gps Let's compute the distance between our Searching points and vehicle points now you see how it looks like a dk function Here we'll apply an exponential curve on the fields named vehicle location With the origin scale offset and we will put the weight as to because weight is Weight is something important Not the most important, but it's quite important But we will have more fun now and uh at computation at indexing time. We add more fields A fields name picture count Which is the number of picture a vehicle had And here we will add a ghost curve on picture counts with a an origin of 50 An offset of 40 and a scale to 9 What does it mean that just mean less picture you have more dk you will be And we will put that weight at 0.5 because that's important, but maybe less important that distance And let's add this dictionary to the dk search query set But we need more Uh Even at the indexing time we compute something named owner quality rate, which is from 0 to 1 Is arbitrary computed by us and it's uh computed from Accentation rates the owner The number of reviews the answer time the number of booking And we will see that One is the best owner that you can imagine On the earth and zero is an owner that don't do nothing on our website So we want to reward good owner. So let's see. Let's say that Less your score is lower in The search you will be and we don't put weight that means weight one Then add that on our dk and now Okay, let's see what's happened now You can see that the first vehicle has description it's 12 kilometers from paris and 12 kilometers. Okay, it's it's inside our Non-dk circle that we define We have reviews. We have a number of eight pictures and a good owner quality rate You can see that the score is directly dependent from the distance the owner quality rate and the picture count Because you see that all of them are Better for the first and a second And same for the second we have reviews and good quality rate pictures. So we Can now say that if you want to rent a vehicle from paris. Maybe the first one is We'll provide you a better Holy days or maybe a better experience of our website Just by modifying that search query Okay, so now I'm finished. Thank you for the audience and Now if you have any question, I will be happy to answer you Hi, thanks for your talk. Um, this actually seems like a pretty interesting feature Did you ask the haystack developers if they wanted back so if they can can merge it on their side? actually I have a lot of things to do and I just Know that there is no functionality like that in a stack. I didn't see any pool request or things like that existing on the haystack github The code is now available on github that we make If someone is happy to create pool request or has case stack team developer to do that That will be happy. But I think haystack developer try to keep consistency between All the back end. So if they try to make something for elastic search, they will try to make the same thing for solarchs apian whoosh or and Actually, I not I didn't read any documentation how to do that with all their elast or other search engine Yeah, just contact them. They might be interested. So just contact them. They might be interested What about the performances? Do you compute the results? Once or is it computed at each church? Do you have a cache or something? Okay, so I don't know if you already use elastic search, but elastic search some things really Performance Adding decay function to our search Didn't degrade our search response time adding elastic search and haystack to our search function make the search faster Comparing to the geo Django search. So we have more functionality and it's answer faster I think that's a good compromise I was just wondering like you had to explore Really deep into haystack and all the different layers and write a lot of code to actually make that happen Why did you stick with haystack instead of just going with raw queries for for elastic search? Actually, we already used a stack for another part of our website, which is the afa queue and we use Not really intensively, but we use a stack to make like highlight some faceting and things like that and as I said before Going deeper in haystack. I really Thought that that will be easy to do You know Actually all the code I show you is exactly the code on github. There is no more code to do except that and The thing is doing that back end query set and things Allow me to add even more things or even more custom things on our website Which is not open source now, but for example, we develop a A more like this functionality or more relevant more like this functionality For campers because normally more like this functionality only work for full text indexing and now more like this work for campers and for for a given campers you have like a full of campers nearby with the same Um With the same options and same type what it's like more like this And your search results are quite dependent on the Parameters you passed into the decay functions. Yeah, did elastic search give you any tools to help you to understand? Where the breaks where the natural groupings in your data set were so did elastic search help you to understand that? Uh a decay function with this particular set of parameters is going to really neatly chop up your Owners for example Actually, it's some if I understand the question. This is something we do manually. That means All that decay function together makes something quite weird, but we Do it's like it's like playing with cursor. We just uh gets a given City and just test manually to see Okay, that's not good. This one is not really relevant. So maybe we have to decrease by zero dot one point that weight And we just adjust Our set of decay to have something that we think that It's acceptable for us, but we have to do that manually Um, do you allow the users to sort the search results and if yes, how? No, the simple question is uh, no and uh The way we make the the search is We provide all ads for every search So if we allow them to sort by price for example The thing is we will totally lost our sort by distance And it's quite not compatible or at least today. I don't know how to give that functionality to our user So today we will assume that our algorithm is good enough for user Maybe not the best to understand for user, but like blog Post or You have to make you have to learn that to your to use the user, but We consider that okay Okay, thank you. Thank you


Today we're opening a $75 legendary collection versus a $50 mystery box. What's up guys we're back with another epic versus video where we have a mystery box versus a legendary collection. We're crossing them over this time but first we do have a giveaway, this is a pretty epic one. I'll be giving away these three Korean cards Dark Magician, Red Eyes Black Dragon and Exodia the Forbidden One.  Do you think legendary collection or the mystery box will be better in this video? Let's start off with the legendary collection for Joey's World first edition. These are often pretty good because they have secrets, ultras and supers inside. So let's hope that we can get some amazing pulls out of both the mystery box and the legendary collection. If you guys haven't checked out the community tab, go check that out for the giveaway. So you can see if you guys have won the giveaway, it's a ton of people have already claimed them which is awesome but go check out the community tab. Make sure that you have not won a giveaway because I've announced all of them through like a few days ago at this point, we're actually caught up for once. I've shipped most of the stuff, feeling pretty good about it. We're going to try and keep it weekly so that I don't get way behind to get. Okay, blue flame swordsman, we have five booster packs in here. This should be a pretty epic opening. Of course the game board in there as usual. All right, let's get into this and also if you have not checked out the shorts and the tech talk channel, go check those out because we started them up and it's been pretty fun making the shorter form. So like there's shorts and a video every day so you get like double content if you want it. So we will start off with legendary collection, Joey's World. Everything is recording. We are good to go. Pretty excited of this. We are getting close to 115k, which is pretty awesome, exciting. You know, who would have thought we'd be here like a couple of years ago, so it's pretty awesome. Let's start. Oh, this is a cool one. We have the Tomasaurus, which is a very cool, small but vicious. This monster even attacks its own kind. It only has 500 attack. This card should have more attack. That's all I'm saying. I guess it's this one because he's attacking its own kind. I kind of like the green one though, at least cool. Harpy's Pet Baby Dragon. This is actually a nice card. It might have some value at common. I'm not totally sure. We got Sanga of the Thunder. Very cool. Black Stego. More dinosaurs. Tail Swipe. That's... Wait, what is this? That's a dinosaur card as well. Cool. Fiend Skull Dragon. That's a very good go-kart, or at least a pretty good go-kart. Heavy Storm speaking of good go-karts, an amazing, amazing ultrarail. Let's see. Is it going to be super or secret next? Secret? Okay, we got a snow. We got this last time actually. Snow on Light of Dark World. Very cool. And then the Silent Doom. That's a cool super air. Whenever it comes back, probably shouldn't because this card is insane. You can like, monster reborn multiple cards. It's pretty... No, wait, no, this is Silent Doom. This is a... That's a different card. Okay, this card is not as good. This is like Gladiator's Assault Secret Rare. So we actually pulled that out of Gladiator's Assault ones. All right, next, Legendary Collection, Joey's Pack. Before we get into the mystery box, who knows what will be inside of that mystery box. That's the fun part. Let's see what we can pull. Joey's World. I love these Legendary Collections. If you want to see more Legendary Collection openings like Versus, I'm getting a Kaiba. I think maybe I'll try and get Kaiba versus like Yugi or Kaiba versus Joey or something like that. Let me know if you guys want to see that. We've got a Thousand Dragon. We've got Fairy's Hand Mirror. Vampire's Curse. Trap of the Imperial Tomb. By the way, if you have any mystery boxes or if you have any Legendary Collections, hit me up. If you want to sell them to me, that would be great because then we can do them for videos. I deal with Dark Ruler because they can be a little bit weird to find sometimes. This should be an Ultra, I think. Monster reborn. Okay. That's a nice card. Yeah, I think this is worth a few dollars even just as the Ultra Rare, even though the original Prince Ultra. Then we have another, there's a lot of good spells in here. Let's see. Ooh, Foolish Burial and that is a very good one. Ooh, that's pretty in the Secret Rare too. I think that the highest radio this is the Super out of like Turbo Pack or something. Harpy Lady, that's another cool card. And Spell of Pain. So far, pretty good packs. These just always have really nice, but I mean not always sometimes you get some does at Secret Rare and stuff, but it just feels like really nice opening these up. And I guess that's why they cost so much. You know, it's a $75 for five packs at this point. They're just really nice cards. A lot of value in them. We've got the Kazi Jin, so we've got Sanga and Kazi Jin now. We always pull the Sui Jin out of Metal Raider. So now it's making sense. Blind Destruction, we've got the Rocket Warrior. Tiger Axe. You'll obviously see this guy from TP1, one of the oldest sets ever. Beast of Tawar. Very cool. This is going to be the Ultra. It's an effect monster. Harpy Queen. Okay. This was probably really valuable before the law start. I bet that hurt the value though. Let's see what the Secret Rare. Okay. Could be a Solemn Judgment. Torrential. Oh, we called it! A Solemn Judgment. Man, that's a nice looking card, guys. That shines so beautifully. And then we've got a Harpy's Hunting Ground and a Slot Machine. Where's this little brother at? If you guys know the little brother's name, let me know in the comments. All right. On to the next one. We have two more packs. Let's get into the mystery box. A Solemn Judgment, man. And Foolish Burial. Talk about some good Secret Rears. There's the Armored Zombie. The man with so much armor on that he has zero defense. Card of Sanctity. Gravity Bomb. Oh, this is not a hollow. It's a hollow in Yugi's world. It's a common in here. That's interesting. There is the Armored Zombie. Where's that armor at? That's always fun. Injection Fairy Lily Common is probably pretty nice. Vampire Genesis. The cover card of that structure deck. I really want to own that structure deck at some point. It's very nice looking. Recessor Fiend. Here comes the Ultra. Oh, it's a vanilla. I like that. Oh, Red-Eyes Black Dragon. That's cool. We love to see that a ferocious dragon with a deadly attack. Let me know. Do you guys like the red and black art?  I like it. I think it looks cool. Secret Rare. It's in effect. Red-Eyes Darkness Metal Dragon. Talk about a theme. I think this guy's like $25. He's pretty expensive because we pulled one of these recently. And then a Dark World Dealings, which is also a nice valuable card. So we are pulling some fire right now. This mystery box definitely has its work cut out for it. I don't know if it's going to be able to beat how good we've pulled so far. We have the Dungeon Worm, man. You love to see these cards. That's what I love about this. There's so many good cards, but in the common sauce, they put some fun cards like Dungeon Worm in there. We got the Kunai with Chain. What is this? I still don't have all my voice back. What is this? A little weak. We've got a little wind guard. The Dungeon Worm. What's its flavor text? Horses of a labyrinth. It swallows any who pass above. Wow. That is horrifying. Okay. Launcher, spider. Cool. Beast of Tower. Another rare that we've already gotten. Let's see what the Ultra will be. It's a spell. It's cool. We already got Monster Reborn here. The Gates of Dark World. Okay. We've gotten some good Dark World stuff. That's cool. And the Seeker Rare. It's another trap. Can we get Trenchle? Mirror Force. Oh, maybe even better. I think Trenchle is still a better card technically, but that's still cool. And the Baby Dragon in Revival Gym. That Baby Dragon is pretty valuable, too. It's nice to have the Hollow version. Man, talk about some nice polls. And then, of course, we have the Promo Pack, which we have opened this many times, so we're going to keep it sealed. The best card in it is, of course, the Blue Flame Swordsman. An absolutely massive amount of work has been cut out for this mystery box. I don't think, honestly, that there is a chance, but there is a structure deck in here. Let's see what we're going to get. We're going to get the five booster packs, one deck, and one mystery pack. This is the newest one that has come out, and you know, there's some pretty good stuff. Fist of the Gadgets, of course. We will get Fist of the Gadgets, though, almost definitely. I've never opened one of these and not gotten at least two Fist of the Gadgets. Hopefully, this will be the first time that we don't. Maybe we will get something else, like Code of the Dualist or both. We're probably going to get both, to be honest. All right, come on. No Fist of the Gadgets, no Code of the Dualist. That's all I want, guys. That's all I'm asking for. That's all I'm asking for. Come on, give us some help in the comments. Support us. Should we start with the deck?  Let's start with the skinny packs, which is probably going to be Fist. There it is, Fist of the Gadgets. All right, I hope you guys voted for Joey, because we have almost conceded it already just by pulling Fist of the Gadgets out. I think there was a couple cards that I actually won it in here. I can't remember what they were. Maybe we'll pull them, then I'll remember when we're faged. Yeah, Scrap Recycler. I need two more of these at Super Rare for my Machina deck. Just pretty, you know, not the best deck ever, but it's fun. We got a latency. Silver Gadget, that's cool. And the Archfiends Ascent Secret Rare, very cool. So I think Scrap Recycler is not really worth much, but I had the common from the Structure Deck, so it's much better than that. Okay, I just accidentally revealed. Oh, it turns out it's our Legacy Pack. Stardust Overdrive. Okay, maybe we should save that one. No, we're going to go into it right now. We're going to go into it. If we pull a Ghost Shryer and actually win this battle, that would be crazy. I think Ghost Shryer automatically wins out of a Mystery Box, for sure. Okay, let's do this. Let's go, I don't know what the pack trick is. We're going to go like this. We're going to go Gemini Counter. We're going to counter the Joey's roll. We've got a Spider Egg, Gemini Spark, Gemini Booster. We have Hercules in Power, Synchro Barrier. All right, okay, where is it? Spider, Spider, and Dijin, Presider, Rituals, and the Swap Frogs. Swap Frogs is a good card. I don't think it's really worth too much in morphs of all the reprints. Okay, that was cool. Now let's see what else. Oh, Invasion of Chaos. Okay, it's trying to make a run here. Chaos Emperor Dragon, let me know in the comments. What a Chaos Emperor Dragon win the battle. Like, even if we don't pull it, I want to know. Like, what that have won the battle. So I think it was what we do for, and then we flip these like that. Is that what we do? Okay, DNA transplant, very cool. Griffin's Feather Duster. Maju, that's like a $3 card. We're adding to the value, very nice. Big Koala, Desk Kangaroo. Aren't these the two that combined from Astor Vaz? We pull them back to back. I think it's those two. That's pretty cool. All right, Desk Koala. The Pinchopper. Blazing Impachi. Henrage Battle Locks, and here we go. Boganian, I feel like this guy's always in the hollow slot. Boganian, just chilling there. All right, it's looking bleak for sure. It's looking real bleak. Let's go with Fist of the Gadgets. Let's go. Can we get another Scrap Recycler? That's our only hope here. To give us any stuff we actually want. We got the Brotherhood of the Firefist Spirit. We got a Yoko. Latency. Chronograph Sorcerer. And the Fire Formation, Tinky. Okay, that's a pretty good card. I mean, it's probably one of the better cards in this set, Secret Rare. Tinky, we will take that. All right, we've got a few decent pulls. Okay, we've still got a few things. This is another fist. And these mystery boxes are the least mystery of all time. It's like, there is no mystery at all. We know exactly what we're getting. We got a Tensu. That's cool. Gold Gadgets, we've got Silver and Gold Gadget. We got a Cardinal. The Def Con Bird. And the Ultimate Fire Formation, Senso. How many do we have left? One pack and one deck. So the deck is already opened. And we have Code of the Duelist Shocking. I can't believe we got Code of the Duelist and Fist of the Gadget. Can you believe that? I would never want to guess. That's insane. This set is so bad. Now we're trying to jinx it into Firewall like we've done before. Let's go with Wicked Acolyte Chalam Sabak. I died just butchered that. Perry Knight's Infernity Patriarch. Chosen by the World Chalice. Cool. Speedroyd. Backup Secretary. World Legacy Discovery. And DDD Wave High King Caesar. So we got some DDDs. That's cool, I guess. And finally, the deck. Unless we got like a vintage deck, this is gonna be tough. It's already opened, it feels like. Is this deck already opened? It's already opened. Oh no, and it's Yugi's Legendary Decks. It's already opened too. Not even a sealed deck. Oh no. Okay, what will we get in here? Dark Magician Chaos, that's cool. Dark Magician. Grandora, Silent Magician's in here. Dark Magician Girl, there you go. Buster Blade of the Tricky. Jax Knight, Queen's Knight. Kings Knight, Green, Red, Yellow. Skill Dark, Skill White. Block, Marshmallow, Caribo. Monster Reborn, Swords Revealing Light. Polly, Magician's Unite. Emblem, Mirror Force. Okay, it's a cool deck. I mean, it's already opened. It would've been nice if it was not opened, but yeah, that's just how it goes. Let me know in the comments who won. It's a pretty tough decision, I know. I have no idea who it'll want. Shout out to ZZ, Trust Your Cards, Tomefo Show, Tomato Juice, Stanley, Mike, Nance, Mimikako, Spanky, Befarling, G-Raider, Daxter, and Ian Moose. So thank you guys for supporting the channel. I'll see you guys next time. Peace.