So when we had that a credit heard that there was going to be a meetup that was a Montreal data, Montreal Python, Montreal Docker, we knew we had to be there, but I only have 300 seconds, so get ready. Today, I'm really excited to do the first ever demonstration outside the walls of that credit of our new product. It's a machine learning database, MLDB. So the data part is pretty easy. MLDB loves data. MLDB is essentially an end-to-end system designed to collect large volumes of sparse data to train machine learning models on that data and then deploy and keep updated those models for real time or batch processing. So MLDB loves data. MLDB loves Docker. MLDB is essentially a REST API delivered as a Docker image. So to run MLDB, it's just Docker run, some port mapping, MLDB. And that's it. Then you connect to whatever port you've specified, and that's basically our Docker and DevOps story with MLDB. And then last but not least, MLDB loves Python. MLDB loves Python in three different ways that I'm going to talk about. So number one, REST APIs are awesome for interacting over the web. REST APIs are awesome for integrating distributed systems. REST APIs are not great for their network latency. If you want to call a REST API in a tight loop, you're in for some pain and some latency. So what we do with MLDB is we allow you to take a Python script and ship it to MLDB overrest and we'll execute it in process for you. So we'll do the REST calls inside the MLDB process bypassing the network stack. So that's one way in which Python is essentially the scripting language for MLDB. The second way MLDB loves Python is that we love the IPython notebook, Jupyter interface for data science. It's an awesome way to have a conversation with a library to do some visualization to do data science. So with MLDB, we ship a library called PyMLDB, which is essentially a set of Python libraries that help you interact with MLDB. We've integrated pretty deeply into the IPython notebook using the IPython cell magic. Now I'm going to give a quick demonstration of that alongside the shipping of the Python code. Look, sorry. That's not what I wanted to do. So given I only have my whatever's left of my 300 seconds, this is a TSNI visualization of the Reddit universe. So every dot in this plot here is a subreddit. You've got all the musical subreddits up here. You've got all my little ponies, subreddits down here. I presented basically how to do this using scikit-learn back in December. This is the notebook that ships with MLDB on how to do this inside MLDB. So I'll show you very, very briefly how to do this with the Jupyter instance that ships inside MLDB. First thing you do, you load the MLDB extension after you've pip installed PyMLDB. Then basically you're going to use the percent MLDB cell magic to have an HTTP conversation with the server. So I'll walk you very briefly through this. We're going to delete the data, the machine learning pipelines in case they're already there. Then we're basically going to use three algorithms, SVD, singular value decomposition. So we put that, cameins for clustering. We don't have DB scan yet. And TSNI visualization, we use all the same tricks as scikit-learn to make it really, really fast. The next thing we need to do is we need to load some data. This is basically how you can ship Python code over to the MLDB process. You just say percent percent MLDB Pi. And this little script here, which downloads the file from the internet, decompresses it in memory and loads it into an MLDB dataset, will run inside the MLDB process. So it'll be quite fast. We're basically using the same rest interface as you can use over HTTP, but we're bypassing the network stack. So this runs in about 10 seconds. And then all we need to do is run our pipelines. We get it out to the bottom and we can basically query it using, you can query MLDB using a dialect of SQL to get out cluster labels, X and Y, and we can make our little subreddit map using bokeh. So this is all done in IPython notebook. You can run the IPython notebook that ships with the Docker container or you can run one on your own machine. So those are the first two ways in which MLDB loves Python. You can send Python code to it and we have some awesome hooks into IPython notebooks slash Jupyter depending on what you want to call it. The third way that MLDB loves Python is that we provide an SDK so you can build plugins for MLDB in Python. You can essentially embed some Python code into MLDB to essentially serve up new rest routes to build rest APIs, predictive APIs, and to build new UIs. So I have a quick little demo here called PyTanic, which will compute your chances of surviving the Titanic disaster based on your characteristics as a passenger. I'm running out of time, but basically here you have the percentage of the likelihood of surviving and you can see that the more you paid for your ticket, the more likely you were to survive, the older you were not too much relationship. So what I'm demoing here is that essentially as I'm sliding the slider around, my browser is making repeated HTTP calls to MLDB to the predictor inside. This scales up to thousands of requests per second for real time for batch scoring. We can do millions of scoring per second. So this is basically my demo of MLDB where we're at as a project. This is a major new product for our company. This is the first time I'm demoing it. I'm pretty excited. We're essentially in closed alpha right now, so I don't want to broadcast the URL here, but if you come talk to me or anybody from DaticRatic team, raise hands. Yay. Anybody from DaticRatic, all of us here on the tech team are based in Montreal. We'd be happy to talk to you. We'd be happy to meet with you in person. Get your feedback. So come talk to us. We'd be super happy to chat.