Nintendo has been crackle-ackin' down on all of the leaks. Going after a seller on Mercari, that is something we talked about earlier. In fact, that seller is now laying low due to Nintendo. We found that out yesterday on our podcast because Nintendo had a little conversation and it turns out that the seller is laying low. They're trying to avoid Nintendo big time and whatever, that's one way that Nintendo's gone after people. But obviously we've seen Discord servers getting nuked. We've seen other videos, entire YouTube channels getting nuked, Twitch streamers getting nuked. Of course, if you are putting up gameplay of the game right now, if you're streaming the game right now, just know Nintendo will eventually delete your channel. It's going to happen. But what about those people that aren't doing any of that? Rather, they're just talking quite publicly that they are playing Tears of the Kingdom right now, maybe not spoiling anything per se, but announcing to the world that they are playing the game, possibly illegally, especially illegally, because a user on Twitter thought it would be funny to post an image of themselves playing Tears of the Kingdom. Now, this is just of their avatar on their Switch playing the game, right? It doesn't show anything from the game, so there's no spoiler here. It comes from I Am Human and I'm a gamer. That's sort of user name. What's interesting, of course, is that it clearly shows they are playing a digital copy of the game. Now, this person is not a video game reviewer. This person did not get a digital copy from Nintendo. The only way to play a digital copy on your Switch would be to download the ROM and put it on a hacked Switch, which would read it as a digital copy instead of a physical copy because it's not physically inserted into the cartridge slot, okay? So, basically, a public image on Twitter showing, ha-ha, I'm playing an illegal copy of Tears of the Kingdom. Nintendo might not be too happy about that either. And the funny thing is how this person got found out and what Reggie, the former CEO and COO of Nintendo of America had to say about it because it's quite hilarious. And now that person might have had the ninjas take him out. Before we dive into that, just want to quickly remind you, we're giving away a Legend of Zelda, Tears of the Kingdom Nintendo Switch OLED Edition. We're also giving away a Tears of the Kingdom Collectors Edition and a pin from PAXES. Thank you so much for being here. You can enter it down in the pin comment or in the description. We're also on a road to 133,000 subscribers, so who knows? Maybe we just happened to get there. So, Reggie Fizeme decided to quote tweet the person who put this on Twitter and put up a quote from a Liam Neilsen film that simply states, I don't know what you want. What I do have are a very particular set of skills. Skills I have acquired over a very long career.  It's obviously a reference that Reggie Fizeme, having been in a pretty powerful position at Nintendo, is making a nice little fun movie reference to the fact that people like you are going to get in trouble.  It no longer exists. Now, it's possible the person deleted it themselves after the Reginator got involved. They're like, yeah, okay, Reggie's not quote tweeting me.  But the way that it looks like it was deleted, just going back through some history websites, it appears that Twitter nuked this account. And why would Twitter care to nuked this account? Probably because Reggie informed Nintendo and Nintendo was like, we got you. After all, the quote says, Reggie obtained a particular set of skills.  You don't think Reggie still has upper management and legal and other contacts at Nintendo still in his Rolodex on his phone? Of course he does. And if he's going to point out someone doing an illegal copy of the game, which clearly Reggie is not gonna be cool with, yeah, the ninjas are coming. So it might have been a fun little quote. Reggie having fun with people who are leaking the game. Also, this person got nuked off the face of Twitter. And who knows if there was anything else like if Twitter had to give up IP addresses or anything. I don't doubt there's a legal case, but Nintendo is trying to delete all evidence of this leak off the face of the internet, which is impossible at this point. But I do find it funny that the Reginator himself sorta got involved in this whole leak business to basically issue a public warning. Yeah, this stuff comes across my profile. I got a particular set of skills. Just saying, even Reggie has a lot of respect for his former employer that he willfully retired from. And he's not gonna mess around, man. If it comes across his timeline, he's gonna just direct it straight to the Nintendo legal. He's not even, he probably doesn't even need to get ahold of anybody else. He could probably just literally speed dial the Nintendo legal department and just send him it.  Don't worry about it. Guys, if you are playing a leaked version of the game, which by the way, a lot of people have some pretty nasty opinions about you. If you are playing it, I'm just staying out of that whole mess. But what I will say is, don't advertise yourself playing an illegal copy of a game publicly.  My parents deal with everything. Do you want your parents to potentially deal with legal problems? Be better, be smarter. Don't be posting images publicly of you playing an illegal copy of a game more than a week out from launching. If you waited to post these images after the game came out, nobody cares. But because you're doing it now, you're just asking for something nasty to happen. The 15 seconds, the 20 seconds, the eight minutes, the 15 minutes of fame you get, is it really worth it? Cause it's infamy fame that's going to destroy your career on social media. That is, if you have one, or if you don't and you're just a kid, you're gonna find out quickly that actions have consequences. So my number one advice to everyone out there that is choosing to commit a crime and play the game illegally, my advice is keep it to yourself. Play it in the privacy of your own home. Stop sharing images online. Don't go to Reddit. Don't go to different communities. Don't go on Discord servers and talk about it. If you do, that's your prerogative but be willing to accept the consequences that could come your way for doing so. I heavily suggest you just keep it to yourself. If you keep to yourself, most people are just not going to really care cause we'll be none the wiser.  So I think it's kind of funny to see even Reggie's involved this time around helping get rid of this stuff and clearly Nintendo is listening. So thank you guys for tuning in.


Hey, you guys. This is Gabrielle with Oxma Rondergruppe here at Oxma Toyota today. I have Chuck Schuman here with me. Hey, you guys. We're going to be going over a 2017 Toyota 86 Special Edition 860. We are super excited on this beautiful car. So Chuck, if you can just go over some information with us on this vehicle, that'd be wonderful. Yeah, absolutely. And so the exciting thing about this is they're only making 860 of these and the solar orange with the racing stripe down the middle. So we're very lucky to get one and have one here. At Oxma Toyota. So this is a very fun to drive car. It's got a four-cylinder boxer engine. It gets 205 horsepower. It's a manual transmission. This is a fun car. What this is meant to be is an affordable drifting car. So people who are into racing and drifting, seriously, that's what it's set up for. We've got a track button inside. You can select that. It turns off vehicle stability control and traction control. So for all you want to be drifters out there, you can set it up. And these cars were meant to be customized and to make it your own. This is based off the AE86, which was just a cult favorite in the drifting circles a long time ago. So this is a very, very sporty, very fun car. As you see back there, it's got the European-style spoiler on the back end. The aerodynamics on this are fantastic. 17-inch alloy wheels. The handle is great. It was actually a really cool video. Somebody dropped a Ferrari engine in one of these and it just drifts all over the place. Really? That car can't stop drifting. But this has a lot of nice features, too.  But this has some nice things. It has dual air control. It has heated front seats, a backup camera. It's got a six-inch touchscreen on there. This is a fun, fun car, very stylish car. Really excited to have this on the lot. It's going to go quick. Yes, I absolutely love it. Well, thank you, Chuck, for going over those information. With that information with us. So we really appreciate that. So you guys, if you have any questions, would like to come in, take this one for a test drive. Let us know. You can give us a call. Our phone number is<PHONE_NUMBER>. Or you can visit our website at oxmertwayada.com. And we'll have a link to this specific one in the comments below for you guys. So thanks. Thank you. We'll talk to you guys. Bye.


Unit 2 of sailor.org's Introduction to Financial Accounting. This unit is divided into four subunits and will take almost four hours to complete in total. Now I know we said most units will probably take between two and three hours, but this unit is probably the most important one on the course, so it needs to take a little longer. Before we start this unit, review your notes from Unit 1. We'll be building on what you learned in Unit 1 in this unit. Have you ever wondered exactly how a business records its transactions? This unit will give you a behind-the-scenes look at that process. We'll learn about what's called double-entry method of accounting using the accounting equation. The accounting equation basically states that all credits must equal all debits. In other words, imagine that you bought an iPad. This would be the credit. In order to buy the iPad, you spend $400 of your savings and then borrow $200 from your dad. These two amounts, the $400 and $200 sums, would represent the debits. The credit and the sum of the two debits equal each other. Of course this becomes a lot more complicated once we learn all the different forms that debits and credits can take in a business situation, but that's the basic principle. You can think of the accounting equation as a built-in check and balance to make sure that all transactions are recorded correctly. While you read the assigned content and watch the video lectures, don't forget to add to your notes. This unit's information will be incorporated in some form or another throughout the remainder of this course. See you in Unit 3!


