Good afternoon, and welcome back to Detroit. Lisa Martin here with John Furrier. We are live, day two of our coverage of KubeCon, Cloud NativeCon North America. John, we've had great conversations all day yesterday, half a day today so far. We're talking all things, well, not all things Kubernetes, so much more than that. We also have to talk about storage and data management solutions for Kubernetes projects, because that's obviously critical. Yeah, I mean, the big trend here is Kubernetes is going mainstream, has been for a while, the adoption's crossing over, it's crossing the chasm, and with that you're seeing security concerns, you're seeing gaps being filled, but enterprise-grade is really the story. It's going enterprise, that's managed services, that's professional service, that's basically making things work at scale. This next segment hits that part, and we're going to talk about it in great length. With one of our alumni, Morali Tiramali, is back, VP and GM of Portworx Peer Storage. Great to have you back, really. Yeah, absolutely, delightful to be here. So I was looking on the website, number one in Kubernetes storage, three years in a row. Yep. Awesome. What's Portworx doing here at Ku Klun? Well, I'll tell you, our engineering crew has been so productive and hard at work that I almost can't decide what to kind of tell you, but I thought what I would do is kind of tell you that we are in forefront of two major trends in the world of Kubernetes, right? And the two trends that I see are one is as a service. So is trend number one. So it's not software eating the world anymore. That's old, old, old news. It's as a service, easy-fying the world. The world wants easy. We all are subscribers to things like Netflix. We've been using Salesforce or other HR functions. Everything is as a service. And in the world of Kubernetes, it's a sign of the maturity that John was talking about as a platform that now as a service is the big trend. And so headline number one, if you will, is that Portworx is leading in the data management world for the Kubernetes by providing, we're going all in on easy as a service. So everything we do, we are satisfying it, right? So if you think about this, that there are really most of the people who are consuming Kubernetes are people who are building platforms for their dev users. And dev users want self-service. That's one of the advantages of Kubernetes. And the more it is serviceized and made as a service, the more ready to consume it is. And so we are announcing at the show that we have the basic Kubernetes data management as a service, HADR as a service, we have backup as a service, and we have database as a service. So these are the three major components of data and all of those are being made available as a service. And in fact, we're offering and announcing at the show our backup as a service freemium version where you can get free forever, a terabyte of stuff to do for Kubernetes forever. Congratulations on the announcement, totally in line with what the market wants. Developers want self-service. They want also on simplicity, by the way, they'll leave if they don't like the service. So you know that. Before we get into some more specifics, I want to ask you on the industry and some of the point solutions you have. What, it's been two years since the acquisition with Pure Storage. Can you just give an update on how it's gone? I'll see as a service, you guys are hitting all your marks. Developers love it. Storage is a big part of the game right now as well as these environments. What's the update post-acquisition? Two years, you had a great offering. So yeah, so look, John, you're a veteran of the industry and have seen lots of acquisitions, right? And I've been acquired twice before myself. So, you know, there's always best practices and poor practices in terms of acquisitions. And I'm really delighted to say, I think this acquisition has had some of the best practices. Let me just name a couple of them, right? One of them is just cultural fit, right? Cultural fit is great. Entrepreneurs, anybody, it's not just entrepreneurs, everybody loves to work in a place they enjoy working with people that they thrive when they interact with. And so the cultural fit with Pure is fantastic. The other one is the strategic intent that Pure had when they acquired us is still true. And so that goes a long way, you know, in terms of an investment profile, in terms of the ability to kind of leverage assets within the company. So Pure had kind of disrupted the world of storage using Flash and they wanted to disrupt, higher up the stack using Kubernetes and that's kind of been our role inside their strategy and it's still true. So culture, strategic intent, product market fit as well. You weren't just an asset for customers or acquisition and let the founders go through the next thing. You were part of their growth play. Absolutely, right? The beauty of the kind of product market fit is, let's talk about the market, is we have been always focused on the global 2K and that is at the heart of Pure's 10,000 strong customer base, right? They have very strong presence in the global 2K and we allow them to kind of go to those same folks with the offering. So, saucepying everything that you do, what's for me as a business, whether I'm a financial services organization, I'm a hospital, I'm a retailer, what's in it for me as a customer? Yeah, so what's in it for me is two things. It's speed and ease of use, which in a way are related, but one is when something is provided as a service, it's much more consumable. It's instantly ready. It's like instant oatmeal, right? You just get it, just add hot water and it's there. So, the world of IT has moved from owning large data centers. That used to be like 25 years ago and running those data centers better than everybody else. To move to, let me just consume a data center in the form of a cloud, right? So, sassifying the cloud part of the data center. Now, people are saying, well, I expect that for software and services and I don't want it just from the public cloud. I want it from my own IT department. This is old news. And so, the big news here is how fast Kubernetes has kind of moved. Everything, you know, you take a lot of these changes. Kubernetes is a poster child for things happening faster than the last wave. And in the last couple of years, I would say that as a service model has really kind of thrived in the world of Kubernetes and developers want to be able to get it fast. And the second thing is they want to be able to operate it fast. Self-service is the other benefit. So, speed and self-service are both benefits of this. Yeah, and the thing that's come up clearly in the Cube, and this is going to be part of the headlines, we'll probably end up getting a lot of highlights from telling my team to make a note of this, is that developers are going to be the business. If you take digital transformation to its conclusion, they're not a department that serves the business. They are the business. That means they have to be more productive. So developer productivity has been the top story. Yes, security as a service, all these things. These are examples to make developers more productive. But one of the things that came up when I want to get your reaction to is, is that when you have disruption in the storage vision, you know what disruption it means, because there's been a whole discussion around disruptive operations. When storage goes down, you have back in DR and failover. If there's a disruption, that changes the nature of invisible infrastructure. Developers want invisible infrastructure. That's the future steady state. So if there's a disruption in storage, it can't affect the productivity and the tool chains and the workflows of developers. So how do you guys look at that?  Storage as a service is a huge thing. Storage has to work seamlessly and let keep the developers out of the weeds. John, I think what you put your finger on is another huge trend in the world of Kubernetes. We're at KubeCon after all, which is really where all the leading practitioners both come and the leading vendors are. So here's the second trend that we are leading and actually I think it's happening not just with us, but with other folks in the industry. And that is, you know, the world of DevOps. DevOps has been such a catchphrase for all of us in the industry last five years. And it's been both a combination of cultural change as well as technology change. Here's what the latest is in the world of DevOps. DevOps is now crystallized. It's not some kind of mysterious art form that you read about. How people are practicing DevOps is it's broken into two things now. There is the platform part. So DevOps is now a bunch of platforms. And the other part of DevOps is a bunch of practices. So a little bit on both these, the platforms in the world of Kubernetes, there's only three platforms, right? There's the orchestration platforms, you know, EKS, the open ships of the world and so on. There are the data management platforms, people like Porkworks, and the third is security platforms, right? You know, Palo Alto Networks, others, Aqua are all in this. So these are the three platforms and there are platform engineering teams now that many of our largest customers, some of the largest banks, the largest service providers, they're all operating as a Kubernetes platform engineering team. And then now developers, to your point, developers are in the practice of being able to use these platforms to launch new services. So the actual IT ops, the ops are run by developers now and they can do it on these platforms and the platform engineering team provide that as an ease of use and they're there to troubleshoot when problems happen. So the idea of DevOps as a ops practice and a platform is the newest thing and Porkworks and Pure Storage are leading in the world of data management platforms there. Talk about a customer example that you think really articulates the value that Porkworks and Pure Storage delivers from a data management perspective. Yeah, so there's so many examples. One of the longest running examples we have is a very, very large service provider that you all know and probably use. And they have been using us in the cable kind of set up box or cable box business. They get streams of data from cable boxes all over the world. They collected all in a centralized large kind of thing and run elastic search and analytics on it. Now, what they've done is they couldn't keep up with this at the scale and the depth, right? The speed of activity and the distributed nature of the activity. The only way to solve this was to use something like Kubernetes, manage with Spark, bringing all the data in into deep, deep, deep silos of storage which are all running not even on a sand but on kind of very deep terabytes and terabytes of storage. So all of this is orchestrated with the help of Porkworks and there's a platform engineering team. We are building that platform for them with some of these other components that allows them to kind of do analytics and make some changes in real time. Huge kind of set up for that.  I love the vision. I love what you guys are doing. I think this is right in line with Pures. They've always been disruptors. I remember when we first interviewed the CEO when they started, they stayed on path. They didn't waver. EMC was the big player. They ended up taking their lunch and dinner as well. They beat them in the marketplace. But now you got this traction here. So I have to ask you, how's the business? What's the results look like? You're the GM, cloud native business unit of a storage company that's transformed and transforming? Yeah, you know, it's interesting. We just hit the two year anniversary, right, John? And so what we did was just kind of like step back and hey, you know, we're running so hard. You just take a step back. And we've tripled the business in the two years since the acquisition, the two years before. And we were growing through COVID. So, you know, that's quite a feat. And we've tripled the number of people, the amount of engineering investments we have, the number of go to market investments have been awesome. So the business is going really well. Though I will say that I think, you know, we have, we can't be, we're watching the market closely. You know, as a former CEO, you have to kind of learn to read the tea leaves when you invest. And I think, you know, what I would say is we're proceeding with caution in the next two quarters. I view business transformation as not a cancelable activity. So that's the good news, right? Our customers are large enterprises. All they're going to do is say, hey, they're going to put their hand, their hand was always going right on the dial. Now they're kind of putting their hand on the dial, going, hey, what is happening? But my own sense of this is that people will continue to invest through it. The question is at what level? And I also think that this is a six month kind of a watch where we put the dial. So Q4 and Q1, I think are kind of, you know, we have our watch kind of watch the market sign. But I have the highest confidence. Where's your gut tell you?  My gut says that we'll go through a little bit of a cautious investment period in the next six months. And after that, I think we're going to be back full full in the crazy growth that we've always been. We're going to grow, by the way, in the next two quarters. I think I'm more bullish. I think there's going to be some, you know, weeding out of some over investment pre COVID or pre bubble. But I think tech's going to continue to grow. I don't see it stopping. And the investment is going to be on these core platforms. See back to the platform story. It's going to be in these core platforms and on easy-fying everything. Let's consume it better rather than let's go kind of experiment with a whole bunch of things all over the map, right? So we'll see less experimentation and more kind of, let's harvest some of the investments we've made in the last couple of years. And actually be able to enable companies in any industry to truly be data companies because we talked about as a service, we all have these expectations that any service we want, we can get it. There's no delay because patience has gone from the pandemic. So it is kind of tightening up the screws on what they've built, adding some polish to it, adding some more capability. Like I said, a combination of harvesting and new investing. It's a combination I think is what we're going to see. Yeah. What are some of the things that you're looking forward to? You talked about some of the growth things in the investment, but as we round out Q4 and head into a new year, what are you set out about? Yeah, so I mentioned our as a service kind of platform. The global 2K for us has been a set of customers who we co-create stuff with. And so one of the other set of things that we are very excited about and announcing is because we're deployed at scale, we have upgraded our back end. So we have now the ability to go to million IOPS and more for the right back ends. And so Kubernetes is an add on which will not slow down your core base infrastructure. Second thing that we have is added a bunch of capability in the disaster recovery business continuity front. We always had like metro kind of distance DR. We had long distance DR. We've added a near sync DR. So now we can provide disaster recovery and business continuity for metro distances across continents and across the planet. That's kind of a major change that we've done. The third thing is we've added the capability for file block and object. So now by adding object, we're really a complete solution. So it is really that maturity of the business that you start seeing as enterprises move to embracing a platform approach, deploying it much more widely. You talked about the early majority, right? And so what they require is more enterprise class capability. And those are all the things that we've been adding and we're really looking forward to it. Well, it sounds like tremendous evolution and maturation of Portworx in the two years since it's been with Pure Storage. You talked about the cultural alignment. Great stuff that you're achieving. Congratulations on that. Great stuff ahead. And having fun. Let's not forget that. That's important too. Life's too short to do anything else with that. You're right. We will definitely, as always on theCUBE, keep our eyes on this space. Moralee, it's been great to have you back on the program. Thank you for joining us. Thank you so much. It's a pleasure as always. For our guest, I'm John Furrier. Lisa Martin here, live in Detroit with theCUBE at KubeCon, cloud native con at 22. We'll be back after a short break.


