Hi, as she said, I'm Rick Ott and I work for Wilson Gear Digital, which is an advertising firm and we have an office in Columbus, that's where I work out of, Columbus, Ohio. And then there's an office here in New York. So they sponsored a lot of my ability to be here today, so I'll be plugging them throughout the talk, or plugging us, I should say. All right, so what I'm talking about is a database of things. Let me try something here, if I can. Is that, get me anything? Yeah, and then if I do that, what did that do? I'm trying to figure out how to swap back and forth efficiently on the screen. I think we just need to do this, do this. Can you see that? So what I have is a things database. And I'm gonna run a SQL command here, psql-d-things. That's probably a good idea. Let me see, hmm, will that work? There we go, yay, thank you, dash f, I'm in the wrong directory. Not that it matters. So I'm gonna run a sequence of SQL commands against these lights in front of us here and I'll come back and talk about what's happening as the talk goes on. All right, so we will go back to the talk while this is running. So that should be exciting. So I thought everybody had heard of the Internet of Things when I proposed this talk, but in going around I found a lot of people did not really know what that was and had never heard of the term. So let's very briefly talk about the Internet of Things. It's a buzzword that's been pretty popular in the tech communities for the last couple of years and it's all these different interconnected devices and things that you might have like a smart refrigerator and a smart toaster and smart light bulbs like the ones demoing here today. And Gartner said at the end of 2013, so in postgres terms, this is shortly after 9.3 was generally available. $1.9 trillion impact on the economy by 2020 within the next five or six years. That was a pretty big sum I thought and pretty amazing. And then I saw these quotes by the CEO of Cisco who thinks the decimal place is in the wrong place and he's saying $19 trillion. Originally he said $14 or $15 trillion, but every time he gives a speech it gets a little bigger.  So let's assume he's off by a factor of 10 and Gartner is right, that's pretty huge. And then if Gartner's off by a factor of 10, it's still this huge industry that is looming. And I think I saw an article recently that was calling it a tsunami of technology. Tim O'Reilly is a famous tech pundit and owner of O'Reilly Publishing. One of the things he was complaining about just a couple weeks ago in an interview was that the internet of things was lacking a consistent system or platform or a way for them to interact or things to work as systems of things. And this he saw was the major stumbling block to the whole hype around the internet of things. In Fast Company there was an article last month that basically said the same thing, that there's no way to get device to device communication working consistently anytime in the foreseeable future. The internet of things is never going to take off because of it. I think the reason they're saying that is because they haven't heard this talk yet today. We have a platform that will do this. So what I'm going to first talk about is foreign data wrappers, because while many people in the room are pretty familiar with them, there are going to be a few people who don't really quite get what foreign data wrappers are yet. So we'll start by talking about foreign data wrappers, get a sense of what they are, since they're the implementation method for the database of things. We'll talk a little bit about things and why things are interesting to databases. Then there's a Python library called Multicorn, which makes developing foreign data wrappers very easy and quick. And I'm going to show an example with the Philips Hue lighting system of an implementation of a database thing, thing, thing. Anyway, let's start with foreign data wrappers. So the SQL-MED standards were proposed in 2003, 12 years ago, and that stands for management of external data. At first, I thought it was something to do with medical health issues. I don't know. Anyway, what they do is they let you represent a table from some other database as a table in your database. And to work on that table and interact with it, it's like foreign data. And I thought that was pretty neat innovation. Postgres introduced some basic SQL-MED capabilities with 8.4 in 2009. With 9.1, they put select capabilities in. And then just a year and a quarter ago, they introduced the ability to actually do updates and change the data on the other end. So that's pretty important because all of this foreign data technology is still really new. A year and a quarter is hardly a lot of time, even in the technology world. And yet, a lot has happened since then. So the first thing, of course, is representing relational databases in your database. And there's lots of them out there that are very even written. No SQL databases. Suddenly, people figured out how to plug no SQL databases in and make them look like tables in Postgres. I wrote the rethink DB1 last fall, and that's what got me started thinking about foreign data wrappers in general. And then connectors, ODBC, JDBC, SQL Alchemy. These are generic connectors. Anything that you can talk to with JDBC, anything that you can talk to with SQL Alchemy, you can pull into your Postgres database as a foreign data wrapper. But that's not even the end of it yet. And it's only been a couple of years. We have all kinds of other things that aren't really databases that are being represented in Postgres as tables through foreign data wrappers. Google. You can actually do a Google search and return the results into a table. Twitter, you can take tweets and pump them into your database and make them look like tables. You can mess around with CSVs and LDAP. Well, LDAP's a database, but sort of XML files. There's this nifty one over here, black hole. That is a nice template that lets you, if you want to code in C, build a foreign data wrapper off of. It works like DevNull on a Unix file system. It just returns null columns, and you can write to it all day long, and it just eats them up. So there's been a lot of technology. The Postgres Wiki page there is where you can learn more about all the different foreign data wrappers that are already written and available and ready for you. There used to be two Wiki pages. One had an S on the end of it, and one didn't. About a month ago, somebody merged them, so now they're just one page. And they both had different content. It was a little confusing when you said, this doesn't look like the Wiki page I was looking at yesterday. It's because, anyway, that's fixed. So, how do you use a foreign data wrapper as a DBA? It's pretty straightforward. You set up a user on the other database with the relevant access permissions. You install an extension in the database, such as the Postgres foreign data wrapper extension. This makes all the libraries available to talk to the other database. You create something called a server, which is a definition of the foreign database. You also have to create a user on the other database. And then the last thing you do is you build a foreign table. So the main difference in creating a foreign table from a regular table is you use that keyword foreign right in front of the table. And then you specify the server that the table goes with, and then any specific options that you want to pass as well. At that point, you can use your foreign table just like a regular table in Postgres. You can select from it. If you have update permissions, you can update to it. And that's pretty neat. However, you can't put indexes or constraints on foreign tables. It's trusting the other end to do. So if the other end doesn't have an index on it, and you need that index, your performance is going to be terrible, if you really want to restrict various values that you're getting back or updating, you have to rely on the foreign end to do that. This one bugs me the most. None of the graphical clients that I've found or tried so far can actually see the tables. That includes PG-Admin. Now, there may be a way to do it in PG-Admin, but I haven't found it. They're just invisible. And that makes it really hard to work with if you used your graphical client. PC will work so if you do the following. And it is for most of the people here. But when you have other people working with your foreign tables, they may not be comfortable with the command line. So you can build a view on top of your foreign table, and all of the clients can see views. And then it'll look just like a regular table to the end user, and they can select and see the columns they can choose from in the table. And so almost always when I build a foreign table, I build a view on top of it just so we can look at it in the clients. Or you can do a backslash DET instead of a DT. I'm not sure why E instead of F for foreign, but there's probably a reason for that. External table, that's a good guess. So you can list all the foreign data extensions you've loaded in, you can list the servers, and you can list the user mappings at the command line. So if I were to cleverly switch over here to, I did that wrong again, didn't I? There. Maybe a slash DET. Did that get small again, or is that? Yeah, see if I can move that up a little bit too. I'm going to go back and forth between the real database in my presentation a few times here. So you can see I have some foreign data tables configured in my laptop's instance of Postgres. I can do a slash DETW. And I have multicorn installed, slash DES. And each of these is a separate server. We'll talk about why that is in just a second too. So as somebody who's worked a lot doing ETL work and data engineering work and moving data from one database to another and BCPing it out, or copying it out, or selecting it out and loading it in and filing it out, my first thought was foreign data wrappers are great. I never have to do ETL again. Why not? I mean, I can put any data I want anywhere with any database in my Postgres instance. This is awesome. Well, there are some caveats to foreign data wrappers that make you want to think twice before you use them. They're really handy and quick. But here I decided to throw a slide in just even though this has nothing to do with the database of things to talk about just foreign data wrappers in general. If you have a lot of small data sources and you're unioning them all together, you might want to look at a different tool to pull all your data in rather than setting up 2 dozen or 1,000 foreign tables in your database.  A lot of times, the reason we're moving data is to get it out of a front end high performance system into a back end analytics engine of some sort. And you don't want to run your queries on the front end if you can avoid it. When you're connecting over the network, when you're connecting over the network, there's a lot of overhead with setting up the connection, going over the network, getting the query, coming back to your database. And if you're doing a lot of little queries, a lot of little results, that network overhead takes so much longer than the query would take, you're probably better off just copying the data into the database where you're at and running the queries locally. If you're running big queries on the other system, then assuming you're not impacting their performance, the network overhead's such a small percentage of the query time that you don't have to concern yourself too much with that issue. If you have a foreign database that's not always there, that goes up and down, disappears, comes and goes, foreign data wrappers aren't going to do you a lot of good and you're still back to copying data again. So there's a lot of technology for copying data. I thought I would throw this up here and getting the data back into your database and avoid using foreign data wrappers. You can use some of the replication technologies that have been introduced lately in Postgres. Symmetric DS, I have to give a plug for. I use that a lot. It's a local to Columbus company, Jump Mind, and it allows you to integrate with any JDBC compliant database. It moves data around scales to tens of thousands of databases to aggregate your data and replicate it. It can replicate in cycles, can do bi-directional replication. It's a really nifty tool. Check it out if you haven't played with it before. It's great for moving data in near real time and small batches around your data ecosystem. You can write batch jobs. And then the last bullet here is you can also put a materialized view on top of your foreign table. Materialized views are another new feature in Postgres. And the nice thing about materialized views is it copies the data from the foreign system to your local system so that you don't have to go to the foreign system to query it, but you don't have to set up anything external to Postgres to actually do the copying. And with 9.4, you can do concurrent refreshes. And concurrent refreshes are awesome because you cannot have to totally block all reeds on that foreign table while that's happening. So materialized views go hand in hand with foreign data wrappers in some cases. So we'll shift gears here and talk about things now. And what do we know about things? This is a picture I took in Columbus at the Franklin Conservatory. It's an art exhibit by a guy named Bruce Monroe from the UK last summer. And these are lights that are really cool-looking. I thought they looked like alien brains to me. And I reversed the color and stuff. But I like this picture, so I had to throw out my slides. So you guys can read. I'm just going to pop these up. These are things that could be connected to your database. And one of the things I was thinking about as I was preparing this talk is why would you have a $1.9 trillion the internet of things industry? And how about this? So suppose you had the cell phone industry. There's going to be a point where everybody on the planet has a cell phone or a smartphone. And most people will not need more than one. So the cell phone industry is going to top out at what, 7 billion cell phones? That's assuming everybody on the planet has a smartphone. But things, everybody needs more things. The more things you have when you die, the more you win. So the market for things is much larger than the market for, say, cell smartphones. So smart things are going to be huge. Everything's going to be smart because people can make money off it for no other reason. So things have identifiers. Each of these light bulbs has a light bulb identifier that goes with it. Things have some sort of state. They're on or off, cold or hot, closed or open. Some things you can change the state on, like I can do with these light bulbs. I can turn them on and off. And when you organize things, they turn into a table. So that means that things, to me, are data. And they can fit right in my database. And that was my cat, by the way, in that picture. We have four cats, a dog, two fish tanks, and two kids. I threw some of those creatures later in the presentation as well. So why would you want to put your things in a database? That seems a little bit crazy. I mean, databases are good for data, and things are good for things. And even if things are data, why would you want to put them in the database? It's kind of a good question. Well, the first and foremost is that databases, in particular, Postgres are well-known and widely supported. If you want to program in Go, if you want to program in Scala, if you want to program in Haskell or Python, or use a LAMP stack, or use a .NET stack, or whatever you want to use, there's a way to connect it to the database. And your average application developer, your average front end developer, your average software developer can sit down and knows how to talk to databases, knows how to interact with them. So this is a standard well-known, already well-established, easy, well, maybe not easy to use, maybe easy to use, I don't know. Anyway, it's well-known and widely supported. So if you can get your things in a database, you open the utility of your things to the larger development community, and not just the data geeks or the API geeks or the REST JSON Go programming geeks. And I think this is where the internet of things can be a platform representation on Postgres. This is the big advantage over these other companies that are out there trying to build. We're going to build a standard API that everybody who makes a thing can configure to our API. And we're going to have a standards committee and figure out what the standard things API is going to be. And maybe in 10 years there'll be a things system that you can use. It's already here. We have all the standards. We have all the tools. We have everything we need to jump into a $2 trillion industry. It's consistent across all things. If you have a table of things, a table is a table, is a table of this refrigerators or light bulbs or garage or openers. Once you have all your things in your database, you can do data science and play with them. You have data science tools that interact with your database and let you look across all your things.  You could look for patterns in all the different earthquake sensors around the country using standard database and data science tools. This is kind of an interesting use for a database of things. You can join with reference tables and maintenance logs and other types of data that is not necessarily things, such as who installed the slide bulb? When did they change it? When and how long has it been on? How many watts does it burn? Where is it located? How, your imagination can go crazy. When were the belts last changed on the refrigerator? When was the air conditioning data or the air conditioning freon replaced? How many times has the garage door been open in the last month? There's lots of things you can store in the data that would be separate tables that you can then join against your actual things. And you could say, update all the light bulbs and turn them on that haven't been used in the last three years or blink the light bulb that Karen changed last week. So this is a very valuable use of things in data. And you can join and union with each other to build Frankenstein monsters of things. If for some reason you wanted some sort of union table of refrigerators and thermostats, I don't know why, but there might be a reason for it. And here's a database joke for those of you who like database jokes. So another interesting thing in Postgres 9.4 they supported putting triggers on foreign tables, which is weird, you can't put constraints on foreign tables but you can put triggers on them. Okay, that'll be great. So in theory, if you're using your database interface and you wanna use one of these triggers, I haven't tested them yet to see if they really work. You could tell the database open my garage door and then there's a trigger on that table that would also turn your kitchen light on and log the fact that the garage door was opened. So this is all stuff we can do in the database. I think it's why you would wanna build a database of things. We'll jump now into how to actually build a thing in your database. And I'm gonna use multicorn for this. I know some people in here have already complained to me that, oh, multicorn, that's Python, yeah. I'd rather code and see. Couldn't you show me an example and see? Well, I code mostly in Python. I have been for 20 years and since 1.0 came out. So I'm gonna use Python for this and hopefully you can all follow along and use your favorite language and tools later. But the important thing about multicorn is it takes care of all the rocket science of interacting with the database for you. So you don't really have to know how to talk to Postgres to get multicorn to work. Most of that's taken care of in the multicorn implementation. You just have to know how to talk to your thing and how you want it to look in the database. I'm gonna use these Philips Hue lights and I chose these as the demo because they had a really clear and well-written API and really good forum online and it was very straightforward to tackle these as an API. Some things are proprietary still. Some things are hard to figure out how they work. This was pretty straightforward. I was also gonna do Lego Robotics and bring in a Lego robot and make it in my table. But I ran out of time. The four cats, dog, two fish tanks, kids, full-time job. I should point out that Wilson and Gear, although we are a marketing and advertising firm, have nothing to do with Philips Hue at this point. If Philips Hue wants to contact us to do some stuff, we'd be happy to do that. But maybe next time I'll have a robot and robots have sensors and motor positions. So they have all the same things that the other things have. Arm is up into the left and you can do an update and move the arm down and you can read the bumper sensor and stuff on it from the tables. I just haven't gotten it implemented yet. So there's a set of API endpoints in Philips Hue. I've implemented three of them. I've implemented lights, sensors, and config. I have not gotten to scenes or groups yet. So lights lets me control the lights in the Philips Hue system. Sensors, you can plug sensors in. There's one that comes built into the little bridge. And so I use that to implement a sensor select statement and then config lets you change the IP address, change the users, and that sort of thing. Scenes and groups allow you to pre-define colors and combinations on your lights so you can say I want my room to be mellow right now and it'll change all the lights in your room to be mellow. All at once rather than having to figure out what each light should be and tune it. This software is available in this repo on GitHub. I just published it about 15 minutes before this talk. I still have to do the read me on it. So the read me is kind of lame but you can refer to these slides until I finish the read me. When you set up the Philips Hue lights, you pull in, I use PGXN, the multicorn extension. It goes right in one line command. I'm assuming PGXN is installed, that is. Clone the multicorn Postgres Hue repository for my repo. CD into it and run this setup.py install and it's there. The next step is to go in and run some DDL which I'll show you in a few minutes. And that's another cat picture. So we create an extension just like we would for the Postgres foreign data wrapper. We create a server just like we would for the Postgres foreign data wrapper. We don't bother with user mappings in this case and then we create the table. Now, because the foreign data wrappers for these types of things are very specific, I mean the light bulb things is a very specific API, you can't just create any arbitrary table like you might connecting to a foreign database. You have to be specifically aligned with the API. And if the API changes, you may need to change your table or put some translation in between or a view that hides the fact that the API changed. And that's why we have a separate foreign data wrapper for each of the end points, the lights, configs. Each one has a separate set of API interactions that are behind it to make the table. But that's okay, the thing manufacturers can build the foreign data wrapper part, all you have to do is know how to create the tables and use the database of things. So, multicorn implementations work like this. You pull in multicorn. And you inherit a new class from the foreign data wrapper class. Then you build the following functions, select. Can you read the state of your device or your thing and feed it back into the table? So, if you start with this, if you have a thing and you build your select, it's probably about 10 lines of code, 15 lines of code, you have a foreign data wrapper ready to go that can read the state of your device. And everything else is handled by multicorn. It's like magic. The next thing you can do is you can say, well, I wanna change the state. So, let's write a function that does a post back to my thing API and updates the state. And this is, again, a fairly simple and straightforward little routine that updates your thing. You can also implement insert and delete. Typically, we don't add things to the real world from the database. That would be like magic. But some of the APIs do support inserts to an extent. If you have a new device and it's on the network and you have to somehow sync it with your controller, you may have an insert or you may remove a light bulb from your controller. And so there may be cases where you do insert and delete. But for the most part, you don't go, geez, I need a beer fridge in this room. Update, my refrigerators add beer fridge and one just appears there. That would be pretty cool, though. All right, so if you get this far, you've got a basic foreign data wrapper that you can work with and you have started your database of new things. You can also, in multicorn, implement a rollback and commit function. So if you really wanna do thing manipulations in large transactions, you can implement those. I haven't quite figured out how that works in the context of things because if you change the state of a light bulb, I guess you wait until you do the commit before you actually change the state of a light bulb, but that's something to ponder. So for my implementation, I have not worked those out yet to make them work exactly right, but I'm sure it can be done with some clever development and a little bit of thought. Everything else takes place in the rocket science magic engine of multicorn. So I'm gonna jump back and forth between code and this other stuff now to show you what it looks like. So here we have, we're gonna do a create server. This is gonna define some larger scale options that we're just gonna pull in when we create the table. So we create a new class in Python. We inherit the multicorn foreign data wrapper class. I didn't bother renaming it as multicorn foreign data wrapper, I just called it foreign data wrapper. And then we initialize our class and we initialize it with the options we're gonna specify up here. And this lets us set the IP address, the username and miscellaneous things. Let's see if we can do it. Control, cause you guys like code. And then click here. And then control D. And I'm watching the time. So I've got about 15 minutes left here to show you everything. So we're gonna speed up a little. So here's the init under the, after we have established the class, we set our options. And then I also set some global variables for the class in the initialization. And that is the entire init function. That was a very fast run through of it. You're welcome to pull the github and ask me questions later. But I now have this initialize. So I can call the server command. I can't do an update or a select yet. That's the next thing in this list. Let me go back to the presentations. Next slide. So in multicore in the select is called execute. And this confused me at first as to why would they would call it execute. And I think it's because when you do an update, it actually runs the execute first to get the primary keys for the rows you're updating. And then it does the update. So you need the execute to be able to do updates as well. So it's not just select. So they renamed it from select so that you could tell that it had more than one use. So in the execute statement, we'll do a get to our API, get back all of the lights that we're getting, iterate through the lights. We will set them in an order dictionary so that the rows stay in the same order that they were requested. And then pull in each column value and set it. And then I'm gonna go ahead and check the filters that somebody put on it where light ID equals two, where brightness equals 100, where the color is red. And I do it this way because most of the time you're never gonna have more than 64 light bulbs. So you should be able to iterate through 64 objects like really fast. If you had a huge set of devices, you would probably want to work on it another way. The hue API does not let you do a get and get the state of all the lights by some criteria in there. You can't do a select on the API. So we have to do the select and filtering after we get all the lights back. It's kind of clueless but this is the way it's gonna be for all the things we implement. Each API is gonna have its own idiosyncrasies. So we pass quals and columns into the execute. Columns are the ones that the user requested and quals is the filters in the where clause. Not every possible where clause that you're gonna construct is gonna work because you have to implement how to handle the where clause yourself. So I have this thing here called operator function and I pass it the operator from the Postgres request. I get back a Python function and then I use the Python function to check and see if that column and value match. Let me show you that real quick in the code. Some people like talks with lots of code. Some people don't. I apologize if you don't like looking at code. So here's where we do the get right here and then we take the results and turn them into a Python dictionary using a JSON processor and then we iterate through the columns and I'm going to assign each column a value in this new dictionary that's an ordered dictionary that I'm returning that has the columns in the order the user requested them and then I'm gonna do the quals. So I'm going to throw out any rows that are not meeting the filtering criteria. An operator function is something I wrote. I have a slide on that next that's coming right back here. The last thing we do is we yield the row. In Python you can do a return or a yield from a function. A yield returns the rows one at a time. Return would return the entire data set at once. In the smaller cases it doesn't really matter but it's a good practice in foreign data wrappers to use yield and just return the rows back into the system as you get them. Postgres will do the ordering by the way. You don't have to sort them. You just have to handle the filtering. So I took and built this little function. I think it should be part of the multicorn base package and it's not yet. So I include it with the foreign data wrappers. It has every possible operator from Postgres that I could find and then maps it to some sort of Python function and sometimes I have to write Python functions to do the comparisons. And you're welcome to grab this and use it in your foreign data wrappers and it'll save you time. I was noticing a lot of the multicorn examples people rewrote this every time. So there's a bunch of functions in here that do various comparisons on the data so that you cannot implement quals in your select statement. And I may have missed a couple if I did, let me know, but most of them are here. And none of the JSON ones I think are in here. Are they? Yeah, they are. Well, no. So I didn't implement the JSON comparison ones. But this gets you started so you can do your basic select statements and stuff like that. Let's look at it again. Everybody's falling asleep. Here's my lights update. My lights set is on equals true where light. It's kind of dim, update my lights. It's not brightness. So select star from my lights where is on equals true. I get one row back. Let's go back here. And then this operator function just does a comparison with whatever this returns. And so you can do your testing. Updates work similarly. You have to define your primary key somewhere because this is a fixed single table foreign data wrapper. I can hard code the foreign key and I know it's always going to be the same. We call it, multi-core and we'll pass to the update function one row at a time and it updates one row at a time. That's the way multi-core and works. So if I put all the lights on, it'll do the first one and the second one and the third one. It doesn't try to update them all simultaneously which could be an issue if you're doing some sort of transactional thing where you really need them all updating concurrently. But that's the way it's implemented in multi-corn. One of the things I wanted to point, yes. Is it? Okay. I haven't used the other foreign data wrappers that much except for multi-corn ones. Right now. All right, great. So one of the things that I found was interesting is if you said something equals true, multi-corn translates that into the letter T or post-christ translates it into the letter T. The API doesn't accept the letter T. It wanted the word true or a true value. And so I had to translate it. So you're gonna, from running the cases in the API where coming out of the database is gonna be something that doesn't really map and you're gonna have to translate the actual value that the user specified into something that the API can understand. Okay, that could be. It's all still pretty new stuff. So another thing we have is logging and this is really useful when you're developing is to be able to figure out what's going on. You use this command log to post-grads. You can do it in exceptions or by itself. And you have three levels, debug, warning, and error. Well, you have more levels in that, but those are the only three that really are useful. In error, you stop everything the user's doing and say this totally failed and you really didn't do something right or something went totally wrong with the API. Warning says, I'm gonna do it anyhow, but you probably didn't want to do it. And then debug is more along the lines of this variable was equal to this value and is very useful when you're debugging. You can't see those debug unless you, I had to go to the second page because I ran out of space. And unless you set log min messages equals debug one or higher in your post-gradsql.conf and do a PG reload. And then, yes. You go up the set. Probably, yeah. I usually just set it there because every time you make a change to your code, you have to push the new code and then you have to exit your session and go back into your session in order for your new code to be recognized. And so I'm going in and out all the time and rather than set that every time I log in or put it in a init file, I just set it on the database as a whole. It's much faster. If you throw a Python stack trace, you can usually find it in your post-gradsql log file. I couldn't understand why I couldn't see it in my screen but it was in another window where I was telling the logs. And I just mentioned this. You don't need to bounce your database every time you do this Python set up UI install but you do need to log out and back in again to pick up the change. So you drop in and out of your session a lot as you're troubleshooting this. So the first thing I wanted to talk about or the next thing I wanna talk about was reference tables and I had mentioned earlier one of the advantages of a database of things is you can correlate your things to a reference table. And these light bulbs use an XY system for defining the colors and it's really hard intuitively to know what color you're setting your light. So if you wanna set it to that shade of blue right there you have to know that X coordinate and that Y coordinate. It also only takes the values inside this triangle and then you could also use a color temperature or you could use a hue saturation and brightness but as somebody who's done a lot of like D3 programming I much prefer to use HTML color names to set the bulbs. So I built a reference table based on these color names here, let's see if I can pull that up. So I found this webpage which had 764 color names with RGB values associated with them and I wrote a script that translated those RGB values into the XY values and then loaded that into a table. This is all in the GitHub repo. Oh, and now it's gonna show you how that works. So then you can do an update, select from the color table like this and change your colors. So let's try that because it's fun to play with this. This is where I can use huge amounts of time. I'm gonna set all the lights on.  What I'm looking for is my previous commands were as changed in the colors. Here's one, let's run that. So you pick a favorite color and you can change it to whatever appeals to you and I don't have to figure out the XY for it. So this is a use case of using a reference table to manipulate my things from within the database and I just keep trying different colors. One thing that's very disappointing is these particular bulbs don't have very good greens. So if I try something like that, if I try other shades, I've tried all different kinds of shades of green and they're just dull. And the other thing they don't do very well is brown. So I know. And so if I go back to my presentation real quick and jump back a slide here. Oh, too far there. This triangle is the limits of the colors that these bulbs can produce and there really isn't much in the green world that these bulbs can work with. So when you push pick something that's outside the range, it just picks the closest thing on the border to it. And so the browns are probably up in here. I don't know. It's fun to play with and really discover the limitations of the bulbs by doing update commands. I can't stop playing with them in the room. So here's a couple more kittens. The last thing I did was I made a very simple table which I called donors. So if somebody inserts a name and a donation here, the trigger on that table will cause the bulb to blink. And if somebody gives us more than $10, all the bulbs blink. Once you start playing with this number of applications you can think of, just keep escalating. So in extra, I have that donors table and I put some SQL here so I didn't have to type it myself. All right, so cheapskate one donates to us. We're still kind of excited to have money, but you know, thanks. Cheapskate two does the same thing. Cheapskate three and they all blink because we're very excited that we had a $20 donation. So I don't know if you could see, I could do a shift command plus here so you could see what I just typed. That is the essence of the database of things. I think what we have is a common central platform for managing the internet of things that developers can all use that could really explode in the next couple of years or six years I don't think any other database can do this besides Postgres and that's pretty exciting since the industry needs it. I need to thank some people. That's my dog trip out in the state park with me. Dustin Legans, he's here today. He actually paid for these bulbs so that I could do this presentation. Dave Wilson is the CEO of our company and he paid for me to come to this conference except for the ticket which was waved because I spoke. Jeff Kosovant and Brian Hoover-Bryans here today, they reviewed my code and helped me with the colors algorithm to do the translation of the colors table for the references, all the rest of the people at work. So I had these light bulbs plugged in at work and every now and then I would like change the colors and make them blink and flash and stuff. And if you can imagine, you're trying to do like a serious job and you're working all day and somebody keeps changing the lights over your head. They were very patient and kind to me about letting me get away with that. The people here who made this possible and my wife and kids, I'm gonna escape out and just take a look at this one script I ran at the beginning, if I can, how come, oh. Does that help if I do this? I'm trying to figure out why it doesn't fit on the screen anymore, that's better. So at the beginning of the presentation, flashystuff.sql, this was just to get your attention. I turn all the lights on. Oh, how come you can't see that? No, you can see it. Sorry, that's better. Let me, no, I can't see it. Okay, I can see it. Turn all the lights on and set the brightness to the full brightness in one update statement. Sleep for a few seconds. Change one of the colors to green. One of the colors to purple. These lights do really nice purples. And one to orange, red, sleep for a few seconds. This L select command sets some blinking for 30 seconds. So I set each one blinking for 30 seconds with a short delay between them. And then color loop command sweeps through the full color range of the light bulbs. It's a built-in effect to the API. So I run that and sleep for a few seconds and then at the end I turn it off. So let's run that and we'll see if people have specific questions. Oh, yep, thank you. So I set them all to red. Sets the three colors. Sets that one blinking two seconds later. Sets the next one blinking two seconds later. Sets the next one blinking. And then they blink for 30 seconds and then they start sweeping in color. So they're changing colors as you watch them. This is fun to play with. I made this little light stand last weekend in my garage. I was worried about taking it through TSA, so I shipped it here. I have no idea what housekeeping thought when I assembled it in my room this morning and had it sitting in there with all the lights on. Excuse me? Can you synchronize? Oh, yeah, well, there are apps out there. You can get that, do that. And I'm sure that you could figure out how to do your SQL commands and coordinate them with some sort of music. And do that through the database instead of through a dedicated app. And that's the idea with the database of things is once you write this, if somebody comes out with another light bulb app, that's better than Philips Hue. You could just change the table name and it'll work. You don't have to write a whole new app that talks to a whole new API. Yes. Why did the Postgres, as far as I know, is the only database with foreign data wrappers. I think there's some SQL med stuff in Informix and there may be other databases out there that are looking at it. And if you like Python, Postgres, this is the way to go then. I'm gonna put this, thank you, slide back up while we're talking. So on here I also have my Twitter handle and the Twitter handles at work. They were live tweeting during this presentation. So if you wanna follow them, they would appreciate it. If you need any marketing type of work, give us a call. We have fun doing multi-channel, data-driven marketing. Anything else? Yeah, well, to the database, doesn't care if it's IPv6 or not. But that's an issue. This is a UPNP device and if some clever hacker had been sitting back there and knew how to hack UPNP, they probably could have changed the colors around and messed me up sitting in the room. I don't have this on the wifi, so my laptop is plugged into a little hub and then the hub is plugged into the bridge and then the bridge has a proprietary Phillips Hue wireless communications channel that it uses to talk to the bulbs. And then each of these bulbs actually talk to each other so you can extend the range of your Phillips Hue system by making sure you have a bulb in between two other bulbs so that you can reach out and find them. But all that wireless stuff, I mean, I imagine somebody with a good de-scrambler of some sort can get in and turn the lights on for you. I've read some fun stories of people messing around with that in people's houses on them. They're really neat though. You can get an app that can syncs it with a TV show. So if you're watching TV, it changes the mood lighting in your room to reflect the scene that you're in and you can play music with them. You can make them voice activated. I just made them work in the database. Thanks.