Hey everyone, Jordan here reporting for Cal TV Entertainment. I'm here at the Youth Empowerment Program's 6th Annual Immigrant Art Gala. Let's check it out. The Youth Empowerment Program is one of UC Berkeley's largest Latino community outreach organizations. And this year's exhibit features profound artwork and performances from some of the Bay Area's most talented artists. Up next, the program's co-director, Dylan Bush, discusses the art show's significance for the campus community. So what we're trying to do is we're trying to show the community that immigration is not one face or one message or one voice. Rather it is the voice of many people, many nations, and many different groups. And so we hope that more than anything can spread awareness and that's why we keep this event free. So that anyone can come and attend and get their stomach full in addition to getting their mind full with different kinds of provocative and interesting ideas. I understand that the Gala is funded and sponsored by the Fifth Account. What does that necessarily mean for the elimination of the ethnic studies department? And why this event is crucial to shedding light on a lot of the immigration and issues that are just going on currently in this campus climate? Absolutely. So I think that at a national level, what we're seeing is that different races are being turned against each other. We're seeing that different social groups, different religious groups are being told that they need to hate each other rather than join together. And so we are very honored to be funded by the Ethnic Studies Program here at UC Berkeley which I think its goal is to bring those different people together and those different studies together. I mean in the Ethnic Studies Department you have African American Studies, you have Native American Studies, you have Chicano Latino Studies, you have Asian American Studies. So what they want to do is bring everyone together. And I think that's so in line with our message and this event specifically that it was an easy choice for us to want to ally with them. And Professor Raymond Teyes is our sponsor and he has also been a huge advocate of getting immigration out there to the community. I think what people need to realize is that immigration is not only a Latino issue, it is a Black issue, it is a Native American issue, it is an Asian American issue. And all of us but the Native Americans come from somewhere. I mean I'm an illegal immigrant, we're all illegal immigrants. But unfortunately a certain group of us are having to contend even more with racist and unjust laws. Thank you so much for joining us for COWTV Entertainment. Don't forget to subscribe and like our YouTube channel and thank you for watching.


Thanks for raising the question. As you know, while sequestration officially triggered March 1, the furloughs themselves, should they go forward, will not happen until late April. That's a function of some notification requirements, both the Congress, both the unions, and to the individuals themselves. Because sequestration is triggered, it is not a given that furloughs will happen. You know that Department leadership is doing everything we can to not have to take this step. But it's important that personnel and their families plan in the event it does happen.


Hello and welcome to this presentation of the STM32 Low Power Universal Asynchronous Receiver Transmitter Interface. It covers the main features of this interface, which is widely used for serial communications. The Low Power Universal Synchronous Asynchronous Receiver provides full UART communications at 9600 baud when the LPU art is clocked using a low-speed external 32.768 kHz oscillator named LSE. Higher baud rates can be reached when it's clocked by clock sources different from the LSE clock. Applications can benefit from the easy and inexpensive connection between devices, requiring only a few pins. The LPU art peripheral is functional in low power modes. It comes with transmit and receive FIFOs with capability to transmit and receive in stop modes. The LPU art is a fully programmable serial interface with configurable features such as data length, parity that's automatically generated and checked, number of stop bits, data order, signal polarity for transmission and reception, and bound rate generator. The LPU art can operate in FIFO mode and it comes with transmit and receive FIFOs. It supports RS232 and RS485 hardware flow control options. The LPU art supports dual clock domains, allowing for wake up from stop modes and bound rate programming independent of the peripheral clock. The multi-processor mode allows the LPU art to remain idle when not addressed. In addition to full duplex communication, it also supports single wire half duplex mode. The maximum bound rate is 9600 bowed when the clock source is the LSE 21.3 megaboud when it is the sysclock. This is the LPU art block diagram. The LPU art clock source named LPU art CURCK can be selected from several sources, peripheral clock, sysclock, high speed internal 16 megahertz oscillator named HSI 16, low speed external oscillator named LSE. The LPU art clock source is divided by a programmable factor in the LPU art PRESC register in range 1 to 256. TX and RX pins are used for data transmission and reception. NCTS and NRTS pins are used for RS232 hardware flow control. The driver enable pin named DE which is available on the same IO as NRTS is used in RS485 mode. The LPU art has a flexible clocking scheme. The registers are accessed through the APB bus and the kernel is clocked with LPU art CURCK, pre-scaled or not which is independent from the APB clock. In order to pass data from one clock domain to the other one, either eight data FIFOs are used or single data buffers. The LPU art block is an APB slave that can rely on DMA requests to transfer data to or from memory buffers. The TX and RX pins functions can be swapped. This allows to work in the case of a cross wired connection to another UART. The frame format consists of a set of data bits in addition to bits for synchronization and optionally a parity bit for error checking. A frame starts with one start bit where the line is driven low for one bit period. This signals the start of a frame and is used for synchronization. The data length can be 9, 8 or 7 bits with the parity bit counted. Finally, one or two stop bits where the line is driven high indicate the end of the frame. The previous slide described a standard frame. This slide shows an example of an 8 bit data frame configured with one stop bit. An idle character is interpreted as an entire frame of ones. The number of ones will include the number of stop bits as well. A break character is interpreted as receiving all zeros for a frame period. At the end of the break frame, two stop bits are inserted. The LPU art supports full duplex communication where the TX and RX lines are respectively connected with the other interfaces RX and TX lines. The LPU art can also be configured for single wire half duplex protocol where the TX and RX lines are internally connected. In this communication mode, only the TX pin is used for both transmission and reception. The TX pin is always released when no data is transmitted. Thus, it acts as a standard I.O. in idle or reception states. For this usage, the I.O. must be configured with the TX pin in alternate function open drain mode with an external pull-up resistor. In the RS-232 standard, it's possible to control the serial data flow between two devices by using the N-CTS input and the NRTS input. These two lines allow the receiver and the transmitter to alert each other of their state. This slide shows how to connect two devices in this mode. The idea is to prevent dropped bytes or conflicts in case of half duplex communication. Both signals are active low. For serial half duplex communication protocols like RS-485, the master needs to generate a direction signal to control the transceiver, also called physical layer. This signal informs the physical layer if it must act in send or receive mode. In RS-485 mode, a control line called driver-enable is used to activate the external transceiver control. The DE control line shares the pin with NRTS. To simplify communication between multiple processors, the LPUART supports a special multiprocessor mode. In multiprocessor communication, it's desirable that only the intended message recipient should actively receive the message. The non-addressed devices may be put in mute mode using two methods, idle line or address mark. The LPUART can enter or exit from mute mode using one of two methods, idle line detection or address mark detection. The LPUART can operate in FIFO mode, which is enabled and disabled by software. It's disabled by default. The LPUART comes with a transmit FIFO called TXFIFO and a receive FIFO called RXFIFO, each being eight data deep. The TXFIFO is nine bits wide. The RXFIFO default width is 12 bits. This is due to the fact that the receiver does not only store the data in the FIFO, but also the error flags associated to each character like parity error, noise error and framing error flags. Provided that the TXFIFO and the RXFIFO are clocked by the kernel clock, it is possible to transmit and receive data, even in stop mode. It's possible to configure TXFIFO and RXFIFO thresholds. This is mainly used to avoid underrun or overrun issue while waking up from stop mode. The LPUART is able to wake up the MCU from stop mode when the LPUART clock source is the HSI or LSE clock. The sources of wake up can be a specific wake up event which is triggered by either a start bit or an address match or any received data, an RXNE interrupt when FIFO management is disabled or FIFO event interrupts when FIFO management is enabled. This table lists the LPUART events that can generate an interrupt. This table lists the FIFO events interrupts when the FIFO management is enabled. The DMA requests can be generated when received buffer not empty or transmit buffer empty flags are set when FIFO management is disabled. The DMA requests can be generated when the transmit FIFO not full and receive FIFO not empty flags are set when FIFO management is enabled. Several error flags can also be generated by the LPUART, as shown in the table. The overrun, parity and framing error flags are each set when the corresponding error occurs. The noise error flag is set when a noise is detected on the received frames start bit. The LPUART peripheral is active in run, sleep and low power modes. The LPUART interrupts cause the device to exit sleep and low power sleep modes. The LPUART is able to wake up the MCU from stop 0 and stop 1 modes when the LPUART clock is set to HSI or LSE. In standby and shutdown modes, the peripheral is in power down and it must be re-initialized after exiting standby or shutdown mode. The STM32G0 devices embed a single LPUART instance. Compared to the USART, the LPUART doesn't support synchronous, smart card, IRDA and LIN modes. It does not support the receiver timeout, modbus communication and the auto boudrate detection features as well. This is a list of peripherals related to the LPUART. Please refer to these peripheral trainings for more information if needed. General purpose, input, output, reset and clock controller, power controller, interrupts controller, direct memory access controller.