just in the um in the green room waiting to go on to the jeremy varn show i'll show you this is jeremy varn oh jezza so yeah like what i was what they were just saying then about vegan diets like are they any healthier vegan fast food chains bringing out our burgers and vegan diets can cause deficiencies and it's just a non-argument like every diet can can cause deficiency any diet that isn't well planned can cause deficiency meat eaters can be b12 deficient you know so of course you have to plan your diet well and it doesn't take a rocket scientist to plan their diet well just eat a wide variety of whole foods and make sure if you're not eating fortified food like fortified uh plant milks and fortified cereals that you're supplementing with b12 and if you're not in a sunny area of the world like if you're not getting daily sun like if you're in england it's pitch black all the time covered in clouds you might need vitamin d3 all right system it's very easy to work these things out and um when you look at the standard diet what people are eating like no one eats as many plants as a whole foods vegan does no one eats as many antioxidant rich plant foods as a whole food vegan does the more meat and dairy you eat the more you're displacing healthier foods out of your diet and um like all of this deficiency stuff is just fear mongering it's just fear mongering it's not based on anything any you know credible science and yeah vegans can be deficient in certain things but meat eaters can be deficient in certain things as well like folate and fiber if you're eating processed you know meat and dairy foods or processed foods generally you're not going to be as healthy as if you're eating more whole plant foods but anyway the point is if you can be healthy as a vegan on a whole foods plant based diet or just you know maintain good health as a vegan why are we massacring billions of animals torturing and killing billions of animals that's the point you know if you have to well plan your diet big deal that doesn't justify stabbing and murdering billions of animals because ah you know you could run into a deficiency like how does that justify the environmental destruction and the torture and the suffering and the death that we cause like this is another thing where people they like to isolate one thing like deficiency they don't like to talk about the literal massacre and torturing of innocent beings deficiency seems really a non-conversation when you're talking about the the magnitude of the suffering we're causing yeah things like b12 are so easy to get in your diet and most people don't realize that a lot of the foods that they're eating contain b12 because they're fortified so if you look at your soy milk if you look at your almond milk if you look at your cereal if you look at your tofu if you look at your vegan yogurt that you're eating it's all fortified with b12 vitamin d have you ever looked at the back of those things even cows dairy milk they fortify that with vitamin d so a lot of these supplements are already introduced into our food production um because they know that b12 is being sanitized out of the the water supply it's been sanitized out of the food system fruits and vegetables are being washed and sanitized and water is being chlorinated and b12 producing bacteria are being killed so we have to supplement b12 everyone does um and animals are being injected with b12 supplements so the animals people eat which i think oh there's only source of b12 like this cow flesh the pig flesh chicken flesh the chickens have been injected or or it's been introduced into their feed the b12 you know because you don't see chickens roaming free eating dirt they're in a bloody shed the pigs are in a shed 90% of the pigs in in the UK are in a factory farm are factory farm pigs so where they're going to get their b12 from these pigs in these factories they're not bloody eating grass they're not out there on the dirt they're on a bloody shit covered wooden floor inside of a big stinky shed and they're getting fed b12 or they're getting injected b12 it's just insane it's completely and utterly insane like i would rather have a b12 supplement eat whole food plants than gash chamber billions of pigs and stab them in the throat to get b12 that was injected in their body anyway so and anyway whenever um someone with an expert opinion likes to talk about deficiencies you just point them to the massive peer-reviewed paper position paper that the academy of nutrition and dietetics released and it's backed by 117 studies it's a massive review position paper and it says that well-planned vegan diets can be healthy for all stages of life cycle infancy pregnancy lactating mothers athletes the elderly and they say that it reduces your chances of getting certain diseases heart disease diabetes obesity it also says it's better for the environment in this massive peer position paper and it's not just someone wrote it it's backed by research backed by tons of research you know it's the best available evidence that they have on supporting plant-based vegan diets so like if we're going to listen to someone's opinion that it has no scientific weight whatsoever you look at the research the best available research and if a massive organization like the academy of nutrition dietetics which it makes up over a hundred thousand credit uh fully credentialed practitioners if you're not going to listen to a credible source like that and and it's not a vegan organization obviously if you're not going to listen to that and you're going to listen to someone's opinion about deficiencies then you're just not being scientific you're just taking someone's opinion over scientific fact which is insane as well and and the way people listen to anecdotes over research uh i know someone who went vegan once and uh they had no energy well okay what does that mean i know someone who ate meat once who had no energy like anecdotes mean nothing um obviously like we can all use anecdotes i mean i could use my anecdote i used to be obese and now i've got the best i've got more energy than i've ever have i feel more healthier than i ever have but even my anecdote of you know me losing all this way being in good shape i'm fitter than i've ever been is still an anecdote but when you look at the research and you know consistent data is showing that diets centered around whole plant foods are better for health better for health outcomes for human beings you see less diseases like the the number one killer heart disease has only ever been proven to be reversed with a whole food plant-based diet