but then they didn't have a director till now I kind of think that if it comes out next year because for the holiday. Yeah, but That seems more likely. Yeah But we'll see I have no idea because if the script's already done that that's obviously half the battle And then it's just all the all the filming and animation. So um I mean, I don't know. I don't know if they're bringing back like the same the same people So they know who the cast is going to be or if they're going all new cast all new story. I have no idea Yeah, I I want to take this conversation a little bit back It's still somewhat related because we're kind of talking about all these different things like the movies to the kingdom I mean, what the hell's happening games kind of I mean something right? Well, so the point I want to make though is just that um You look at all these things the tentals building momentum And I think that something Nintendo has seen is that by maintaining momentum by having consistent releases They've seen greater success than ever before So I'm of the mindset that regardless of when switch two comes be of this year next year or beyond Nintendo's not going to stop Um coming out with games. There's not going to be a big drought Maybe there won't be like a super ginormous triple a game But they're going to have a lot of their b tier titles leading up to release like they're not going to just stop um So and then like like the switch like we and then talk you talked about it earlier like there's going to be Regardless of when it comes out switch is going to stay relevant for a few years afterwards So they're they're going to they're going to coexist for a few years In fact, it makes sense to do that. It kind of goes back to like the nintendo's third pillar strategy Third pillar will come out the ds, right?  They have something else that takes its place if it flops I don't think it will but you know, they'll they'll be careful about the marketing and regardless I think there's going to maintain momentum So good games are coming this year. Yeah, I mean if you will just come in next week If you look at the end of the 3ds though, they were they were getting a lot of like Epic yarn remake and yoshi's woolly world remake. So it's gonna like start slowing down in that way They're still gonna be exciting games. Like you might get a twilight princess or something like that But yeah, I don't think you're getting like your Pikmin vibes or you know crazy I don't even know if we're gonna get a crazy mario game as weird as that sounds I think that you have to save that like you need to launch it with something Maybe Yeah, I'm team new hardware 2023.  I'm fully I'm on board It's happening. I'm fully buying into the nintendo president's words.  Hey We're trying to sell people their second and third switches now like, okay, so you've admitted you hit market saturation So let's go it's time I'm in I just think this event in september whenever it is like seattle is going to be super casual Like I think people heard that e3 was getting canceled and they're like, this is the new e3 But I think you're going to be playing like splatoon 3 there Like I don't care and I'm going to need you to write down all of your negative points for why it won't happen So then I can make a video Countering all those points and and just go switch to is happening this year and here's why I'll do that I'm going to get blasted in six months when it doesn't happen, but I'll do that. I'll take the heat I'll take the heat. I like that video idea I'll do it But I need the counter points because it's hard for you to come up with the counter points That remind me tomorrow and I will I will write it up So keep this this is a good count. This is a good one to try and counter So the pokemon dlc was leaked by somebody right they they fully detailed it Um, and it was all correct. There's no room for error. It's all correct Yeah, every every part of that pokemon and it included I'm saying that a graphics patch is coming for wave two Which is coming out this winter, which would be december to like march ish, right?  Yeah. He yeah, he said for a next so The implication of that is that I mean we're late it assuming that that's a correct That the latest we see a new switch is is march But it also with the with the realm of possibility that it's it's this holiday And that's what's the only real like Um rumor out there That seems legit and that's the only part of the rumor where we don't we we don't have confirmation then Yeah, and there's there's a little bit of a an extra piece to this Um, we haven't supposedly is the same person, but it there's like a little bit. Oh, yeah Yeah, the whole hashtag thing. Well, yeah, there's some hashtag stuff that makes me kind of take this with less credibility But they supposedly said something else under a different alias But they try to it was not 4chan. So when you reply again on 4chan Everything looks different every time because it's all anonymous everyone knows how 4chan works You can post on there twice and no one will even know you're the same person But anyways, they said a few other things about more about the scholar and violet dlc And that information was Not intentionally corroborated but corroborated by a common known leaker for pokemon known as the riddler or the coup who gets anyway, um The rabbit hole guys Point is this person is is is very well known in the pokemon community for getting everything, right? They don't they don't they stay more like hint at things. Yeah, that's why it's called the riddler Right. They make you guess But typically it's heavily hinted towards something specific. Yeah. So anyways point is is that this leak hasn't been disproven and it's From my my opinion what was shown is not the kind of thing that can just be guessed And I understand there are so many guesses out there that eventually some of them are going to be somewhat right So like there's that you have to probably see it yourself. It's like all all the nintendo direct leaks Yeah, someone might guess half the stuff and then the half the wrong. Yeah, they just made it up and they got lucky Yeah, or when they were like vague to where there's like room for interpretation. No, this wasn't vague. This is like, no, this is This was exact. Yeah. Yeah. Well, how much time do they need? From announcement of the new console to actually releasing. Is that like two three months? You think Would that be too soon? I think nintendo has proven that three months. They can have a shorter interval if they really wanted Um, so a january reveal and then a march april release I mean They sort of did that with switch the difference being one. We was a flop. So it didn't matter And they announced in october and then released it in mars all over five months They tease they well they announced tease in october, but they got the blowout in january So they sure I mean they definitely announced it. We knew the name of the system We saw the system in action. We saw games on the system We technically saw the tease of the mario game without knowing what it was Yeah, but I don't think they can do that this time because why would you announce a system when you're trying to sell something else for the holiday? Which is why I think it'll be for the holiday but Yeah, but nintendo nintendo does whatever the hell they want to be completely clear It still works out Because they just have all this momentum they 133 years and counting they just keep going They could announce it in june And then just like it doesn't have to be announced in august just because they're at yeah It could already be announced and like oh that is very clearly obviously what they're doing Oh, if you're announcing in june, then why couldn't you do e3 like look here's the deal Just because we're announcing in june our game demos aren't going to be ready yet. So we're announcing end of june Then we're going to say hey Demo's like games come Here's here's like our holiday. Here's I'm maybe use codename and x for a while. They could be like hey, we're working on a new system codename. Whatever Drop the code On the codename system Now I want you to meet we I feel confident in saying this much at least this this i'll say with confidence I mean, I don't know for a fact, but You're confident if this was old nintendo We would have known the codename already Yes, if this was a lot as nintendo, oh, yeah word of an eye Yeah, he would have sort of said at a financial briefing. We're in we're in that range already We're in that range which is still like a two-year range a lot of gets too excited for new hardware So he's he likes he likes to put codenames out there super early. Yeah We probably would have known the codename like four years ago Yeah, it's gonna be uh The it's it's it's the sw is not just mean switch. No no no no No, it's just the sw. What does it mean? I have no idea I mean, maybe if i'm not having anything to show in june was also just a convenient little excuse to get out of e3 Like maybe they just didn't want to go and they were like, um We have nothing I I think there's also one of those that If nintendo because nintendo has contact with all these companies because they're always in their nintendo directs Maybe they just said hey, are you going?  Yeah, nintendo's like Well, we got nothing to show all these companies are out So I guess we're out too even though hey, we might have a new system and this could have helped revive e3 You know what? No one else really wants to be here. So I think we're just gonna pass Here's a simple little consideration. It could be as as simple as Nintendo wants to announce their games and their system when they want to sure by being at e3 They have to do it like at the beginning of june and if their timing is hey, we have games com in august We want to announce beforehand, but not two months beforehand or maybe we don't want to announce it like Hey, let's get people excited then also Hey, let's also get buried by big massive games being announced by xbox and sony at the same time Sure, they want to control their messaging. They want to be careful about it Oh, we have mario and everyone's like, oh, that's super excited. Yeah, but now everyone's talking final fantasy 16 spider-man 2 starfield And no one really made like they want their own window, maybe Yeah, but the the counter argument to that though is It is because they want to control their messaging But it isn't but it's not because they have a new system It's just because the games they have are good, but it won't make them look good at e3 So it might be hey, we got f0. We got metroid prime 4 and tears of the kingdom dlc That's it right like and maybe i don't know pokemon party That's definitely a rough rest of the year Well, I mean that's a rough rest of the year Look, I like metroid prime. I'm really excited for metroid prime 4 I'm just saying like if that's the big game to carry what a metroid prime 4 is a Online multiplayer, which I wouldn't want but for main it's not unheard. It's not unheard of with metroid prime hunters and yeah Federation force. Yeah, and also based off Based off all the talent. They find a force is actually a pretty good game Oh, it's a great game. It should it just totally mistimed and when they were doing that or it shouldn't have been a metroid prime game either way But a good game. Yeah gameplay was great. It's just um, I don't think the 3ds is the best system for it because of the online I also think it's just a federation forces on the same level as triforce here is to me I love triforce heroes. Yeah, I will try but it's just it's just you know, I didn't hit for people Uh, I loved it Well, triforce heroes prove that most people don't have real friends Um Because that's when that games at its best not when you're playing online with people who are just dicks throwing you on All the time So like triforce heroes is great if you got friends and what it proves is that we really don't Uh, and then federation forces I think it's just a missed time game If that would have been like something they would have waited and put out like year one on switch Slightly better visuals better online I I think that game might have actually found a little bit of a cult audience.  Oh, there it is. The other m is great. I will not let this other m slander. Oh, I like yeah, I love other m I actually like other m too. I don't I actually really like it too. I was just giving that general What everyone was saying about an opinion out there. I mean, I also got it for seven bucks So, I mean you can't argue then it's definitely worth seven bucks. It was a great seven definitely best seven dollar game Yeah, I love it. It was great. I mean, I didn't love the story. I thought the story was okay The voice acting to samus was a little dry Of course, the script was a little dry too. So yeah ignoring the wears waldo moments And and the the sus story the gameplay was really good So yeah, it was very arcadey. I liked it. Yeah, it was fun Um, but what I was gonna say though is like, you know, um, there could be like a like a side mario game Uh, maybe like something new. Maybe it's not 2d more. I mean, maybe it's just a 2d mario or maybe the mario bros switch Oh, yeah, we're done through exploit man Oh Or what if it's like a mario and donkey kong thing, right? Like it's it's just like it's it's just this new thing It's not 3d mario. It's not donkey kong. It's just new sort of hybrid series And it it it totally takes advantage of the mario movie and it's like a holdover to the next 3d mario Maybe next year for switch 2 Wait, wait, andres. I want to go off that. What if they bring back the mario versus donkey kong? Because that was a thing on the like ds in the But they Mario and donkey kong kind of have a versus mentality in the movie even though they get along a little bit, but that was a really good game Could bring that back That would be awesome All right, all right All right, well, I think it's gonna do it for the internal prime podcast episode 19 of season two Man this podcast went in directions. I did not We had topics and we veered away consistently and it was great Yeah, you know what happens. I mean, here's the problem though. So we got this show next week I don't even know what we're supposed to do. I I hope reviews drop on wednesday That's really gonna give us because like one would they tell me you're rough You know when it's either wednesday or thursday So i'm hoping they drop wednesday. Yeah, because we'll have a lot then we're good then we can do our final like Our final expectation We can review the reviews. We'll know a lot more official information. We can actually talk about Um as we head into launch. Otherwise, it's going to be like well, maybe next week. We don't talk zelda I think you'll be very weird. That would be very weird There's no way then ten on my drop a launch trailer or an overview or there might be another ad There's gonna be something I hope I guarantee it always On thursday the day after the podcast just to spite me When do you think the embargo is for the reviews like video reviews and stuff wednesday or thursday it'll all be at the same time Didn't they do It's the day before but every now and then it's a wednesday Didn't they do siren bloom engage on a wednesday? Yes That's my hope a lot of times it's the day before Sometimes it's wednesday. I'm really hoping it's wednesday because then we're set up. We're teed up We're teed up for what would be at a great show. What you're saying is is we may do the podcast on thursday No, no podcast. No, no, it can't happen thursday. I'm waiting for midday launch the game stop So no No, it's it's wednesday. It's wednesday or bust Anyways, so I have no idea what we'll talk about next week.  We're talking more zelda and who'll know the podcast after we're also talking zelda.  Here's what's gonna happen We're gonna do first impressions on the 17th, right? I think that's basically what that is It's first impressions because I'm none of us are gonna be completely done with the game by then We'll go so much to do with it. So, um, first impression. I'll just throw that. Oh, I'll have that 100% of wednesday No, that's no way anyways. Anyways, my thought process was two weeks in a row We do essentially a massive zelda conversation That's basically a pseudo open conversation review Um, and then we'll also sort of submit a score and we'll do the average of the score at the end is the average for the podcast review And we'll do like a spoiler free version following weeks the spoiler version So you get the double the double review where you satisfy all crowds people that want you to talk about every detail And actually see how that affects your review versus. Oh, we can only talk to like a certain point We got to cut off there and then just talking generalities after which is what all reviews have to do in embargoes They're only allowed to talk to like you could talk up to like I don't know up to this land that you like when you get to hebra That's where you cut off now guys. You can't talk about anything that happens in the hebra territory Okay Um, I don't know how the hell to handle this an open road game. I don't know what I don't know what the embargo looks like for Breath of the Wild Yeah, I bet you the embargo for Breath of the Wild Look once you get off the great plateau, you can't talk your whole review can only talk about anyways So, yeah, well, I think we're gonna do like a two episode in a road thing where it's gonna be a spoiler free conversation And then I think by the time we get to the next one all of us We'll probably have at least gotten through one playthrough Even if we haven't 100 we'll be probably pretty close because that's gonna be almost like Three four or five weeks after the launch so Um So I know that but then after that then we start to probably veer into other stuff because I'm sure along the way We'll have conversations on potential dlc and all that as well. Nothing's been announced. So I want to say it is I can see the light at the end of the tunnel of zelda being a topic on every show And I'm kind of sad Then I can see that the end of the the end of the tunnel for talking zelda as we move on to pickman and everything else Still got a couple months Yeah, right, right. I I mean I think it depends on how see how you handle like you're you're a news Focused channel. So it might be a little bit harder for you depending on how you pivot things But like for example, I'm a little bit more theory speculative Oh, yeah, you keep going for you got you can go like you're if you want I mean the thing is like some zelda there there are channels like, you know There are souls channels or zelda channels that that's just all they do they just talk about a one game So, you know, there's gonna be plenty to talk about for Tuesday came at least could be like a side topic for you moving forward Yeah, I'm you know, here's the thing. I love zelda. So there'll probably be something. Oh, I just recently just dropped this really great video That's topic The moon theory still alive dlc Yeah Watch the moon theory is over because at some point tears of the king from the moon gets blown up and doesn't even exist anymore I'm waiting I'm waiting for people for comments to go on my moon videos. You're wrong It's like it was just a theory a game theory in the video. I'm like listen guys. I'm doing this for fun Yeah, right. Oh, that's what theories are though. They are mostly for fun. Yeah, you want to figure things out But also guess what we don't know. So you just Do your best. Yeah, um, so anyways, I'm you guys know we've been talking I don't we we've actually gone long long gaps on the podcast without talking zelda I'm just saying there's going to be a time it's going to happen. I'm going to be a little just a smidge sad I say that and then they announced a new mario game. They announced a new this I knew that all of a sudden animal crossings getting the new dlc out of nowhere that no one thought comments And now we gotta talk that before you know, and I'm so hyped about everything else And here's the thing at some point between zelda coming out and pikmin They're going to start dropping the pikmin 4 drops and I bet you it's going to be super exciting Because I really love pikmin. Yeah, there's also going to be an in tone direct before then Probably Probably you think about that May july Somewhere in the two months when we start to transition from zelda. There's a direction. Perfect. Thank you nintendo At least the partner showcase so it can get really salty It'll just be another indie world, you know, we didn't really talk about the last one. There is a It happened Right before advanced wars to It happened it happened on one of our podcast days and still didn't make one of our topics We made it in the quick news segment It was in the quick news segment touch So there was there was an indie world today and here were a couple notable games from that Moving on literally nobody wanted to talk about It's just All right, cool. It's fine. We got actual topics. We want to talk about all right guys Uh, thank you so much for tuning in. Let's uh, see what our guests have going on and where you can find them Let's start with our first timer over there. Maybe the last time after this show Uh an intent talk. What you got going on? Where can they find you? You can find me everywhere at nintendo today. I was called a zelda tuber, which I don't know How I feel how does that happen? Yeah, I don't know. Well, yeah How many zelda videos in or I know I'm on a streak at the moment Yeah, I want a streak right now. Yeah, I'm doing daily. Uh tears the kingdom like hype content. Basically, I'll do a review I may or may not be playing it tomorrow, but yeah, I do like daily videos so you can uh, check that out Subscribe hang out You just dropped you have a review copy. What are you talking about? I didn't say that I said I was doing I do a podcast. That's what I meant. Yeah. Oh, that's a event I heard I'm gonna be playing it tomorrow. That's what I didn't hear that. Yeah, I heard I'm I heard I'm dropping a review. I'll be playing it tomorrow. That's what I was saying No, I didn't oh baby. Did he just leak that in the show? He's got a review copy. I'm not even sure NDA wise you're allowed to say that Well, we'll know if we never hear from him again If you drop the review on friday, it doesn't matter Next friday not this friday. Yeah next week friday. Yeah Yeah That's true, but but I mean if he's under him, he'll just drop it at the embargo. I wouldn't he Well, if you're not special to get a review copy, then you should be on twitter complaining about it. Um, to nintendo saying that they are Unprofessional and unprofessional and insincere in the course because they won't give you a copy Literally 1984 Awesome. Yeah, you guys should go check out the channel. He does awesome stuff I'm sure we'll be on uh, many other shows and crossover content at some point in the future Uh, let's see. We got uh, eric below him. How's it going? Yeah, they can only find you in two places Where are those two places here in twitter? Yeah, buddy. Yeah on your channel and hey, you almost have a thousand followers on twitter. I noticed Yeah, I think let's go. Let's get eric to a thousand followers on his one tweet a year. He makes You know what the tweets probably gonna be a retweet of y'all your retweet of all my tweets Or or he'll like someone who makes fun of me and he'll respond and do a thumbs up. Yeah pretty much I think eric should make a tweet right now and just do zelda He does zelda and watch all 900 something of his people just dropped the like Talk about how his quarterback went to the jets Yeah, he doesn't care. He's glad. No. Bye. Thank you. He's glad Jordan love era is here. I don't maybe hate the strong word strongly Was ready to move on for a few years now. Yeah Pretty much once Jordan love was drafted. He's like, I'm kind of good. No, and then rogers won an mvp. No Two times go with the mvp. Okay. You didn't come on. Maybe. Oh, they may be lied. Maybe this But you know, I don't know what it does on the field. No, then he sucked. Yeah Nate get that football podcast going. Come on. Yeah. No Just don't do the impassioned sports debates eric and I have had are not ready for the Not ready.  No, it's fine. Yeah, it's fine. I'm glad they rested jimmy game too. I think it'll be ready game three I hope so. Yeah, I think that was the game three play I think jimmy would have gladly suited up and play but they're they're trying to be like we got the game we needed So I know this is like a video game podcast, but like I mean for the sake of the bucks, I I think the heat are gonna do better too Like I don't think the bucks choked as much as the heat were just really good. Well, I think there's a couple things When I found out that that coach bud lost his brother before game four That's that that's uh Yeah, uh, darvin ham sort of revealed it in a post game interview after they they clenched And then the report came out and it's like, yeah, like literally the day of game four his brother died um and so like He because because bucks fans noticed he was really checked out like why isn't he calling these timeouts? Why isn't he as animated on the sidelines like it usually is and it and it turns out he didn't even tell the team He really internalized it because he thought it would be a distraction for them It turns out it was probably a distraction for him Like when he's afterwards saying like, I don't know why I didn't call a timeout and these two Critical situations. I don't know why I didn't do it. Yeah, because your mind wasn't thinking about the game, dude Your brother just died and you didn't even get to mourn so like that's It's one of those situations where it's like it's not really an excuse the bucks have a lot had a lot of talent But also if you're coaching into it The team ain't gonna be into it. So it's uh It's whatever. I gotta ask for the heat and uh, you guys go to the finals It makes me feel a lot better about the loss. I'll say that Oh breaking news the mercari seller was. Yes. Yes. Yes. I actually wanted to bring that up because I covered your video on it Yeah, yeah. Yeah, let's go. He just sent me a picture of it. He got it Background for those who don't know this was a breaking story from the 10-tile. I'll let you tell the story queen It was your story. Yeah, so basically there was a mercari seller that had five copies of tears of the kingdom He was selling them first one went for a hundred. They would go instantly uh, and then the other four were 400 And you know, so people were buying them up instantly But one of the people that bought one messaged me and he said hey, listen, I just mercari blocked the sale so by a third party which obviously is nintendo and um He still had shipping notifications from the carrier saying like it's in transit So he got a free copy of tears of the kingdom.  Well, I mean technically he's out shipping plus cost the game if he actually paid for the game Oh, yeah, nintendo probably has that that that sellers information Interesting because that mercari seller is still selling copies like I think before this podcast It was like four uh, four hours ago. He sold another one. So it's like I don't know what he's doing It's great So you're telling us I gotta get a hold of this seller quick buy a copy expecting a refund and still getting it Got it Oh, I was talking to my friend and he sent me this craigslist Listing for tears of the kingdom. He's like, do you think this is legit? And the craigslist listing had these same pictures from that mercari listing So people are trying to like scam other people with those It's ugly. Yeah, that's bad. That's bad Nuts. Nick Barrett. What do you got going on where can we find you? Well, you can find me personally on twitter at nerdiestnick. I tweet stuff occasionally and talk about stuff. Um As for the podcast you can find us on youtube joystick drift podcast run all the big audio platforms too Um Link down in the description. Yeah, you guys can't find it. Um We have podcasts on wednesdays We just did an episode on ranking all 200 plus amiibo, which was an undertaking and Every other day like monday Every day except for wednesday. I guess we got shorts and also um Some long form videos coming too. Like I have a I got a custom tears of the kingdom oled so Might want to check out that video That guy that guy who got the refunds hilarious. I love this comment. God. God said he needs elbow in his life He gets it no matter what So, yeah, that's all I got. Awesome. Yeah guys go check it out. Literally link down in the description I was hoping this day to say hey, let's give him to a thousand subs, but then he got there anyway So that's awesome Uh, I just restart we got going on you want to tease any future content Or are you just gonna be like, hey, I'm I don't want to just restart. I talk to nintendo. Bye I have a cat. Her name is ruby ruby right here. All right. She's very cute. Thank you um Yeah, so You know, it's an interesting time right now because I could make more zealot theory videos But let's half the people are like, oh, you're very played game You're right. No, you're wrong and then other people are like, oh, this is great. So I don't know what to do Um, no, I'm just kidding. I'm kidding. But I'm not kidding. I know what to do It's a it's a tough time when you're trying to have to make content around any leaks But then like, you know the content you might make already explained in the leaks Right. Um, it's very difficult. Yeah, so it is tricky. So I kind of have to transition away. Um from Symmetroid today.  That's a good video. I like thank you. Thank you Yeah, um, you know, it didn't pop off as much as I hope but it'll it'll have likes So, yeah, your video's gonna get a second wind. I like that Yeah, I only get the one wind if it doesn't catch. I'm done That's because you're a news channel Yeah, don't remind me I'm starting to think that was a mistake to be in this channel. You can't complain you gain like 20 000 subscribers in like a week Yeah, I know but as a discussion channel, I feel like there's legs when there is no news I said I'm stuck I'm stuck in the cycle Well, if it comes out as soon as you say it will you one of a problem, man? Yeah It'll be fine. Look, it switched two drops. I'm going to drop my pants because they're too wet and I need to replace them Oh, you can find me at real D. E. R. N on twitter Don't even get through it. I just Yes, you can find them at real Dern on twitter. Darren's like I'm out of this conversation I'm on this podcast every Wednesday. You can catch me here saying my awful opinions Or correct opinions, we'll see Or correct me today. I was with you. Hey, you didn't talk modern warfare 2 today. That's a that's a shocker So I didn't talk astro boy omega factor either. That's a win So I just we saw where can they actually find you? I don't think we got to that point Sure. So andre's restart. There's my name Um, you can find me on youtube and twitter. That's pretty much usually where I am In terms of projects There are tears of the kingdom videos that are planned amongst a few other things. Um, they got a xeno blade video coming There's actually a mario galaxy 2 video that may or may not pop up in the not so just in future Um, but yeah, lots of zela stuff coming. Um, pre release and post release. So Um, we got to subscribe. He's so close to 25k. That was his goal before tears of the kingdom A lot of people said it's impossible and here he is on the cusp. Let's go. He needs like 700 more subscribers Let's get him to subscribe right now. Go There you go. Yeah Only subscribe if you like listening to me though. I don't I don't I don't want fake subscribers I'll listen to you on this Anyway, I feel like I can listen to your videos too. I feel like yeah, they're good videos It's me ranting I'll be honest. I didn't think we were gonna hit a thousand before tears of the kingdom We sat at 850 for the longest time and then I made a short on This wild theory of is ganondorf actually the hero and people really latched on to that Yeah, how big is that one now that one is currently at 46,000. Yes, which makes it our highest viewed short in like shorts The last dude short shorts when they pop they pop. It's nice. They go crazy. Yeah, it's crazy It's awesome awesome, man. Well Thank you guys all for being here and spending your evening with good old nintendo prime over here We will be back same time. Yeah same time next week A slightly different crew some familiar some new Get you guys later Switch to will not be released this year You know what darren? Just just Just get the out of here Later