I'm not sure if you're aware of this or not, but Disney owns everything, which means stuff's gonna get ruined. And since we're approaching the holidays, Disney has decided with their INFINITE WISDOM that we need to ruin yet another classic. Home Alone. It's now titled Home Sweet Home Alone, and it's coming exclusively to Disney Plus. What a gift. What a treat. Now maybe you don't celebrate Christmas. Well, that's okay. That's okay. Disney's still gonna give it to you, and you're gonna take it all. All of it. Unwrap the bow, open the box, and witness the unbridled hell that's inside. After watching this trailer, a part of me kind of feels bad for YouTube movie reactors out there. How can they possibly spin this one? How can they possibly act like there's anything resembling comedy in the trailer? Or heart? Or emotion? Or passion? Or anything that went into the first film? Home Alone 1 and 2 are childhood classics. They're near and dear to my heart, my family watches them every year, and I've grown to appreciate them even more as time has gone on. They've aged like a fine mac and cheese. And after watching The Making of Home Alone, it's become even more obvious that there was so much dedication to get this movie out. It was on the chopping block every other week by Fox. Remember Fox? They used to own movie properties. Disney owns everything now. What could possibly go wrong? This film. The original had such amazing talent on display. Even the small roles from The Siblings were phenomenal. Then you have Macaulay Culkin killing it. His brother's in there for a little bit. Catherine O'Hara is absolutely dominating the movie. We have a freaking cameo by John Candy. And then the robbers, Daniel Stern, Joe Pesci, completely destroying their bodies for the movie. And they do it with such ease. Such comedic timing. It's unmatched. It's unrivaled today. Well, what's the new one offer? Pete Holmes. Ellie Kemper. I think Pete Holmes is funny. He's talented. Ellie Kemper. I've been told she's funny. I have yet to see her make me laugh. The Office, I thought her character was just the worst. Her show on Netflix didn't do a single thing for me. So I don't know. Apparently, she's really funny off-camera. Everyone else in this trailer is phoning it in. The mom has absolutely no charisma. Who's the kid? Max? At least it's not the same family. At least it's not a full-on reboot. They're just ripping off all the same lines from the original. I might be heartless, but I'm not going to pick on a child. Archie Yates, I'm sure, is doing the best performance he can possibly give under the circumstances. You're going up against Macaulay Culkin. You're going up against the man, the myth, the legend. He just sounds like he's reading lines. This trailer is awful. It gave me diabetes. Now it's possible I had that before I watched the trailer. Who's to say outside of the medical community? Kenan Thompson is in this. Good for him for breaking the shackles that kept him hooked to the SNL stage floor he got in the film. That's great. I don't really know what else to say. It's not like the Home Alone Legacy is polished. We have two really good films, classics, and then we have three, four, and five. Three was a completely different family. Thought it was terrible. Some people like it, in which case. You might like this new one, because you have bad taste. And then there's also Home Alone 4 and 5. Most people don't even know those exist.  Straight to DVD. I'm not coming into this with open arms. When they announced that this was coming out, I wasn't the first one in line doing the cool jerk. Excited about it. No. I went, ah, why are you remaking Home Alone? But what can we do to stop this madness from continuing? They keep doing it. They keep remaking all these films. Short of hitting the execs in the face with a shovel, I don't really see any other option other than to just not watch it. But if I don't watch it, how are people gonna know my crappy opinion on movies? How are they gonna know? What I'll probably end up doing is giving it a chance, realizing very early it's garbage, and putting on the original two. Then pointing to those and saying, that's how you do it right, movie. That's how it's done.  What do you think though? Are you all in on this? Are you excited about another Home Alone movie? Disney Plus? Let me know in the comments. Like the video if you like Home Alone references.  And make sure to hit that notification bell so that we get more of these right in your feed. And let me leave you with one more classic line from the film. Now I've got a machine gun. Ho, ho, ho. That's not right. Thanks for watching the video. You might have been confused because it says trailer reaction and I didn't go, whoa, this is funny. No, I was being honest. It's a rarity on YouTube. If you appreciate that, once again, I implore you to stick around. There's tons of other videos where I'm being honest and not being a condescending douche. Well, I guess I am, but in a different way.