Alrighty, let's talk about it, there are so many videos, including mine out there, going over all the details about this merge, but I thought I would slow down a little bit and discuss more so why this is happening. So for a lot of us, we know that Cedar Fair and Six Flags have a lot of differences in terms of park management. And how these two park chains are managed is extremely different. Now one chain has been managed in very limited CEO change and a lot of experience in the amusement and hospitality industry, whereas the other chain has been managed in kind of a more sloppy way with a lot of CEO change and now some CEOs that have next to no experience in the hospitality industry. So I'm going to go over some of the details about why I think Cedar Fair and Six Flags are about to merge into a new company, Six Flags Entertainment Company, but let's go over some of the details. So a lot of you don't know this fact right here, but MarcoAxis is a website that takes essentially the company's financials, assets, and a lot of factors and determines their bankruptcy rate. So Six Flags was sitting at roughly a 56% likelihood of bankruptcy before the merge. Now after the merge, they're sitting down below around a 43% whereas Cedar Fair was at a 40% likelihood of bankruptcy before the merge and are now down to a 30% chance of bankruptcy after the merge. So I thought that was really interesting. It definitely gives a little insight to why these two companies have had so many talks. You look at even outside of Six Flags and Cedar Fair, there was talks between SeaWorld and Cedar Fair for a takeover as well. So a lot of these smaller regional chains, and I call them smaller of course next to Universal and Disney, but there's reasons there's talks like these going on and I wouldn't be surprised if we see some other merges take place as well. Economic tough times are approaching, no matter where you sit on the political spectrum. There are tough economic times approaching and it's funny though that I say that because it looks like both chains in their 2024 outlook reported an increase in season past sales, but I will touch on while that looks promising for those of you that paid attention to the very limited information we received on Q3 results for Six Flags and Cedar Fair, more specifically Cedar Fair, they did reveal that spending in park is down. So what that's showing you is people are a little less likely to spend extra cash on the leisure hospitality industry and they're buying those season passes and I know especially at Six Flags, ticket sales are exponentially down and I assume that's the case at Cedar Fair as well and season past sales are up and less spending in park, you know, it's removing a lot of that free cash flow that these parks have. So the return on investment on bigger investments is also coming down as well. So very concerning information if you're a regional theme park. So after those bankruptcy percentages, I want to go into a bit of the history of CEO. So I'll start with Six Flags and so for example, Six Flags went through 1, 2, 3, 4, 5, 6 CEOs since 1998, okay, since 1998, Six CEO changes. So Kieran Burke, 1998 to 2005, Mark Shapiro, 2005 to 2010, Al Webber Jr, 2010 to 2012 and John Duffy, 2016 to 2017 and Jim Reed Anderson, 2012 to 2020. Salem, I know I'm butchering his name, I apologize, 2021 to present. Salem was and was the head of 11 different companies, none of which are in or were in the hospitality industry. So I find that really interesting, which some could argue he could bring a different aspect to the amusement industry and maybe that's why you see a lot of this tech coming to Six Flags that Cedar Fair seems to want to swoop up. But under Cedar Fair CEOs, this is where you see the strength and this is what creates those key differences in park management and how they're run. So no matter where you sit on the spectrum, I know a lot of people are calling me a Cedar Fair fanboy, but I'm sorry, you can't sit here and argue that there isn't significant differences between Cedar Fair and Six Flags in how they manage their park, the cleanliness and the attractiveness of those parks. And to me, my main argument is this right here. So Cedar Fair had Dick Kinzel from 1972 to 2012. Matt Weemit from 2012 to 2017 was 17 years experience for Disney prior to joining that team. Richard Zimmerman from 2017 to present with 30 years hospitality and entertainment experience. So a very strong, cohesive, smooth transitions between CEOs team that has happened at Cedar Fair and a very bumpy transition of CEOs at Six Flags with some who have no experience in the hospitality industry. So to me, it's very clear why Six Flags is and has been since 2019 and maybe even prior been looking for strong leadership. And this merge that is most likely going to take place. I know a lot of people are talking about federal regulations. I'm going to make a separate video about that because I'm going to explain why that's actually not going to get in the way. But I believe this merge is going to take place. I would be shocked to see the Six Flags shareholders vote against it. Again, Cedar Fair is unit holders, so we don't actually have a say in this matter outside of just selling our stocks. But Six Flags shareholders will vote on this. I can't see why they would vote no. I know shareholders of Six Flags have been very stressed under a lot of these leadership changes. And even in 2022, we're expressing discomfort with the current CEO and such little results taking place at the park. So I strongly believe this sale is going to, or not this sale, this merge is going to go forward. And if you're paying attention to the stockholders call and the events presentation, essentially what is going to happen is Cedar Fair's CEO and CFO are going to run the parks as they currently have been their own Cedar Fair parks. And they are looking to elevate the Six Flags brand under the Cedar Fair leadership. And what Salim and Six Flags are going to bring to the table is technology and innovation. So that's essentially how you're going to see the two companies run. And if they did not merge, this is why I believe I'm calling it the Six Flags downfall. I believe we would have seen Six Flags go chapter 11 in the next two to five years. I believe Six Flags, especially with some of their major parks like Magic Mountain and Six Flags, Great Adventure, with such significantly low attendance compared to prior COVID, it was inevitable that Six Flags as a chain was going to struggle. And I'm not sitting here and pretending like Cedar Fair wasn't experiencing the same. I know that Carowinds, Nottsbury Farm, and even Canada's Wonderland in the month of July, had some rough waves as well. I mean, it's been hard to avoid that Carowinds and Nottsbury Farm have had exponentially lower attendance this year as well. So these two parks, these two chains, they're not dumb. They see trends. They know trends. They have a lot of data analytics. And they probably were sensing the rough waters that are coming and merging is probably the smartest thing they can do as a company in terms of surviving the rough waters. It creates a lot of free cash flow. It creates a stronger brand and less competitiveness. So if they need to save money, they don't necessarily need to invest in such large scale projects, and they can focus more on infrastructure is and that's exactly what you were hearing in the stockholders call. So essentially, it on paper and to the business, this is probably the smartest thing they could have done to survive such tough economic times. So honestly, as much as I'm a naysayer and as much as I've been against it, it's definitely a really good thing if you want your your your local regional parks like Six Flags and Cedar Fair to survive. And unfortunately, it will lead to some unfortunate decisions again, you will see some Six Flags and a few Cedar Fair parks sold off. But I also think you're going to see some parks that maybe weren't that invested in suddenly become star children. I know the Texas parks were getting a lot of investments as of recent, and I think that's only going to get better. I think Kings Dominion might even start to become a star child as well as it needs to compete against Bush Gardens Williamsburg. But I think parks like Six Flags America and Worlds of Fun and Dourney Park might actually start to see some sort of dwindling in terms of investments and maybe even worse for some of them, not all the ones that I just mentioned, obviously. And I also think parks like Canada's Wonderland might suffer a little bit too that were used to be star children and now might fall down to the middle of the spectrum in terms of being so important. But now with all that said, hopefully that provided some clarification on the downfall of regional parks like Cedar Fair and Six Flags and why that led them to this decision and how that might actually provide some security for your local parks that you visit. So that's my opinions on it. I think it's clear as day that Six Flags was the weaker link in this and it's on paper that they were the weaker link on this, especially from Marco Axis, rating them a higher, much higher chance of bankruptcy. So I think this was a mandatory decision on Six Flags as part to essentially join forces with any brand and they wanted to go with Cedar Fair due to their strong leadership and experience in the hospitality and amusement industry and it only makes sense. So all the decisions that they've made in this merger make sense to me now. Six Flags is looking for strong leadership to elevate their park brands and they're going to bring technology to the table with Salim. So hopefully you enjoyed today's video. Definitely comment down below if you have any questions, comments or even like concerns over anything I said and I'll start trying to reply to as many people as possible. My last video's got a lot of comments so I couldn't keep up. But yeah, thanks so much. Hopefully I'm providing some further thought to this topic and yeah, have a good one guys. Bye.


Have you ever heard stories about other Christians who pray for hours and wonder, what exactly do you say when you're praying for hours? Or maybe you hear all the teachings on prayer and then you wonder which truths to apply and when.  Do you have to speak out loud or can you just think your prayers? Do you have to stand when you pray? Can you lie down or pace when you pray? What comes first? Do you make a prayer request? Do you worship? Do spiritual warfare? When should you pray in tongues? When should you pray for others? Don't make the mistake of ritualizing something that is spiritual. It's good to receive teachings and truths on prayer, but when it comes down to it, prayer is by the Holy Spirit. So instead of stressing when you pray, just wait. When you don't know what to pray, just pause and ask the Holy Spirit to guide you. He'll take you by the hand and direct you every moment in prayer. Like an eagle surrendering to the wind, so the believer soars when surrendering to the Holy Spirit in prayer.


This is amazing. I just found this to be the best sentence in the whole book, Father. I would rejoice more for one of you to say a single Hail Mary for the salvation of my poor soul than I would to receive an infinite treasure of gold and silver or to be granted sovereignty over all the kingdoms of earth.  And this poor soul, who's fearing eternal judgment and has a sense of eternity before him, would rather have one Hail Mary said for him than to have all the kingdoms of the world staggering. It is, it is. And it points to the awesome power of prayer as well. I had particularly prayer for the deceased.