Hello, everybody. Thank you for joining us today for the Virtual Vertica BDC 2020. Today's breakout session is entitled, Extending Vertica with the Latest Vertica Ecosystem and Open Source Initiatives. My name is Sue LeClaire, Director of Marketing at Vertica, and I'll be your host for this webinar. Joining me is Tom Wall, a member of the Vertica Engineering team. But before we begin, I encourage you to submit questions or comments during the virtual session. You don't have to wait. Just type your question or comment in the question box below the slides and click Submit. There will be a Q&A session at the end of the presentation. We'll answer as many questions as we're able to during that time. Any questions that we don't get to, we'll do our best to answer them offline. Alternatively, you can visit Vertica forums to post your questions after the session. Our engineering team is planning to join the forums to keep the conversation going. Also a reminder that you can maximize your screen by clicking the double arrow button in the lower right corner of the slides. And yes, this virtual session is being recorded and will be available to view on demand later this week. We'll send you a notification as soon as it's ready. So, let's get started. Tom, over to you. Hello everyone, and thanks for joining us today for this talk. My name is Tom Wall and I am the leader of Vertica's ecosystem engineering team. We are the team that focuses on building out all the developer tools, third-party integrations that enables the software ecosystem that surrounds Vertica to thrive. So today, we'll be talking about some of our new open-source initiatives and how those can be really effective for you and make things easier for you to build and integrate Vertica with the rest of your technology stack. We've got several new libraries, integration projects and examples, all open-source to share, all being built out in the open on our GitHub page. Whether you use these open-source projects or not, there's a very exciting new effort that will really help to grow the developer community and enable lots of exciting new use cases. So, every developer out there has probably had to deal with a problem like this. You have some business requirements to maybe build some new Vertica-powered application. Maybe you have to build some new system out to visualize some data that's managed by Vertica. Through various circumstances, lots of choices might be made for you that constrain your approach to solving a particular problem. These requirements can come from all different places. Maybe your solution has to work with a specific visualization tool or web framework because the business is already invested in the licensing and the tooling to use it. Maybe it has to be implemented in a specific programming language since that's what all the developers on the team know how to write code with. While Vertica has many different integrations with lots of different programming language and systems, there's a lot of them out there and we don't have integrations for all of them. So, how do you make ends meet? You don't have all the tools you need. Well, you have to get creative using tools like high ODBC, for example, to bridge between programming languages and frameworks to solve the problems you need to solve. Most languages do have an ODBC-based database interface. ODBC is our C library and most programming languages know how to call C code somehow. So that's doable, but it often requires lots of configuration and troubleshooting to make all those moving parts work well together. So that's enough to get the job done, but native integrations are usually a lot smoother and easier. So rather than, for example, in Python, trying to fight with PyODBC to configure things and get Unicode working and to compile all the different pieces the right ways to make it all work smoothly, it would be much better if you could just pip install a library and get to work. And with Vertica Python or new Python client library, you can actually do that. That story, I assume, probably sounds pretty familiar to you. It sounds probably familiar to a lot of the audience here because we're all using Vertica and our challenge as big data practitioners is to make sense of all this stuff despite those kind of technical and non-technical hurdles. Vertica powers lots of different businesses and use cases across all kinds of different industries and verticals. While there's a lot different about us, we're all here together right now for this talk because we do have some things in common. We're all using Vertica and we're probably also using Vertica with other systems and tools too because it's important to use the right tool for the right job. That's kind of a founding principle of Vertica and it's true today too. In this constantly changing technology landscape, we need lots of good tools and well-established patterns, approaches and advice on how to combine them so that we can be successful doing our jobs. Luckily for us, Vertica has been designed to be easy to build with and extended in this sort of fashion. Databases as a whole have had this goal from the very beginning. They solved the hard problems of managing data so that you don't have to worry about it. Instead of worrying about those hard problems, you can focus on what matters most to you and your domain. So implementing that business logic, solving that problem without having to worry about all of the intense, sometimes details about what it takes to manage a database at scale. With the declarative syntax of SQL, you tell Vertica what the answer is that you want. You don't tell Vertica how to get it. Vertica will figure out the right way to do it for you so that you don't have to worry about it. So this SQL abstraction is very nice because it's a well-defined boundary where lots of developers know SQL and it allows you to express what you need without having to worry about those details. So we can be the experts in data management where you worry about your problems. This goes beyond what's accessible through SQL with Vertica. We've got well-defined extension and integration points across the product that allow you to customize this experience even further. So if you want to do things like write your own SQL functions or extend database operators with UDXs, you can do so. If you have a custom data format that might be a proprietary format or some source system that Vertica doesn't natively support, we have extension points that allow you to use those. You make it very easy to do parallel, massive data movement, right? Loading into Vertica but also to export Vertica to send data to other systems. And with some new features in 10, we also can do the same kinds of things with machine learning models importing and exporting to tools like TensorFlow, right? And it's these integration points that have enabled Vertica to build out this open architecture and a rich ecosystem of tools, both open source and closed source, right, of all sorts of different varieties that solve all kinds of different problems that are kind of common in this big data processing world, right? Whether it's open source streaming systems like Kafka or Spark, right? Or more traditional ETL tools, right, on the loading side, but also, right, BI tools and visualizers and things like that to view and use the data that you keep in your database on the right side, right? And then, of course, Vertica needs to be flexible enough to be able to run anywhere, right? So you can really take Vertica and use it the way you want it to solve the problems that you need to solve. So Vertica has always employed open standards and integrated with all kinds of different open source systems. What we're really excited about to talk about now is that we are taking our new integration projects and making those open source, too. In particular, we've got two new open source client libraries that allow you to build Vertica applications for Python and Go. These libraries act as a sort of foundation for all kinds of interesting applications and tools, right? Upon those libraries, we've also built some integrations ourselves and we're using these new libraries to power some new integrations with some third-party products. Finally, we've got lots of new examples and reference implementations out on our GitHub page that can show you how to combine all these moving parts in exciting ways to solve new problems, right? And the code for all these things is available now on our GitHub page and so you can use it however you like and even help us make it better, too. So the first such project that we have is called Vertica Python. Vertica Python began at our customer at Uber, right? And then in late 2018, we collaborated with them and we took it over and made Vertica Python the first official open source client for Vertica. You can use this to build your own Python applications or you can use it via tools that were written in Python, right? Python has grown a lot in recent years and it's a very common language to solve lots of different problems and use cases in the big data space from things like DevOps and data science or machine learning or just for homegrown applications. We use Python a lot internally for own QA testing and automation needs and with the Python 2 end of life that kind of happened at the end of 2019, it was important that we had a robust Python solution to help migrate our internal stuff off of Python 2 and also to provide a nice migration path for all of you, our users that might be worrying about the same kind of problems with their own Python code. So Vertica Python is used already for lots of different tools including Vertica's admin tools now starting with 9.31. It was also used by Datadog to build a Vertica Datadog integration to monitor your Vertica infrastructure within Datadog. So here's a little example of how you might use the Python client to do some work. So here we open a connection, we run a query to find out what node we're connected to and then we do a little data load by running a copy statement. And this is designed to kind of have a familiar looking feel if you've ever used a Python database client before. So we implement the DBAPI 2.0 standard and it feels like a Python package, right? So that includes things like it's part of the centralized PIP package winners. So you can just PIP install this right now and go start using it. We also have our client for GoLang. So this is called Vertica SQL Go. And this is a very kind of similar story just in a different context or the different programming language. So Vertica SQL Go began as a collaboration with the microfocus SecOps group who builds microfocuses security products some of which use Vertica internally to provide some of those analytics. So you can use it to build your own apps in the Go program language but you can also use it via tools that are written in Go. So most notably we have our Grafana integration which we'll talk a little bit more about later that leverages this new client to provide Grafana visualizations for Vertica data. And Go is another kind of rising popularity programming language because it offers sort of an interesting balance of different programming design trade-offs. So it's got good performance, good concurrency and sort of memory safety. And we liked all those things and we are using it to power some internal monitoring stuff of our own. And here's an example of the code that you can kind of write with this client. So this is Go code that does a similar thing. It opens a connection, it runs a little test query and then it iterates over those rows processing them using Go data types.   And it's important to note here for these two projects we're really doing open source development. We're not just kind of putting code on our GitHub page. So if you go out there and look you can see that you can ask questions, you can report bugs, you can submit pull requests yourselves and you can collaborate directly with our engineering team and the other Vertica users out on our GitHub page. Because it's out on our GitHub page it allows us to be a little bit faster with the way we ship and deliver functionality compared to the core Vertica release cycle. So in 2019 for example as we were building features to prepare for the Python 3 migration we shipped 11 different releases with 40 customer reported issues filed on GitHub. That was done over 78 different pull requests and with lots of community engagement as we do so. So lots of people are using this already. We see as our GitHub page last showed with about 5,000 downloads of this a day of people using it in their software. Again we want to make this easy not just to use but also to contribute and understand and collaborate with us. So all these projects are built using the Apache 2L license. The master branch is always available and stable with the latest, greatest functionality and you can always build it and test it the way we do so that it's easy for you to understand how it works and to submit contributions or bug fixes or even features. It uses automated testing both for locally and pull requests and for Vertica Python it's fully automated with Travis CI. So we're really excited about doing this and we're really excited about where it can go in the future because this offers some exciting opportunities for us to collaborate with you directly than we kind of have ever before. You can contribute improvements and help us guide the direction of these projects but you can also work with each other to share knowledge and implementation details and various best practices. So maybe you think, well I don't use Python I don't use Go so maybe it doesn't matter to me but I would argue it really does matter because even if you don't use these tools and languages there's lots of amazing Vertica developers out there who do and these clients do act as low level building blocks for all kinds of different interesting tools both in these Python and Go worlds but also well beyond that because these implementations and examples really generalize to lots of different use cases and we're going to do a deeper dive now into some of these to understand exactly how that's the case and what you can do with these things. So let's take a deeper look at some of the details of what it takes to build one of these open source client libraries. So these database client interfaces, what are they exactly? Well we all kind of know SQL but if you look at what SQL specifies it really only talks about how to manipulate the data within the database. So once you're connected and in you can run commands with SQL but these database client interfaces address the rest of those needs. So what does the programmer need to do to actually process those SQL queries? And so these interfaces are specific to a particular language or technology stack but the use cases and the architectures and design patterns are largely the same between different languages. They all have a need to do some networking and connect and authenticate and create a session. They all need to be able to run queries and load some data and deal with problems and errors. They also have a lot of metadata and type mapping because you want to use these clients the way you use those programming languages which might be different than the way that Vertica's data types and Vertica's semantics kind of work. So some of these client interfaces are truly standards and they are robust enough in terms of what they design and call for to support a truly pluggable driver model where you might write an application that codes directly against the standard interface and you can then plug in a different database driver like a JDBC driver to have that application work with any database that has a JDBC driver. So most of these interfaces aren't as robust as a JDBC or ODBC but that's okay because as good as this standard is every database is unique for a reason and so you can't really expose all of those unique properties of a database through these standard interfaces. So Vertica's unique in that it can scale to the petabytes and beyond and you can run it anywhere in any environment whether it's on-prem or on-clouds. So surely there's something about Vertica that's unique and we want to be able to take advantage of that fact in our solutions. So even though these standards might not cover everything there's often a need in common patterns that arise to solve these problems in similar ways. When there isn't enough of a standard to find those common semantics that different databases might have in common what you often see is tools will invent plug-in layers or glue code to compensate by defining sort of an application-wide standard to cover some of these same semantics. Later on we'll get into some of the details and show off what exactly that means. So if you connect to a Vertica database what's actually happening under the covers? You have an application, you have a need to run some queries so what does that actually look like? Well probably as you would imagine your application is going to invoke some API calls in some client library or tool. This library takes those API calls and implements them usually by issuing some networking protocol operations communicating over a network to ask Vertica to do the heavy lifting required for that particular API call. So these APIs usually do the same kinds of things although some of the details might differ between these different interfaces but you do things like establish a connection run a query, iterate over your rows and manage your transactions, that sort of thing. Here's an example from Vertica Python which just kind of goes into some of the details of what actually happens during the Connect API call. And you can see all these details in our GitHub implementation of this. There's actually a lot of moving parts in what happens during a connection. So let's walk through some of that and see what actually goes on. I might have my API call at this where I say Connect and I give it a DNS name and I give it an entire cluster and I give it my connection details my username and password and I tell the Python client to get me a session give me a connection so I can start doing some work. Well, in order to implement this what needs to happen? First, we need to do some TCP networking to establish our connection. So we need to understand what the request is where you're going to connect to and why by parsing the connection string and Vertica being a distributed system to provide high availability. So we might need to do some DNS lookups to resolve that DNS name which might be an entire cluster and not just a single machine so that you don't have to change your connection string every time you add or remove nodes to the database. So we do some high availability some DNS lookup stuff and then once we connect we might do load balancing too to balance the connections across the different initiator nodes in the cluster or in a subcluster as needed. Once we land on the node we want to be at we might do some TLS to secure our connections and Vertica just supports the initiator TLS protocols so this looks pretty familiar if you've ever used TLS anywhere before so you're going to do a certificate exchange and the client might send the server certificate to and then you're going to verify that the server is who it says it is so that you can know that you trust it. Once you've established that connection and secured it then you can start actually beginning to request a session within Vertica. So you're going to send over your user information like here's my username here's the database I want to connect to you might send some information about your application like a session label so that you can differentiate on the database with monitoring queries what the different connections are and what their purpose is and then you might also send over some session settings to do things like auto commit to change the state of your session for the duration of this connection so that you don't have to remember to do that with every query that you have. Once you ask Vertica for a session before Vertica will give you one it has to authenticate you and Vertica has lots of different authentication mechanisms so there's a negotiation that happens there to decide how to authenticate. Vertica decides based on who you are where you're coming from on the network and then you'll do an off specific kind of exchange depending on what the auth mechanism calls for until you are authenticated. Finally, Vertica trusts you and lets you in. So you're going to establish a session in Vertica and you might do some note keeping on the client side just to know what happened. So you might log some information you might record with the version of the databases you might do some protocol feature negotiation so if you connect to a version of the database that doesn't support all these protocols you might decide to turn some functionality off and that sort of thing. But finally after all that you can return from this API call and then your connection is good to go. So that connection is just one example of many different APIs and we're excited here because with Vertica Python we're really opening up the Vertica client wire protocol for the first time and so if you're a low level kind of Vertica developer and you might have used Postgres before you might know that some of Vertica's client protocol is derived from Postgres but they do differ in many significant ways and this is the first time we've ever kind of revealed those details about how it works and why. So not all Postgres protocol features work with Vertica because Vertica doesn't support all the features that Postgres does. So if you, Postgres for example has a large object interface that allows you to stream very wide data values over. Whereas Vertica doesn't really have very wide data values, right? You have 30, you have long bar charts but that's about as wide as you can get. Similarly, the Vertica protocol supports lots of features not present in Postgres, right? So load balancing for example which we just kind of went through an example of Postgres is a single node system. It doesn't really make sense for Postgres to have load balancing but load balancing is really important for Vertica because it is just Vertica Python serves as an open reference implementation of this protocol with all kinds of new details and extension points that we haven't revealed before. So if you look at these boxes below all these different things are new protocol features that we've implemented since August 2019 out in the open on our GitHub page for Python. Now the Vertica SQL Go implementation of these things is still in progress but the core protocols are there for basic kind of query operations. There's more to do there but we'll get there soon. So this is really cool, right? Because not only do you have now a Python client implementation and you have a Go client implementation of this but you can use this protocol reference to do lots of other things too, right? The obvious thing you could do is build more clients for other languages, right? So if you have a need for a client in some other languages that Vertica doesn't start, support yet. Now you have everything available to solve that problem and to go about doing so if you need to. But beyond clients, right, it's also used for other things. So you might use it for mocking and testing things. So rather than connecting to a real Vertica database you can simulate some of that. You can also use it to do things like query routing in proxies. So Uber for example, this log here in this link tells a great story of how they route different queries to different Vertica clusters by intercepting these protocol messages parsing the queries in them and deciding which clusters to send them to. So a lot of these things are kind of just ideas today. But now that you have the source code there's no limit in sight to what you can do with this thing. And so we're very interested in hearing your ideas and requests and we're happy to offer advice and collaborate on building some of these things together. So let's take a look now at some of the things we've already built that do these sorts of things. So here's a picture of Vertica's Grafana connector with some data powered from an example that we have in this blog link here. So this has sort of an internet of things kind of use case to it where we have lots of different sensors recording flight data feeding into Kafka which then gets loaded into Vertica and then finally it gets visualized nicely here with Grafana. And Grafana's visualizations make it really easy to analyze the data with your eyes and see when something happens. So in these highlighted sections here you notice a drop in some of the activity that's probably a problem worth looking into. It might be a lot harder to see that just by staring at a large table yourself. So how does a picture like that get generated with a tool like Grafana? Grafana specializes in visualizing time series data and time can be really tricky for computers to do correctly. You have time zones, daylight savings, leap seconds, negative infinity, time stamps, please don't ever use those. And every system it wasn't hard enough just with those problems. What makes it harder is that every system does it slightly differently. So if you're querying some time data how do we deal with these semantic differences as we cross these domain boundaries from Vertica to Grafana's back end architecture which is insulated and go out to Grafana's front end which is implemented with JavaScript. If you kind of read this from bottom up in terms of the processing first you select the time stamp and Vertica's time stamp has to be converted to a go time object. And we have to reconcile the differences that there might be as we translate it. So go time has a different time zone specifier format and it also supports nanoseconds precision while Vertica only supports microseconds precision. So that's not too big of a deal when you're querying data because you just see some extra zeros in those fractional seconds. But on the way in if you're loading data we have to find a way to resolve those things. Once it's into the go process it has to be converted further to render in the JavaScript UI. So there the go time object has to be converted to a JavaScript AngularJS date object. And there too we have to reconcile those differences. So a lot of these differences might just be presentation and not so much the actual data changing but you might want to choose to render the date in a more human readable format like we've done in this example here. Here's another picture. This is another picture of some time series data and this one shows you can kind of actually write your own queries to provide answers. So if you look closely right here you can see there's actually some functions that might not look too familiar with you if you know Vertica's functions. Vertica doesn't have a dollar underscore underscore time function or a time filter function. So what's actually happening there? How does this actually provide an answer if it's not really real Vertica syntax? Well it's not sufficient to just know how to manipulate data. It's also really important that you know how to operate with metadata. So information about how the data works in the data source Vertica in this case. So Grafana needs to know how time works in detail for each data source beyond doing that basic IO that we just saw in the previous example. So it needs to know how do you connect to the data source to get some time data. How do you know what time data types and functions there are and how they behave? How do you generate a query that references the time literal? And finally, once you've figured out how to do all that, how do you find the time in the database? How do you know which tables have time columns and then they might be worth rendering in this kind of UI? So Go's database standard doesn't actually really offer many metadata interfaces. Nevertheless, Grafana needs to know those answers and so it has its own plugin layer that provides a standardizing layer whereby every data source can implement hints in that metadata customization needed to have an extensible data source backend. So we have another open source project, the Vertica Grafana data source, which is a plugin that uses Grafana's extension points with JavaScript in the front end plugins and also with Go in the back end plugins to provide Vertica connectivity inside Grafana. So the way this kind of works, the plugin frameworks defines those standardizing functions like time and time filter and it's our plugin that's going to rewrite them in terms of Vertica syntax. So in this example, time gets rewritten to a Vertica cast and time filter becomes a between predicate. So that's one example of how you can use Grafana but also how you might build any arbitrary visualization tool that works with data in Vertica. So let's now look at some other examples and reference architectures that we have out on our GitHub page. For some advanced integrations there's clearly a need to go beyond these standards. So SQL and these surrounding standards like JDBC and ODBC were really critical in the early days of Vertica because they really enabled a lot of generic database tools. And those will always continue to play a really important role but the big data technology space kind of moves a lot faster than these old database standards can kind of keep up with. So there's all kinds of new advanced analytics and kind of query pushdown logic that weren't ever possible 10 or 20 years ago that Vertica can do natively. There's also all kinds of data oriented application workflows doing things like streaming data or parallel loading or machine learning. And all of these things we need to build software with but we don't really have standards to go by. So what do we do there? Well open source implementations make for easier integrations and applications all over the place. So even if you're not using Gravana for example other tools have similar challenges that you need to overcome and it helps to have an example there to show you how to do it. Take machine learning for example. There's been many excellent machine learning tools that have kind of arisen over the years to make data science and the task of machine learning a lot easier. And a lot of those have basic database connectivity but they kind of generally only treat the database as a source of data. So they do lots of data I.O. to extract data from a database like Vertica for processing in some other engine. And we all know that's not the most efficient way to do it. It's much better if you can leverage Vertica's scale and bring the processing to the data. So a lot of these tools don't take full advantage of Vertica because there's not really a uniform way to go do so with these standards. So instead we have a project called Vertica ML Python and this kind of serves as a reference architecture of how you can do scalable machine learning with Vertica. So this project establishes a sort of familiar machine learning workflow that scales with Vertica. So it kind of feels similar to like a scikit-learn kind of project except all of the processing and aggregation and heavy lifting and data processing happens in Vertica. So this makes for a much more lightweight scalable approach that you might otherwise be used to. So with Vertica ML Python you can probably use this yourself but you could also see how it works, right? So if it doesn't meet all your needs you can still see the code and customize it to build your own approach. We've also got lots of examples of our UDX framework and so this is an older GitHub project we've actually had this for a couple of years but it is really useful and important so I wanted to plug it here. With our user defined extension framework or UDXs this allows you to extend the operators that the Vertica execute when it does a database load or a database query. So with UDXs you can write your own domain logic in a C++, Java, Python or R and you can call them within the context of a SQL query. And Vertica brings your logic to that data and makes it fast and scalable and fault tolerant and correct for you so you don't have to worry about all those hard problems. So our UDX examples demonstrate how you can use our SDK to solve interesting problems and some of these examples might be complete, total usable packages or libraries so for example we have a curl source that allows you to extract data from any curable endpoint and load it into Vertica we've got things like an ODBC connector that allows you to access data in an external database via an ODBC driver within the context of a Vertica query all kinds of parsers and string processors and things like that. We also have more kind of exciting and interesting things where you might not really think of Vertica being able to do that, like a heat map generator which takes some XY coordinates and renders it on top of an image to show you the hotspots in it. So the image on the right was actually generated from one of our intern gaming sessions a few years back. So all these things are great examples that show you not just how you can solve problems but also how you can use this SDK to solve neat things that maybe no one else has to solve unique to your business and your needs. Another exciting benefit is with testing. So the test automation strategy that we have in Vertica Python, these clients really generalizes well beyond the needs of a database client. Anyone that's ever built a Vertica integration or an application probably has a need to write some integration tests and that can be hard to do with all the moving parts in a big data solution. But with our code being open source you can see in Vertica Python in particular how we structured our tests to facilitate smooth testing that's fast to deterministic and easy to use. So we've automated the download process, the installation and deployment process of a Vertica community edition and with a single click you can run through the tests locally and part of the PR workflow via Travis TI. We also do this from multiple different Python environments. So for all Python versions from up to 3.8 for different Python interpreters and for different Linux distros we're running through all of them very quickly with ease thanks to all this automation. So today you can see how we do it in Vertica Python. In the future we might want to spin that out into its own kind of stand-load test-bed starter project so that if you're starting any kind of new Vertica integration this might be a good starting point for you to get going quickly. So that brings us to some of the future work we want to do here in the open source space. Well, there's a lot of it. So in terms of the client stuff for Python we are marching towards our 1.0 release which is when we aim to be protocol complete to support all of Vertica's unique protocols including copy local and some new protocols invented to support complex types which is a new feature in Vertica 10. We have some cursor enhancements to do things like better streaming and improved performance. Beyond that we want to take it where you want to bring it. So send us your requests. In the go client front this is about a year behind Python in terms of its protocol implementation but the basic operations are there but we still have more work to do to implement things like load balancing, some of the advanced odds and other things. But there too we want to work with you and we want to focus on what's important to you so that we can continue to grow and be more useful and more powerful over time. Finally this question of well what about beyond database clients what else do we want to do to support open source? If you're building a very deep or robust vertical integration you probably need to do a lot more exciting things than just run SQL queries and process the answers.  There's even fewer standards for doing all these different things compared to the SQL that's a well established pattern and there's lots of downstream work that that can enable. But there's also clearly a need for lots of other open source protocols, architectures and examples to show you how to do these things in lieu of real standards. We talked a little bit about how you could do UDXs or testing or machine learning but there's all sorts of other use cases too. That's why we're excited to announce here Awesome Vertica which is a new collection of open source kind of resources available on our GitHub page. If you haven't heard of this awesome manifesto before I highly recommend you check out this GitHub page on the right. We're not kind of unique here but there's lots of awesome projects for all kinds of different tools and systems out there. It's a great way to establish a community and share different resources whether they're open source projects, blogs, examples, references, community resources and all that. It is an open source project so it's sort of an open source Wiki and you can contribute to it by submitting yourselves a PR. We've seeded it with some of our favorite tools and projects out there but there's plenty more out there and we hope to see more grow over time. Definitely check this out and help us make it better.  I wanted to thank you all. Special thanks to Sitingren and Roger Huber who are the project leads but we've already been contributing stuff. This has already been going on for a long time and we hope to keep it going and keep it growing with your help. If you want to talk to us you can find us at this email address here but of course you can also find us on the vertical forums or you can talk to us on GitHub too and there you can find links to all the different products I talked about today. With that I think we're going to wrap up and now we're going to hand it off for some Q&A.