In this presentation, we will enter a journal entry to record finished jobs moving those finished jobs from the work in process account to the finished jobs inventory finished goods inventory account. Recall what we have done so far is record the processing and the production of our inventory. Most of that happening in the account called work in process that work in process account, this one number in work in process being supported by jobs. So this one number needs to be supported in a similar way as the accounts receivable. The accounts receivable having a GL account by date, but also needing a subsidiary account by customer to know who owes this money. The work in process also has a GL account by date, but we also need to know this work in process by job. So as we recorded costs that are going to be applied to inventory, we either applied them to the work in process directly if we knew which job it was going to, such as the direct materials and the direct labor, or we had to allocate it to the jobs after first recording it into the bucket of overhead, then using a predetermined overhead rate to allocate the overhead to the actual jobs. What we're showing here is going to be a bit of a condensed job cost sheet. So we have like these a condensed job cost sheets job be 15, be 16, be 17, have here be 18 and be 19. They all have the three major components that we've got the direct materials, direct labor and factory overhead. And if we add those up, these three components for each job, we will get to the totals here the total for each job. So this is the cost of each job as we've go that this is the cost so far. Now, when all those jobs are open, then as they have been so far, we're going to say that they're all in work in process, we don't have anything in finished goods so far. And so all of these jobs at the start of here, we're open jobs, they're all going to be comprised of or put together to come up to the 13150. In other words, if we add up these jobs, we're going to say the total job cost is 3820 plus 2790, which is this item, plus 2024 plus job B17, which is 2126 and job B18, which is 2390. That's going to give us our 13150. So that's the case when they're all open. Now, there's three basic ways a job can be. It could be open and we're still working on it, which means it's going to be in work in process, or it can be closed because we're done with it. So I'm going to call that a closed job, a finished job, a completed job. However, we want to phrase that. We're going to say it's completed. And therefore it needs to move from the open job to the completed jobs. And we're going to say that these three in blue here are those that have moved. We're going to say they still have a job cost sheet. The job cost sheet looks much the same, but it's done. We're no longer working on it. We're no longer adding more material, labor, and overhead costs to it because it has been completed. Whereas these two jobs B18 and B19 are still open. So what we need to do then is make a journal entry for that transaction to move this to here. The journal entry is pretty straightforward because these are two inventory accounts, we just need to move this to here. But we need to be able to support that by the job sheets. And that's what that's what gets a little bit tricky, because we're going to be using these job sheets to back up and support both the work in process and the finished goods. So the journal entry, according to the numbers we have here, we're going to say, okay, these three blue jobs, we're going to move. So that's going to be the 3820 plus the 2126 plus the 2790. So that's going to be these three items here. And we're going to move those out. And we're going to put those into finished goods. So let's do that now with a journal entry. Before we do, however, just want to remind us of what the full job cost sheets that we've been looking at have looked like. So we're kind of simplifying these job cost sheets here to give us a simple worksheet to work with job cost sheet that we have been looking at might be more detailed depending on what types of job cost systems we're running. But they have the three components, direct materials, direct labor and overhead. And again, we might be applying that direct labor out with the requisition forms and the time tickets and a time and tying that information out. But in essence, of course, we're going to end up with total direct materials, total direct labor and overhead, those being our jobs. And then we're going to pick those jobs as we did here. See, we only have basically the totals in this little worksheet. We'll take the totals here, pick the jobs that are open the jobs that as they close and allocate them out in this process. So here we've done this, we're going to we're going to say remember that our amount is 8745 for these three blue jobs that we're going to move out. And then the journal entry is pretty straightforward. We're just going to take them out of work and process. This is a debit balance account, we need to make it go down. And therefore we'll do the opposite thing to it a credit. And we're going to put it into the finished goods inventory. This is also another inventory which is an asset balance account. It needs to go up. So we're going to do the same thing to it as its normal balance, which is a debit. So we're going to go ahead and debit the finished goods inventory for that 8736 the sum of these three jobs. And then we're going to credit the work and process for that eight thousand seven 36 just moving that number from here to here. Again, the difficult part being us making sure that we have the correct supporting documentation with the jobs to support both the work and process now and the finished goods accounts. So we're going to post this now to the general ledger. So here's our finished goods, we're going to post this out, it's going to go from zero up by 8736 to 8736. That then is found here in our trial balance. So here's our ending trial balance so far. And then we have our work and process, we're going to credit it. So it was at 13150. We're going to credit it by that 8736 moving it out and down to 4000 for 114. And that of course is the amount we see here on the trial balance. So now we just broke this number up between, in essence, those two breaking out the ones that are finished goods based on the jobs that had now been completed. So if we look at our end product now, we see the job cost system is now supporting these two numbers. And just to verify that we we said that the blue numbers are now the finished jobs, which once again is the 3820 plus the 2790 plus the 2126. That's going to be this number, this number in this number adds up to this 8736. And the jobs that still remain open then are also supported by these two numbers 2390 and the 2024. So that's going to be these two open jobs. And that's going to be represented by the work and process account here. So now both of these accounts are being supported by our job cost sheets. The next step, of course, is that we're going to sell some of these. And that step will be similar to a merchandising company in that we'll finally have these finished goods inventory, you can think of these jobs as basically finished goods like inventory, this is the cost of them now in finished goods. And we can just when we sell them have the normal journal entry. And we'll see that next time. Just to note, however, when we do sell it, we often forget about and get confused in the sales half of the journal entry and the cost of goods sold, because we've been focusing so much on the cost that we're actually focusing in when we sell it on the cost of goods sold component, the sales component, everything we're tracking here has nothing to do with sales yet. We may use the job cost sheet for sales. But these job costs sheets don't have anything to do with sales. And therefore, they're not related directly. So in other words, we may, for example, use our job cost sheet as our construction of our invoice and say our invoice, look, we had this much in direct materials this much in direct labor this much in overhead. And we may tell our customers that we have a like a 30 or 40% markup and say that the sales price then would be 23902390 times a 30% markup point three plus the 2390 and charge then 3107. That's one way we could construct the invoice. But it doesn't necessarily have to be constructed that way. And when we do the journal entry, there's two sides to it, there's going to be debiting accounts receivable or cash and crediting sales that side having nothing to do directly with these numbers. And the other side being debiting cost of goods sold, crediting the inventory in our case, finished goods inventory. That that journal entry should look familiar if you've worked with merchandising companies. But again, since we haven't been looking at that journal entry the whole time and have only been focusing in on cost and not revenue side of things, we can get confused on that journal entry. So that's what we'll do next time.


Miguel you came to the plate in the 13th with runners on second and third and two outs What was your approach in that situation?   This one was a real battle all night long. Can you describe your reaction when you see that it goes to the outfield and a run will score? I mean, I'm feeling really good. I'm feeling really good because, you know, I hurt my team and that moment, you know, everybody happy on the dugout too. And, you know, that's what we need, you know, for win the game. Another big night for you. Three hits, a home run. You now have 15 on the season, 50 RBI's. You've been a big part of this offense. Is there any part of you that is surprised how much production you've been able to give them offensively?  You know, I don't look the numbers and try to do my job and hurt my team to win, you know. That was the first time Sonny Gray came out of the bullpen. What did you think of his first appearance? I see Sonny good. I see Sonny good. It's aggressive, you know, the pitching. He threw the pitch, two most pitching really good and, you know, I see him really good. Miguel, thanks for the time. Congratulations on the win. Thank you.


Hi everyone, Joe for jaspyscasebrakes.com coming at you with 2019, 2020, Panini Hoops, premium stock, sello pack, random team number 15. Well basketball action for you. We're going to do the break itself first and then we'll re-randomize everybody's names and the top three we'll get into that big 24 box basketball mixer. Go and check out the details on that, a lot of excellent boxes in there, a lot of fun stuff. Big thanks everybody here for getting it on the action. There are all the teams right here. Let's roll it, let's randomize it, six and a five, eleven times for each list. Names and teams, two, three, four, and eleven the final time. After eleven we got Dylan down to Brian. Six and a five, eleven times for the teams, two, and eleven, Cavs down to Miami. Nice Oliver, yeah. I don't golf though. I'll play tennis with you. I'll have to play tennis in ages too. I need to get back out there. I can mini golf with you. All right, there's the first half of the list right here. There's the second half of the list. No trades in these little filler breaks. We just want to get to who's going to get those mixer spots really. Let's sort by column B and let's print and rip. I think they call them gold power now, Sean. Can you double check that if you are not too busy? I'm almost certain they changed the name on us. Maybe it's just for soccer? I wonder if that's a change they're making for this year. Gold vinyls, gold power, at least that's what the checklist said, cardboardconnection.com said that. I just want to try to be accurate. Will Barton, Jermon Green, Jalen Brown, nothing too crazy there. What about the bonus pack? Bonus pack, Landry Shamet, Jeremy Grant, and Kevin Durant. All right, nothing too crazy there, but let's flip over here. Let's see who's going to get into that mixer. I think that's what, a $600 mixer or something like that? Let's get everybody's names. Let's randomize it. Four and a four, hard eight. Yeah, that's $600 a spot. That's pretty good. All right, so hard eight, four and a four, eight times, top three after eight. So it is gold power, three, four. Yeah, I wonder if it's a 2020 thing, you know, if it's a new change for this year or if it's just for soccer. I guess we'll see when like prison basketball comes out, whenever that checklist comes out. All right, now, sorry, Brian, from four down to 30, very close, no cigar though, appreciate you guys, everybody getting into this, thanks for giving it a shot. Three happy people though, congrats to Richard, Robert, and Jay.  I'm Joe for JasperJasperEaseCaseBrakes.com, thanks for getting in, I'll see you next time for the next one.