Ladies and gentlemen, the winner of the 2019 Gibraltar International Chess Festival, the one and only Vladislav Artemiev. Vladislav, a very, very big congratulations. Thank you very much, yes. First time in Gibraltar and you win it outright. What does this win mean to you? Yes, of course. Today I played with a strong Chinese grandmaster Yu Yan Yi and I don't have good preparation today because I finished my sleep only at 8 o'clock. But okay, I know that I will play after D4 and after E4. Before this game we played only in rapid and blitz and my opponent played with me two times D4 and we have once Greenfield and Slavyan defense. But here he wanted a win, I think only a win, so E4. Okay, usually I played C5 and neither openings, but now I choose C6. And okay, I looked at the safety variation when Karthikeyan beat Maxim. And in this moment I start feeling that if I do draw, I will play tie-break with Morali Karthikeyan. But okay, he is a talented young player, but I feeling that it will be Maxim if we have a tie-break. So, okay, I choose not to miss my won today and I not wanted a tie-break in this moment. Okay, what I can say, I am happy after this win. Before the game I was angry on the draw, I think, so I choose Karakam. But I waged this, my opponent was a real aggressive style. And okay, I have a good relax before and good sleep, so I was ready. So, you were taking the safety first approach, but if your opponent gave you the chance, you were ready to take it. Yes, my opponent gave me a chance today. If he wanted a draw, I think that it will be a draw. But okay, it's a sport and when you have a chance on the first place, you must take the risk for both, yes. Because if you have any ambitions, I also, if I have a different situation, play it on the win. If I have less half point, so okay. It was a big day for you today, were you nervous before the game? Yes, today is big day for me. I would like to say as I speak early, it's fortunately and big surprise for me that I have a good conditions because I have a study in university before this and I not have many times for the good preparation for training. But before when I have three months, I usually training, so it's normal, yes. Coming into this event at the start, what were your expectations or hopes from this event? When we start the first game, I very want to play in chess. So okay, I want a first game, I want a second game. And interesting that a very important moment was when I win to Renat Jimabayev. Because we have a normal position and Renat missed a draw. Okay, he thinks that he gives a mate, but fortunately for me. So I start understanding that I like it maybe. So would you say it was in this moment, this game against Renat that you started feeling and started believing that you will win this tournament? I think that after this I have possible feelings that I can beat different opponents because I understand that I have good conditions. Okay, but later I played with top players Nakamura, Vashjela Graf and Aranyan. And I would like to say that most difficult game for me with Aranyan was because I have good black PSs. And I was without chances on the win, only defending. But I played as well this game. And after this game, I understand that I must win in this tournament. And when I played with David Navara, I wanted to win. You played very consistently and you mentioned that your game against Lev was the most difficult. According to you, which was your best game in this tournament? Best game? I think that I have many interesting games. Good game I have with Nakamura. My opponent in the last moment has a chance after 9-3. Okay, game with Vaibhav Nakamura and David Navara are interesting, but my opponent is not like when he has passive positions. So I try QA7. Yes, it's a very practical choice for me. 8.5 out of 10, 27 rating points and 25,000 pounds to take back home. A successful start to the year? Yes, of course. I'm not waiting for this start of year. It will be a great performance for me. It's strange when you have a big rating cost me, when you have 27 plus. Yes, so okay, it's very well. I think that I do is better my level in the world chess now. Okay, my goal is a world cup maybe, because if you want to play in a candidate tournament, you must qualify. You have any options, Grand Prix or a world cup, but a world cup, you have table breaks maybe, and it's interesting. Okay, European Championship maybe, I will play. And how important is winning the Gibraltar Masters in your career? Okay, usually I was famous as a great player in Rapid and Blitz, because example on the last world championship in Rapid, I shared second place, but I rank it a little less, but okay, great result, Magnus Carlsen also fifth place. In classic, I was also a good Grandmaster, because I have a normal rating in the top 100, but it's my first big such result. I winning different tournaments, but not famous as Gibraltar chess festival, so I hope that maybe I have invitation in the future, and I will try to play this good. Super player today, how are you going to celebrate now? When I return my home with my wife, I can start my dinner, celebrate dinner, maybe with music. I have only four days, because I later will short training camp in Moscow, but five days and I back again. I'm sure you are looking forward to celebrating it with your family. Now, does your wife also play chess? My wife also play in chess, but not professionally. She has a rating example of 2100, a feeder master. But she good understanding me, and she watch all my games when I play here, and it's our common one, I think. Super, now finally give us your impressions about playing in Gibraltar overall as an event. Okay, Gibraltar is, as I speak, a very good tournament with many strong players. Also, good place, because I have two times every day when I have a wall cut on the street, on the game and after game. And not many less than how I have fresh air. Yes, and it's a good atmosphere, and I hope that I return in the future. We hope you return as well, and with your consistent and brilliant play here, Vlad, you have been a deserving champion of the Gibraltar Masters. Congratulations once again. Thank you, all the best for all the fans, and thank you for the support. I want to ask you before you go, is there something that a message for your fans or something that you would like to say to them? Okay, if I understand, I have many fans of the world in Russia. Also, I think that my fans congratulate me on the Internet. Thank you, thank you all here. Thank you so much for joining us, Vlad. Okay, thank you, all the best.