Okay, my name is James Marka and my talk today is called that sequel looks pretty complicated where the tests I was going to name it can't test that Because I had a really bad thing. I had like visions of MC Hammer and so on but I forget how to test it so that would be a lie Fonce a little small but anyway database. They're super useful. I'm a user of databases. I'm not a DPA. I tend to abuse them and they get really messy and It's becomes like the preserve proverbial spaghetti code that your parents warned you not to do so my motivation for this talk and for My work that I've been doing in the last Several months is a cleanup and test my sequel code So just give context. I want to talk about you know the problem that I had That that led to the disastrously long complex code If you look here, I think the mouse works. Yeah These little orange or yellow dots are detectors along highway. This is a snapshot of Fresno in California and So these we know these points. These are detectors. We don't know anything about the highways We're working for the California Department of Transportation. They didn't have really information on the roads I don't know why that's sort of puzzled us, but so we used Open-street maps. I'm just distilling this down to you know the details of what our problem is what we want to do is snap each one of these little detectors onto a roadway and What we need to find out is how long the segment is that? This detectors response before so we think about a car going along a highway if it crosses the detector you want to say Okay, this is a half mile segment of highway that I just counted a car on so then when you can say I've got 10 cars passing a half mile That's five vehicle miles traveled and that's what everything is all about in transportation counting vehicle miles traveled The problem of course is that these detectors come in and out of service over time So if one downstream goes out, I need to know okay redo this this query and say you know This one is is now dead. So this detector effective length goes halfway to the next one down the line So I need to have some sort of dynamic way to go in there and find out how long are the segments so My colleague and I wrote a lot of code This doesn't look that bad right here except that it's really long and There's about four or five files worth of stuff like this and this is just one little bit of it Basically, what we had to do is take open-street map clean it up Pull out the freeways and open-street map get the freeways from Caltrans data get the directions right Go fix some open-street map files that were wrong and do all kinds of crazy stuff So it was a start at the beginning work all the way through and at the end we have a pretty good output But and and it works pretty well But it's really ugly. So like my favorite Italian cookies Brutti. My morning Brutti means ugly in Italian and those are ugly cookies So that my talk objectives here to give a real-world examples of using PG tap and sketch Which is what I've been using to try to bring order to the chaos I have two Examples I'm going to use the primary one is cleaning up after a minor minor sequel disaster because It just lended itself better this talk and I'm gonna talk a little bit about modularizing and testing that giant sequel statement and it's related stuff, but When I was looking at pulling together the talk that was actually kind of tedious because it's just sort of okay Cut this move it over here clean it up So my hope is that others can learn from my mistakes So my name is James. I said I'm a transportation researcher at UC Irvine My friend and I are also starting off our own consulting firm because our research money is tending to dry up Not because we do bad research. It's just the way it goes politics and stuff I've been using post-credits since 2001 or so. I Needed a geo-enabled database to track some incoming GPS data. We're getting from Cars we had a little detector box we stuck in cars with a cellular digital packet data modem So it was really slow About as slow as the old dial-up modems and really flaky, but kind of cool back in 2001 Just want to acknowledge Caltrans both dry ass eyes what they currently call themselves with Department of Research and Innovation and District 12 and the California Air Resources Board who funds a lot of our other work So the context that I'm going to talk about today is the California vehicle activity database We have to estimate from data vehicle movements on state roads and highways This is for a resources board. They want to know how many trucks on the road How many cars and so on so they can get an estimate on emissions So again back recall how long is that segment of roadway if I can measure you know trucks on that roadway? I know I've got you know a vehicle mile of trucks so to speak We've got our input to our sources of 10,000 inductive loop detectors 100 plus way in motion stations. There's I think about 180 total 150 actually care about but of those only about 110 actually work And then we have loop detector counts from sorry a pneumatic tube detector So this is what a loop detector looks like you've all seen them and this is a bad picture I apologize, but they're actually six detectors right here three in this lane and three in this lane There's a little faint circle so as you drive over one of these detectors if you've done any sort of electrical engineering If you pass a current through a loop You get a B field going up a magnetic field So when you run a car over that B field you induce reverse current and that triggers a little voltage that you can measure on the side Of the road so the way these things work They say there's a car over my head and there's not a car so it's zero one binary counting. They're really robust I mean highways are incredibly abusive environments. You've got trucks pounding on these things You got wild heat swings and temperature so they have to be robust people have been talking about putting out Let's put video cameras. Let's put other stuff And they're all more expensive and don't work as well or as long and these don't work really well very well at all But they're still better than anything else out there, but it's still 60s level technology So the way they count the way they use these they aggregate up the data every 30 seconds So you get a count of cars in 30 seconds and they also have the amount of time that's been occupied for that 30 seconds So a traffic jam a car is stopped over detector even occupancy of one Because it's 100% of the time occupied this is the other technology I'm using the way in motion Detector station so there's two loops here so you can get a speed trap going on first loop triggers time at second loop triggers That's how fast the things go in and then you've got left and right bending plates So you can measure the weight on each axle and also by counting the actual hits You can get the measure of the distance between axles because you know the speed of the truck These are really accurate do pretty well They tend to go out of calibration and then Caltrans would just shut it down for a month while they recalibrate it The problem with these as far as I'm concerned as a data guy Caltrans isn't doesn't care about cars.  They're like, well, oh, well, we don't want that This is the lowest tech technology putting out pneumatic tubes again These are done on the rural roads or actually any street. You'll count them Every street in the United States has to be counted every three years or so by official decree And so you'll see pneumatic tubes out on the road. You'll drive over them That's part of the highway performance monitoring system project So that that's also kind of it's there. I'm not gonna talk about it now. But anyway So the first project I'm gonna talk about is a sequel disaster. This is gonna talk about the problem and then how I fixed it Trying to go quickly through this so in 2003 I was asked to put up a map of Detector points so someone one of the other professors could display His safety results so I figured it's pretty easy I put the the loop detective data into postgres I already knew how to do that make points I knew how to do that put him up on a map Which I knew how to do and then do a little clicky clicky thing on on the website to load up this safety data The only problem, of course, they wanted me to do it in Java and which was really horrible, but whatever So I'm gonna talk about the first two. This is what the data looks like. I apologize. It's too small to read in the back I'm sure but there's basically IDs and the most important thing that I cared about was there's latitude and longitude That's it was in a certain projection if anybody knows anything about Maps and stuff there are projections you can use so post GIS is awesome Let me just say I want to transform from one projection to another There's a huge table that you get in your database when you load up post GIS that has all the SRIDs You can possibly worry about and if you need a different one you can define it using You know a standard way of defining a projection so The original data came in 4269. I wanted to convert it to 4326 Which is what you need for Google Maps. Otherwise you get a weird shift And then I need to join tables. So this is kind of what it looks like I didn't really need to put two different Geometry point tables. I probably could have stuck it in there nowadays But back when I did this post GIS had a limitation. You can only have one geometry item per table So I said alright, I'll just put it as an external thing. I read a book that said there's a thing called normalized tables I said cool. This is normalized So I have some Perl code to load it up. I see I have a create an ID populate the metadata table and then I create a geometry ID populate the geometry table This is a function I call but it just calls out to the the post GIS functions Then I populate the metadata in between At the time I didn't know how to do this all in one go. So I said well, there's only 20,000 odd Who cares? I'll just do them one at a time So I decided you know get one row of metadata do all these steps and each step is you know going back and forth the database It's slow, but I didn't care about speed. I cared about being able to make sure it did the right thing I didn't know how to test at the time. I had no idea what testing was at the time other than well, it works see That was my extent of my testing So then I did this transform project Project geometry to 4 3 2 6 and that code looks like this So this is an example right here of what the the post GIS functions are So I selected as text the output of the as the transform function And that text came back to Pearl so I could you know move around with it I didn't want to get a binary object back from the database and then down here I say all right, let's send that back the database into the new projection geometry table and then With that new geometry I can create the joint table So years go by 2003 to 2010 my daughters are growing up and the Calvated Project starts and The the client wants way in motion stations thrown in this mix. I said great same idea You know same an approach, but I'm going to use those same Geom points tables to save the data and this is kind of important and also the amount of time involved It's kind of important because you know you forget these things over the years. So This is I don't see anything wrong with this myself Maybe you guys out there if you're good at database of that stupid and naive, but So I've got a joint table here pointing at my geometry points table and same thing for the other points over here So this is VDS points of win points both point to just generic points that get created in this job points tables Same approach do it in Pearl Years go by my daughters grew up some more and we're back in 2015 And the Calvated Project ending so this year. I'm delivering it to the client So it's time to transfer the data over there But the table is too big to download. I said well, why don't we just learn by doing and So my counterpart is you know running through my code downloading the data from California Getting my code. I'm cleaning up my pro code as I go because you know from back in 2010 and sometimes older 2003 and so on So he can do all the stuff and he learns how to use it himself and that he becomes the expert at ARB for running this project So What to do we go back and forth running our code running pearl running JavaScript Etc. I doing whatever we had to do and then I got to the Wim date apart and I said all right We processed all of our VDS data We have all this other stuff and I was really getting sick of dealing with my old pearl code so as you know, it's only 150 sites and I just copy this stuff over there I had a test in one of my JavaScript functions that that actually exercised R and R is a statistical processing language, but so it had to go in there and make sure that the R code worked So I had mocked up a Couple of tables and I said why don't stick all the real data for for the way in motion stations so I did and has some real other stuff in there so I could create a little Imputation tests that would say if it ran and finished then we're all good to go So I said to him well, why don't you just go into this file over here see those two sequel files? Just you know psql dash whatever dash f that file and then you'll load up all the Wim data So all the Wim data meant you know this Wim stations table all these other tables that you can't see and also I included these Wim points tables and that was not really smart because now these Wim points tables Pointed to GIDs that are in my database not his so he had created a whole bunch of new points in a completely different order and He actually had no Wim data at all on that table, but I had perfectly valid GIDs pointing to completely wrong geometries, so we went along for a couple days and then We were doing something else for the Wim data I said well Why are those here results are weird? Why is also weird and I looked at some of the detectors said this detector is down here in Ventura County I know what that is because I drive there when I go to a mother-in-law's house And it's pointing to a detector in District 4, which is San Francisco is being the closest loop detector So you know my distance calculation is either the horribly wrong or something's going on And I figured out what the problem was I had done this so Broke the join table, and I had to fix it So I've been using PG tap to try to clean up that other giant sequel stuff I said well hey, this is a perfect application for it, and actually works really well for this talk, too So I had to prove that was a problem first You know PG tap says yes these things fail and then when I was all done with it I mean we say yeah it worked and so I could ship it off to him and have him Proved to himself said it worked, and then I use sketch to organize the fix so PG tap was done by David Wheeler who is at this conference, and I've already said thank you to him because he's awesome this stuff is great Highly recommend everybody using it all the time for everything So tap is a test anything protocol and PG tap lets you run tests in your database So it actually will put an extension in your database For the test I'm running actually puts it extension in only during the duration of the the test itself So from beginning to a rollback block So it rolls back that extension if it's in there, sorry not in there already And it lets you just sort of throw some database code in there run the tests, and then it wires up You know the usual test things you expect like you know is it okay does it pass etc So it's a lot like the pearl test anything protocol type functions if you ever programmed in pearl The basic purpose of PG tap is to say either this is okay it passed or this is not okay. It failed That's it. That's all it wants to do So I there's there's a simple test script you can run You just make a little sequel script and then run it with PG prove or we can use X unit style test functions But I really don't know anything about that. So I don't do that. I just use a simple test script with PG prove It has also advanced features You can integrate with any tap a testing system. There's one in JavaScript. There's obviously a pearl one I think that's where it started, but they're in pretty much any language you want to use They'll be in there And it has X unit style usage which again I don't really know what that is and it's compatible with integration servers like Hudson and Travis and so on which again I don't know what those are, but it's pretty cool. You can see little icons on github that say test passing I think that's how they do it. I don't know. I need to look into that So my testing needs I need to make sure these database tables exist. You know those five that I talked about Verify the primary keys work for relationships are there and that each women's station has a geometry and that the geometry actually matches the metadata Is that I knew I had all those five tables. I know the women's stations all work, right? I don't really need to check those things, but I'm about to mess with the database So I want to make sure my tests don't reveal if I break anything so One last thing I run it with PG prove So just to make sure this is clear in case it's on the internet So CPAN M dash dash pseudo tap parser source handle. That's in the PG tap documentation You don't need to I'm sorry that the fonts are just a little smaller and I expect them to be but CPAN M is CPAN minus Has anybody wrote program on pearl anymore? so CPAN is The grand daddy of all package managers package managers CPAN M is CPAN minus. It's a little bit smaller and Easier to handle so I use that PG tap so testing tables There's two approaches here. So these are the kinds of functions you might use to test a scheme or a table. There's has schema and Those checks whether or not a database has something so in this case if the database Table whim stations is in the scheme of public then the test passes if there is no database Wim station, sorry table whim stations the test fails The R variants are more restrictive So they things they do things like check that all the tables are exactly this list you said and All the schemas in the database are exactly the list you said so they're not so useful to me because You know if I if I'm hacking around a database and I create a new schema to just have some other things in it I don't want to clutter the main public or any my other schemas then this test will start failing but if you're a DBA or if you're You know running stuff for other people and you want to make sure they don't mess with things and break important stuff Then you can run this and say hey, you know at the end of the day someone created a new schemas Let's delete that And teach them bad user I Actually had some so at UCI I'm I'm the guy in the department who runs these stupid database things and sets up the websites because you know we're transportation guys and So I actually had to manage the database for a little while for some people I put it on a server I didn't care about because it was I knew it's gonna get host and they were just shoving all Kinds of junk in there and I wish I'd known about this because I would have said why are you putting things in public? What are all these tables and put it in your own schema? But I couldn't turn off access to public because I didn't really want to do that to them that would have been rude Had I known I would have been able to use this So I want to do a quick demo of the some of the basic tests here Hopefully this all works out So I have a Database that exists and I'm going to do PG prove I already did this for for the talk because hey I actually have a little bit of a mocha JavaScript program that as part of the scaffolding for the test creates a database So I also have a teardown script after by just deleted the teardown part And it just creates databases filled with data that is all broken it wrong So anyway PG prove Dash D actually don't have it up there. That looks good. Okay, so What are you trying to test here test basics so Want to show this so this I had an extra I had one of the tables are Commands in there because I want to show that it fails. I have other tables than these Four or five listed tables here. So if you go into emacs, you can change that Delete this tables are apart or comment it out Oops and now the test should pass There we go. So there's lots of other tests as well. I think we're doing okay on time. I think I just Completely jumped around in my click the wrong thing That's reasonably close So this table relationship functions as well There's a is primary key has primary key is foreign key has foreign key indexes are and so on These are my primary key tests. I don't think it's important to go through them Same thing with indexes and for the indexes actually do use the indexes are variant because in that case It's my table. I want to make sure I have all exactly those indexes I don't want to have extra indexes laying around So I was using that for that test It just when it goes database-wide it begins to get a little bit much for me So then the foreign keys are tested that the fk ok is is a super cool function So there's all these things that you do you have a primary key do you have foreign keys and so on but this one wraps everything up And one so it says, you know the first line there Define your foreign key schema a foreign key table foreign key columns and then your primary Key schema table and columns so it's basically says does this primary key point to a valid foreign key in another table? So that's great. That's exactly what I want to run, right? So these are the tests that I have the fk ok My WIM station site has to point to and be pointed from the WIM points site Same thing with geometry points You know that in both projections and so on so I can run that test And it should fail because Stuff is broken right now in that database. So I don't think it's fk's which one is it because it is fk's Yep, so it failed two of the five subtests because of course it doesn't have The the geometries don't exist and that that one table Because that's why I built this database to say okay do things fail So I'll click on this and try not to click on that there You're not limited to simple tests with PG tap you can do lots of complicated things It doesn't just say a or b is it there is a bad you can also say result equal and I use resist all the time You can put arbitrarily complicated sequel and a and b and then those The results are compared row by row There are some caveats there because it Executes the sequel you have to use prepare statements usually you can put quotes around it too But usually that gets too messy you'll have a quote inside of a quote and then I always forget how to escape quotes and sequel statements So it also does item by item comparison So if you select a huge table of things you want to make sure it's sorted in exactly the same order as What you expect your other side to be because it's going to compare one by one And if you just rely on the order it's going to fail or it might pass for a while and then fail later some from you know Because the ordering changed So for example, you can say do I have enough entries does every Select the site number from the WIM stations I'll get a list of site numbers and then I select the WIM ID from the WIM points They're not called the same thing and that's just Because of an idiot back when I wrote this but so site numbers match up with WIM IDs all the way down If that test pass and of course you do the same thing for both projections