Live from Boston, Massachusetts, it's theCUBE, covering Spark Summit East 2017, brought to you by Databricks. Now, here are your hosts, Dave Vellante and George Gilbert. Welcome back to Boston, everybody. This is Spark Summit East, hashtag Spark Summit, and this is theCUBE. John Stoica is here. He's the executive chairman of Databricks and professor of computer science at UCAL Berkeley. I just, the smarts is rubbing off me. I always feel smart when I co-host with George. John, having you on is just a pleasure, so thanks very much for taking the time out. Thank you for having me. So, love the talk this morning. We learned about Rise Labs. We're going to talk about that, which is Son of Amp. You made the father of those two, so. Again, welcome. Give us the update. Great keynote this morning. How's the vibe? How are you feeling? I think it's great and thank you and thank everyone for attending this summit. It's a lot of energy, a lot of interesting discussions and a lot of ideas around. So, I'm very happy about how things are going. Yeah, so, well, let's start with Rise Labs. Maybe take us back to those who don't know, understand sort of the birth of Amp and what you were trying to achieve there and what's next. Yeah, so, the Amp was a six year project at Berkeley and it involved around eight faculties and over the duration of the lab, around 60 students and postdocs. And the mission of the Amp Lab was to make sense of the big data. Amp Lab started in 2009 and at the end of 2009. And the premise is that in order to make sense of this big data, we need a holistic approach which involves algorithms, in particular machine learning algorithms, machines, means systems, large scale systems and the people, crowdsourcing. And more precisely, the goal was to build a stack, data analytics stack for interactive analytics to be used across industry and academia. And of course, being at Berkeley, it has to be open source. So that's basically what was Amp Lab and it was a birthplace for Apache Spark. That's why we are all here today. And a few other open source systems like Mezos, Apache Mezos and Alux shows, which was previously called Tachyon. And so Amp Lab ended in December last year. And in January, we started a new lab, which is called RISE. RISE stands for Real-Time Intelligent Secure Execution. And the premise of the new lab is that actually the real value in the data is the decision you can make on the data. And you can see this more and more at almost every organization. They want to use their data to make some decision to improve their business processes, application services, or come up with new application services. But then if you think about that, what does it mean that they emphasize this on the decision? Then it means that you want decision to be fast because fast decisions are better than slower decisions. You want decisions to be on fresh data, on live data, because decisions on the data I have right now are in general better than decisions on the data from yesterday or last week. And then you also want to make targeted, personalized decisions because the decisions on personal informations are better than on aggregate information. So that's fundamental premise. So therefore you want to build platforms, tools, and algorithms to enable intelligent real-time decisions on live data with strong security. And the security is a big emphasize of the lab because it means to provide privacy, confidentiality, and integrity, and as you hear about data breaches or things like that every day. So for an organization it's extremely important to provide privacy and confidentiality to their users. And it's not only because the users want that but it's also indirectly can help them to improve their service. Because if I guarantee your data is confidential with me, you are probably much more willing to share some of your data with me and if you share some of the data with me I can build and provide better services. So that's basically the nutshell what the lab is and what the focus is. Okay, so you said three things, fast, live, and targeted. So fast means you can affect the outcome. Live data means it's better quality and then targeted means it's relevant. Okay, and then my question on security, I felt like when cloud and big data came to fore, security became a do-over. Is that a fair assessment? Doing it over. Or as Bill Clinton would call it, a mulligan. Am I, yeah, do you get a mulligan on security? I think security is always a difficult topic because it means so many things for so many people. So there are instances in actually cloud is quite secure. It's actually cloud can be more secure than some on-prem deployments. In fact, if you hear about these data leaks or security breaches, most of you don't hear them happening in the cloud and there are some reasons for that, right? It's because they have trained people, they are paranoid about this, they do certification much more often and things like that. But still, the state of security is not that great. For instance, if I compromise your operating system or that it's in cloud or they are not in the cloud, I can do anything, right? Or your VM, right? It's your, in all these clouds, you run on a VM and now you are going to learn on some containers, right? So it's, you know, there are a lot of attacks or there are attacks or physical attacks with which your data is encrypted. But if I can look at the access patterns, how much data you transfer or how much data you access from memory, then I can infer something about what you are doing, about your queries, right? If it's more data, maybe it's a query on New York. If it's less data, it's probably maybe something more like something at Berkeley. So you can infer from multiple queries just looking at the access. So it's a difficult problem. But fortunately, again, there are some new technologies which are developed and some new algorithms which gives us some hope. One of the most interesting technology which is happening today is hardware enclaves. So with hardware enclaves, you can execute the code within this enclave which is hardware protected. And even if your operating system or VM is compromised, it cannot access your code which runs into this enclave. And Intel has Intel SGX and we are working and collaborating with them actively. ARM has Trust Zone and AMD also announced they are going to have a similar technology in their chips. So that's kind of very interesting and very promising development. I think the other aspect in which it's a focus of the lab is that even with these hardware enclaves, it doesn't automatically solve the problem because if the code itself has a vulnerability, yes, I can run the code in the hardware enclave so that the code can send out data outside. A more granular perimeter, right? So yeah, so we are looking and there are security experts in the new lab looking at this, maybe how to split the application so you run only a small part in the enclave which is a critical part and you can make sure that it's also the code is secure and the rest of the code you run outside but the rest of the code it's only going to work on data which is encrypted, right? So, you know, there is a lot of interesting research but you know, that's good. And does blockchain fit in there as well? Yeah, I think blockchain is a very interesting technology and again, it's a real time in that area. It's also very interesting directions, absolutely.  They had batch and you have interactive and now you've got continuous. Continuous, yes. And I know that's a topic that you want to discuss and I'd love to hear more about that but George, tee it up. Well okay, so we were talking earlier and the objective of RISE is fast and continuous type decisions and this is different from the traditional you either do it batch, you do it interactive. So maybe tell us about some applications where that is one workload among the other traditional workloads and then let's unpack that a little more. Yeah, so I'll give you a few applications. So it's more than continuously interact with the environment continuously but you also learn continuously. I'll give you some examples. So for instance, you know an example, think about you want to detect network security attack and respond and diagnose and defend in real time. So what this means that you need to continuously get logs from the network and from the more endpoints you can get the better, right? Because the more data will help you to detect things faster but then you need to detect the new pattern and you need to learn the new patterns because new security attacks, which is the one which are effective are slightly different from the past one because you hope that you already have defense in place for the past ones. So now you are going to learn that and then you are going to react. You may push patches in real time. You may push filters, installing new filters to firewalls. So that's kind of an application is going in real time. Another application can be about self-driving. Now, self-driving makes tremendous strides and a lot of algorithms, very smart algorithms, now they are implemented on the cars, right? All the system is on the cars. But imagine now that you want to continuously get the information from the car, aggregate and learn and then send back the information you learn or to the cars. Like for instance, if it's an accident, a roadblock, an object which is dropped on the highway. So you can learn from the other cars which what they've done in that situation, let me mean in some cases a driver took an evasive action. Maybe you can monitor also the cars which are not self-driving, but driven by the humans. And then you learn that in real time and then the other cars which follows through the same confront with the same situation, they now know what to do, right? So this is, it's again, I want to emphasize it's not only continuous sensing environment and making the decisions, but a very important components about learning. Let me take you back to the security examples as I sort of process the auto one. So in the security example, it doesn't sound like, I mean if you have a vast network, end points, software, infrastructure, you're not going to have one God model looking out at everything. So I assume that means there are models distributed everywhere and they don't know what a new, necessarily but an entirely new attack pattern looks like. So in other words, for that isolated model, it doesn't know what it doesn't know. I don't know if that's what Rumsfeld called it or whatever, but how does it know what to pass back for retraining? Yes, yes, yes. So there are many aspects and there are many things you can look at. And it's again, this is not, it's a research problem, so I cannot give you the solution now, I can hypothesize and I give you some examples. But for instance, you can look about when you correlate on some, by observing the effects, some of the effects of the attacks are visible. In some case, you denial of service attack. That's pretty clear. Even the world and so forth, they may be caused computers to crash, right? So once you see some, this kind of anomaly, right? Anomalies on the end devices and host and things like that may be reported by humans, right? Then you can try to correlate which what kind of traffic you got, right? And from there, from that correlation, probably you can, and hopefully, you can develop some models so to identify what kind of traffic where it comes from, what is the content and so forth which causes behavior, anomalous behavior. And where is that correlation happening? I think it will happen everywhere, right? Because it's- At the edge and at the center. Absolutely. And then I assume that it sounds like the models both at the edge and at the center are ensemble models. Yes. Because you're tracking different behavior. Yes, you are going to track a different behavior and you are going to, I think that's a good hypothesis. And then you are going to assemble them. It's assembled to come up with the best decision. Okay, so now let's wind forward to the car example. So it sounds like there's a mesh network. At least the Peter Levine sort of talk was there's near local compute resources and you can use Bitcoin to pay for it or blockchain or however it works. But that sort of topology, we haven't really encountered before in computing, have we? And how imminent is that sort of? I think that some of the stuff you can do today is a cloud. I think if you want super low latency, probably you need to have more computation towards the edges. But if I'm thinking that I want kind of reactions on tens, hundreds of milliseconds, in theory you can do it today with the cloud infrastructure you have. And if you think about, in many cases, you know, if you can do it within a few hundreds of milliseconds, it's still super useful, right? To avoid some object which was dropped on the highway. If I have a few hundred milliseconds, many cars will be effectively avoid that, having that information. Let's have that conversation about the edge, a little further one, we have an off camera. So there's a debate in our community about how much data will stay at the edge, how much will go into the cloud. David Floyer said 90% of it will stay at the edge. Your comment was it depends on the value. What do you mean by that? Yeah, so I think that depends who am I and how I perceive the value of the data. And you know, and what can be the value of the data? This is what I was saying, I think that the value of the data is fundamentally what kind of decisions, what kind of actions it will enable me to take, right? So here I'm not just talking about credit card information or things like that. Even in that case, there is an action I'm going, someone is going to take on that. But so if I do believe that the data can provide me with ability to take better actions and or make better decisions, I think that I want to keep it. And it's not because I want to keep it because also it's not only the decision it enables me now, but everyone is going to continuously improve their algorithms, develop new algorithms. And when you do that, how do you test them? You test on the old data, right? So I think that for all these reasons, a lot of data as a valuable data in this sense is going to go to the cloud. Now, there's a lot of data which will remain at the edges. And I think that's fair. But it's again, if a cloud provider or someone who provides a service in the cloud believes that the data is valuable, I do believe that eventually it's going to get to the cloud. So if it's valuable, it will be persisted and it will eventually get to the cloud. And we talked about latency, but there's a certain, you gave the example of an evasive action. You can't send that back to the cloud and make the decision, you have to make it real-time. But eventually that data, if it's important, will go back to the cloud. The other question of all this data that we are now processing in a continuous basis, how much actually will get persisted? Most of it, much of it probably does not get persisted, right? Is that fair assumption? Yeah, I think so. And probably, all the data is not equal, right? It's like, you want to maybe even if you take a continuous video, right, on the car, they continuously have videos for multiple cameras and radar, leader, all of this stuff, right, is continuous. And if you think about of this one, I would assume that you don't want to send all the data to the cloud, but the data around the interesting events you may want to do, right? So before or after the car, it was in the near accident or took an evasive action or the human had to intervene. So in all these cases, probably I want to send the data to the cloud. But for the most cases, probably not. It's good. We have to leave it there, but I'll give you the last word on things that are exciting you, things you're working on, interesting projects. Yeah, so I think this is what, you know, it's really what excites me is about how you are going to have this continuous application, you are going to continuously interact with the environment, you are going to continuously learn and improve. And here there are many challenges and I just want to say a few more there and what we haven't discussed. One, it's about, in general, it's about explainability. Right? If these systems augment the human decision process, if these systems are going to make decisions which impact you as a human, you want to know why, right? Like I gave these examples, assuming that you have machine learning algorithms in making a diagnosis on your MRI or X-ray. You want to know why? What is in this X-ray causes a decision, right? If you go to the doctor, they are going to point and show you, okay, this is why you have this condition. So I think this is very important because as a humans, you want to understand not only why the decision happens, but you also want to understand what you have to do because you want to understand what you need to do to do better in the future, right? Like if your mortgage is turned down, application is turned down, I want to know why is that? Because next time when I apply to the mortgage, I want to have a higher chance to get it through. I think that's a very important aspect. And the last thing I will say is that this is super important and you mentioned it's about having algorithms which can say, I don't know, right? It's like, okay, I've never seen this situation in the past, so I don't know what to do. This is much better than giving you just a wrong decision, right? Right, or low probability that you don't know what to do with. Yeah, excellent. John, thanks again for coming in theCUBE. It was really a pleasure having you. Thanks for having me. You're welcome. All right, keep it right there, everybody. George and I will be back to do our wrap right after this short break. This is theCUBE, we're live from Spark Summit East, right back.


BC Parks has a vision to make our parks welcoming and meaningfully accessible to everyone. Through collaboration with communities, generous support from partners, and committed leadership at all levels of our organization, we are taking concrete action to achieve this vision. Follow our journey as we begin a renewed commitment to inclusion in BC Parks.