The Changelog: Software Development, Open Source - Just Postgres (Interview)

Episode Date: January 20, 2023

This week we're talking about by Postgres with Craig Kerstiens, Chief Product Officer at Crunchy Data, and a well known ambassador for Postgres. Just Postgres. That's what this week's show is about....

Transcript
Discussion (0)
Starting point is 00:00:00 Uh-oh, wrong track. Yes, that's more like it. Hey, it is not Monday, it is Friday, and this is the Change Log. And this week we're joined by Craig Kirsteins. Craig is the Chief Product Officer at Crunchy Data and a well-known ambassador for Postgres at large. So the title says it all, just Postgres. That's what today's show is about.
Starting point is 00:00:29 Huge thank you to our friends and our partners at Fastly and Fly. Our podcasts are fast to download globally because, hey, Fastly is fast globally. Check them out at Fastly.com. And our friends at Fly let you put your app and your database closer to your users all over the world. No apps required. Check them out at fly.io. Our friends at Sentry help teams build better software faster.
Starting point is 00:00:58 And you can try for yourself today at sentry.io slash demo slash sandbox. Try a live demo of Sentry right now. No talking to a salesperson. Just give it a try. It is a fully functional version of Sentry that you can poke at. And best of all, our listeners get the team plan for free for three months. Head to Sentry.io and use the code changelog when you sign up. Again, Sentry.io or head to Sentry.io slash demo slash sandbox. Well, Craig, last time we had you on the changelog, we were talking about what's so exciting about Postgres. And you and I both are excited by Postgres, but mostly about how stable and boring and reliable it is.
Starting point is 00:02:05 That being said, lots of people, I would say today, even more excited about Postgres. We had Nikita from Neon on the show, and he pointed out that of the top five databases on DB Engine's rankings, it's like the only one that's growing amongst the top five. So there's people that are using it more and more, getting more excited maybe about how boring it is. I don't know. What are your thoughts on Postgres of late adoption, interest, and what's been going on? Yeah, I think it's, I mean, that's spot on.
Starting point is 00:02:36 I love to usually reference Hacker News, who's hiring. So there's one site where you can chart who's hiring for some various technologies on Hacker News. And when you chart all the databases, Postgres is just like a runaway. It's like Postgres number one, then Mongo number two, and then the others. When you chart it over time, what's interesting is I think Postgres teeters back and forth between the number four and number five technology. And that's including things like, oh, JavaScript. I'm like, how in the top five language and technologies that people are hiring for? And I think most of us read Hacker News,
Starting point is 00:03:11 it's not the end-all be-all perfect indicator of technology, but it's a reasonable place of where things are headed, right? And so Joe Hellerstein wrote a book that was a tribute to Michael Stonebraker, who created Postgres. And he did a lot of research on, you know, like the work that Stonebraker put in and the origins of it. It's a great, I think you can go find it. I'll dig it up after and we can link it in the show notes. It's a great like 20 page PDF free book that's really great on the history and the origin of Postgres. And Joe Hellerstein, who's a professor at UC Berkeley, teaches databases there, did a lot of research on like, well, when did Postgres get popular? And like a lot of signs
Starting point is 00:03:51 pointed to Heroku and what we did way, way, way back. And so I was lucky to be there in those early days, right? I think we were lucky to pick Postgres, but it was a good decision and the right decision. It changed a lot of that trajectory, but since then, I think there's, you know, now there's no looking back. Everyone wants to do something with Postgres and be there. It's just a great database. It just works and it keeps getting better. And I think we're, you know, we talked a couple of years ago. It's like, oh, we're at peak Postgres maybe. It's like, no, two years later now we're at peak Postgres and maybe we'll talk to another too and it stays on that trend. Yeah.
Starting point is 00:04:28 Can you recall what made you choose or consider Postgres back in the Heroku day whenever you made that choice, that fortunate choice? I've heard a couple of mixed stories. And I think we tracked it down to the correct one. There was one SRE ops engineer that said, like, well i i heard it has a pretty good track record like it seems like it has a pretty good security story let's go with it and some other folks had used it and it seemed good it was pretty inconsequential it wasn't like we did this great business SWAT analogy right rds didn't even exist back then right so it wasn't like a
Starting point is 00:05:01 oh well if rds existed we would have just wrapped that and given customers that. But it didn't exist, and we had all these Rails developers asking for a database and thought, how hard could this be? Turns out it was a lot more work than we expected. But it was a pretty inconsequential yeah, it has a good track record for security. It doesn't corrupt data. All right, let's go with it. How do you think Heroku had an impact on Postgres over time? I know that the team got more formalized overwise. I know a lot of your career was built in Postgres and Heroku then. What do you think Heroku did for Postgres just as much as Postgres did for Heroku?
Starting point is 00:05:36 I mean, I had the email somewhere from the GM of RDS saying, you're the reason we shipped. We kept getting requests from RDS customers for Postgres. Heroku was the reason we shipped. Like, we kept getting requests from RDS customers for Postgres. Heroku was the reason RDS added support. And it was a couple of years after they wanted to. I mean, I should have, I don't know if I can dig that email up. I don't know that it's public to share, but like, you know, I think Heroku have put it on the map.
Starting point is 00:05:59 And then once it was RDS, it just cascaded. I mean, you two have used Heroku. Like, you've used Postgres. Like, how did you guys come to Postgres? have used Heroku. Yeah. You've used Postgres. How did you guys come to Postgres? Pretty much Heroku. So I was on Ruby on Rails, and the default database in test mode was, and probably still is, SQLite.
Starting point is 00:06:17 And the default database in prod back then was MySQL. And so I was a MySQL user, and I never really had problems with it, but I read a lot of blog posts that would point out it's data corruption things, or maybe it's not corruption, but coalescing, what's the word? Sometimes it would be too lax, and it would take things,
Starting point is 00:06:35 and instead of reporting, it would just turn it into something else, and you wouldn't find out until much later. And that always scared me a little bit. I don't think I ever actually got bit by it myself. And so I was a relatively happy MySQL user, but I was a happier Heroku user. And I saw the happy path on Heroku was Postgres. And the nice thing about Rails, even though I kind of decry this whole idea of like, you can just swap out your database thing, but especially when you're first getting started,
Starting point is 00:07:00 you really could pretty much just change the adapter as long as you're putting all your logic in your Rails code and not at your database layer, which I don't necessarily advocate for, but I was doing. It was pretty easy just to switch. And so when Heroku had Postgres, I just switched to Postgres and I started using it and I just liked it a lot. In fact, I never went back. I never had a reason to. And so that was my switching story. Yeah, I think it's a lot of folks. Like the popularity of Rails that Heroku made it the default. The Python and Django community kind of always recommended Postgres.
Starting point is 00:07:33 I don't know why. They just did. So I think like those two communities really, really helped to give the rise to it. You know, back in Heroku days, we also did a lot of investment on the JSON stuff and JSONB stuff and wrote some big checks for community development. I feel like before people were talking about sustainability and funding of open source that we thought it was important to improve the developer experience of it. And that was at a time where Postgres was good and stable, but it wasn't cool and sexy and user-friendly. I don't know. Can database's be sexy?
Starting point is 00:08:05 I don't know if they can. I don't know. But Heroku did a lot to advance that, and the rest is history. Now we're still kind of riding some of those great investments in JSON and other pieces. For those that don't go and read the PDF book you mentioned earlier, The Origins of, what's the origin story of Postgres? How did it become? What was the origin story of Postgres? Like why, how did it become, what was the landscape around that time?
Starting point is 00:08:28 Can you recall? So this, man, I've got to see how accurate I can get it. Postgres, you know, its name is Post Ingress. Ingress was one of the first two databases way back. So if you look at all major databases, they're one of two routes, right? So it's either like SQL Server. I forget if SQL Server has a base of,
Starting point is 00:08:49 hey, this came from that Postgres ingress route. I think so. I think SQL Server has an ingress base. Oracle does not. But it's kind of like you look at major databases and they're one of two routes. DB2, I believe, was ingress based. So its name came from Post ingress. At the time when it was first
Starting point is 00:09:06 released, it didn't have SQL support. That got added back a few years later and was this big deal. And they changed the name to PostgreSQL, which is now still lamented as one of the worst decisions they've ever made because no one knows how to pronounce it or spell it. It's like, how do you capitalize the SQL? Is it Postgre SQL? I joke with the community developers that I'm just going to call it Postgre until they change the name, and it drives people crazy. But I keep trying to see if it'll take off. Or you could just say Postgres. Yeah, exactly.
Starting point is 00:09:35 It's like just Postgres, just Postgres. Just skip it all together, the Q and the L, I guess. But it came out of UC Berkeley, and one of the core ideas that at the time was like heresy was this extensibility of a database. And now we see Postgres extensions like wildfire. But that was a core idea and philosophy that I don't see in any other databases that I only see in Postgres. But yeah, it was open source out of UC Berkeley. And it kind of was just there and good and worked for a while. And then fast forward 20, 25 years and it's really taken off, but it was just kind of a there good out of academia
Starting point is 00:10:11 thing for a long time. Are you involved in the core team at all or the core development or the steering of anything around that? Or are you just sort of ancillary to the Postgres world? Much more. I mean, a lot of them are friends a lot of them i'll have beers with hang out with so have over at my house for dinner so a lot of good friends there you barbecue right i've heard you talking about barbecue on on twitter quite a bit yeah yeah i have some opinions i mean i'm out in california so we don't most people out here don't know what uh barbecue is they're like hey i'm having a barbecue they're like show up at five o'clock and i'll fire up the grill i'm like, I'm having a barbecue. They're like, show up at five o'clock
Starting point is 00:10:45 and I'll fire up the grill. I'm like, you're not having a barbecue. Like, what are you talking about? We're cooking on the barbecue. I'm like, oh, so sorry. We can just just be the barbecue episode. I got I got an hour of that in me. We'll have to come back.
Starting point is 00:10:59 Actually, we should have you on backstage because we could talk barbecue. I would talk barbecue with you. That sounds legit barbecue. I live in Texas, so I got it down here. I would talk barbecue with you. That sounds fun. Legit barbecue. I live in Texas, so I got it down here. I would eat barbecue with you guys all day. I'm not sure how long I can talk it, but I can eat it. You can hang out while we cook, Jared.
Starting point is 00:11:12 I like that. We'll make you hungry by the end, yeah. Yeah, for sure. Where were we right before this? Well, you were saying you have barbecue with some of the core team. Oh, yeah, core development. Yeah, so I know those folks well. But, no, I'm not a C
Starting point is 00:11:25 developer. I've never contributed a line of code to Postgres itself. You know, I feel weird claiming any part of being, you know, part of the community, though I do a lot of content, engage with it. You know, I've run Postgres conferences before. So I've done things, but I do not contribute or commit code to Postgres at any level. So I can't claim any credit there. There's an amazing set of developers distributed around the world that really do the lion's share there. Yeah, well, when I think Postgres, I think your name. I think Craig. So I'd synonymize you, if that's the word, with Postgres.
Starting point is 00:11:58 To me, that's something you seem very passionate about, very excited about. Obviously, you're Crunchy Data now. Continue to work on Postgres in the many ways you do. So that's what I think of, at least. I think of you. I think of Postgres. Cool, thanks. Yeah, I mean, I've spent a good bit of my career on it.
Starting point is 00:12:15 I think I like DevTools in general as much as anything. Like, I think about, you know, that Heroku experience. I didn't join Heroku to focus on Postgres. I joined Heroku to launch their Python support and ran a whole bunch of other teams there. But the Postgres team pulled me in, and I kind of stuck for a little while. So I'm not going anywhere from Crunchy Data,
Starting point is 00:12:32 running Crunchy Bridge anytime soon. We've got a goal and a mission there. But I do hope at the next thing, I'll take a little break from databases and get back to that DevTools. But for now, it's still a thing that feels like there's unfinished business of creating an amazing developer experience for postgres well there's always dev tools around
Starting point is 00:12:49 postgres which i know you know of because that's kind of one of your focuses there at crunchy data is improving the dev experience of using postgres as the as the database you use so keep doing that around that at least if if not databases directly. Yeah, there was a big aha moment to me, I don't know if this was a year or two ago, where it's a good time to be a developer, right? And you can go to college for interior design, go to a boot camp, and then get a job as a software engineer. A good job, well-paying, hopefully it's interesting work, right? And you've got to go to a six-week or a three-month or six-month boot camp.
Starting point is 00:13:26 But there's this weird hole where the number of DBAs in the world is not really increasing. The number of people that are experts at databases, like it's not... There's more app developers in the world by a huge margin than there were two years ago. And then there were 10 years ago. And it's easier to become an application developer, but DBAs, I don't know where you go to become a DBA. There's no boot camps for that. So we're at an interesting inflection point where, as an app developer, it's probably your ratio of access to a DBA is less and less and less. So we're going to be looking for more services and
Starting point is 00:14:01 providers and tools to bridge that gap, right? I guess, pardon the crunchy bridge pun there, but it's that idea, that gap of how do we close that gap, right? It's super near and dear to my heart because I think of myself as more of a developer than a Postgres person, but also I can look at an explained plan and understand it. And I don't know if the average developer can, and you don't want to be dealing with your database, right? You want to focus on like, hey, I'm launching this new feature for customers. And yeah, I need to put data in there and I want it to stay and I want it to be retrieved fast. But I don't see either of you probably volunteer and be like, hey, I want to go write some SQL today.
Starting point is 00:14:38 It's going to be a great day, right? Probably not. No. probably not no and i think the longer i do this work the less patience i have for all of the periphery which i would consider like back-end storage to be like implementation details about that i must know and understand in order to accomplish what i actually want to accomplish which was for me you know almost two decades ago now the big big selling point of Ruby on Rails where it was like, look, all these decisions have been made for you.
Starting point is 00:15:09 Follow the conventions. Here's the happy path. Focus on what makes your app distinct. And that was a really big idea and delivered in a few ways for that. And we've been, in some sense, building from there ever since. In another sense,
Starting point is 00:15:23 having to rediscover that idea in different little ecosystems as application developers. But I do like Postgres mostly because I don't have to think about it very often once we're up and running. And that's really what I want from a data store. Now, there are other things that I want from it from time to time. But that's the big one for me. Yeah, I think it's a lot of people out there. And at some level, we were on that path with database innovation for a while, and it
Starting point is 00:15:49 kind of stalled out. I don't feel like there's been massive for a few years, there are massive innovation in that space. It was, you know, a major cloud provider would say install Postgres, and you're welcome. It's like, wait, but you didn't tell me how to use it. Like, that's still my job, right? We kind of paused and regressed a little, because Postgres is you're welcome. It's like, wait, but you didn't tell me how to use it. Like, that's still my job, right? We kind of paused and regressed a little because Postgres is a great database, but you still need just a little bit of that coaching, training, education type thing, right? And so it feels like we're picking back up there. I mean, Crunchy's focused on that. There's a few others, Supabase, Neon, others. I think what PlanetScale is doing is really exciting for the database space and everyone kind of has their own different approach like we're kind of having a renaissance and these things ebb and flow but how do we just make it a great
Starting point is 00:16:35 developer experience i think we stalled there for a little while so we're kind of picking back up from from uh leveling off there for a few years what What do you think caused the stall? Was it just, you know, shiny objects elsewhere or was it negligence? No sequel? There's a few pieces. You know, one, I think, so Postgres, jumping way back, right? We talked kind of about that origin of Postgres and one area, that origin of Postgres out of UC Berkeley and why Postgres is used all over and people don't realize it. Redshift was par Excel, which was Postgres.
Starting point is 00:17:09 So you take Postgres and you fork it. If you were building a data warehouse company 15 and 20 years ago, what you would do is you would start with Postgres. You would fork it and then you would go and make it MVP, like multi-parallel. And then you start to build in data warehousing features compression column restores those sort of things so you look at like green plum astrodata netiza like there's a laundry list of look at every data warehouse almost for the past 15 20 years and there was postgres at the core and so that's great then postgres kind of continued to rise and when you look at it there's other
Starting point is 00:17:45 people that are like, okay, Postgres is good, but we need more. We need to add on our special sauce. I think the major cloud providers started doing this first. Like you look at every major cloud provider and they have their flavor of, you know, air quotes, Postgres compatible thing. And I don't have a lot of love lost for them because it's not Postgres compatible. There is no spec for Postgres compatible. There is no, here is the doc. And't have a lot of love lost for them because it's not Postgres compatible. There is no spec for Postgres compatible. There is no here is the doc. And I have conversations with people every week where they're like, well, they told me it was Postgres compatible. And I migrated to it.
Starting point is 00:18:15 And six months in, I tried to do this thing. And they're like, well, no, that's in Postgres. What does compatibility mean then? And so I think we push these boundaries on like, hey, here's this shiny special thing. And it stalled us out a little bit. They're like, oh, now like Postgres, you know, hey, I'm going to take this, lock it in proprietary.
Starting point is 00:18:36 And that's what it is. And there was kind of this, it feels to me like there's this regression back to just Postgres. And like, actually, I just want this thing that is truly open source, that I know what it is. Like, I don't want this, like, no one's running a Ruby on Rails, like, massive fork that some consultancy, like,
Starting point is 00:18:54 shipped for 3x performance improvement, right? Like, why did we do that with databases? And so now we're seeing these things that were closed source and proprietary. Companies start to take a shot of creating open source versions of them, right? You look at PlanetScale, it's essentially Vitesse. You look at Neon, it is a open source version of Aurora. And those type of things take five to 10 years to mature.
Starting point is 00:19:22 Like a database, it's well regarded that a database typically takes 10 years to mature. Starting off with a Postgres base, you cut that in half. That's why most people started a data warehouse thing off that Postgres format. So I think we had it with a data warehousing phase, like it was Greenplum, AstroData, and Atiza. And then it's like, man, this is expensive.
Starting point is 00:19:41 This takes five years to build a business and a company. We don't want to do that. We can go and do a food delivery service in six months, and that's a lot easier. But then we had a drought of them. So I think people are taking another shot. I guess I'm the old curmudgeon that I'm just like, just Postgres. Like, guess what?
Starting point is 00:19:59 It's really good and just works. And I don't know a lot of people doing that. I see people now coming back to extending Postgres. So I think we're going to have exciting things come out of it. But I think for every five we have, like one or two survives, like you don't have to look at the long term picture of you to see that. So I'm a little bit on the curmudgeonly the I call like, you know, Postgres, Rails, or Django and like tailwind my like, you know, get stuff done, make money stack, Like I just want to build a business. I feel pretty good with that still. Yeah. In five years, that's a,
Starting point is 00:20:31 I just want to build products and ship them and build a business. Okay. So presents as Postgres, Postgres compatible, not really Postgres, correct? Yeah. There's a lot of that out there. Yes. Yeah. Are you generally down on that? I don't want you to stomp on companies and hard work because there's people out there doing things that are innovating and maybe it's just not something you value, but how do you feel about that world specifically, the compatible that presents us? I mean, I've worked at Citus, right? Running product there.
Starting point is 00:21:05 And it's an extension to Postgres. So it still hooks in, but it does crazy things with the planner, right? I'm not down on it, but it's not my go-to. And when I see that, it's like, what problem are you solving that existed in Postgres? And I mean, I've had people migrate over from one of those, you know, cloud Postgres compatible things that was supposed to be magic and cut their costs in half. And they were like, but this cloud provider told me this. So I've kind of seen it that the cloud providers went there first.
Starting point is 00:21:35 And now we've got some startups doing it. I think some are going to emerge with very interesting things. I think some aren't going to be around in five years. Now, which one am I going to pick? I'm going to pick open source Postgres because the track record is pretty... I think it's going to be around in five years, like knock on wood.
Starting point is 00:21:50 But I'm definitely excited for... People are talking about databases now, and I don't think they'd be talking about databases if it weren't for all these presents like Postgres, these Postgres-like things. Some kudos to PlanetScale. I take different views on there's technical decisions, but constraints are important and valuable,
Starting point is 00:22:10 and I wouldn't want a database without them. And we had them in sharded distributed situs in Postgres, so I think they can work. But I have a lot of friends over there, so I have contrasting views, but what they've done for excitement for databases is awesome. And, you know, most people aren't like, Craig, let's talk about this reliable database that doesn't lose your database and just has the functions I want. Let's talk about Postgres. It's
Starting point is 00:22:36 like, most people are like, yeah, I just want, you know, Jared, to your point, I want my database to work. Like, I don't want to think about it about it. Why do I need to talk about it or think about it? It just should work. It's a stalwart of that. This episode is brought to you by our friends at Postman. Postman is an API platform for building and using APIs. They are most known for API testing, and you may already use them, but they've built a full-featured API platform to help developers along each step of the API lifecycle. But what does it mean for Postman to be an API platform to help developers along each step of the API life cycle. But what does
Starting point is 00:23:25 it mean for Postman to be an API platform? Well, from API design, testing, monitoring, documentation, mocking, to the sharing and discoverability of APIs, they've built a full suite of tools to help teams build APIs together faster. Over 20 million developers use Postman to deliver their APIs. Plus they have a generous free tier. Start designing, developing, and testing APIs. Organize all your API development into workspaces and share those workspaces with other developers. You can create public workspaces to collaborate with the world's developers. You can back up your work to Postman's cloud.
Starting point is 00:23:58 You get their core tooling and collaboration for up to three users. Sign up and start using Postman for free today at postman.com slash changelogpod. Or for our listeners already using Postman, we encourage you to explore the entire API platform that Postman has to offer. Again, postman.com slash changelogpod. so when you talk about building things that are you know presents as or compatible it brings me back to the point that you made about the extensions so there's lots of different ways that you can extend postgres and change the way that it works. And it is amazing how many extensions there are. I was
Starting point is 00:24:50 just reading there was a post and Postgres Weekly of like what happened in Postgres land in 2022. And they went through and just listed out like, here's some extensions that were born this year. And there was like 18 of them all doing different things. And that probably was not a comprehensive list. I'm sure some were missed. Yeah, I'm sure there's plenty that were missed, but the point still stands. It was an overwhelmingly long list for just like,
Starting point is 00:25:13 well, here's the new things. Cause that's not like new versions of old things. That's brand new things that happened just this last year. And we can talk about an extension ecosystem. I think I would like to talk about that, but in light of this changing Postgres, then you also have like backend storage changes. Like you can change the way it's storing the data, correct? Like that's kind of what Neon is up to. And then there's foreign data wrappers. It's not like there's a lot of them, maybe these things overlap,
Starting point is 00:25:39 but it's not like there's a lot of these different like modularity points or extension points. And some are more like changing Postgres than others. Can you give an understanding of like the different ways you interact with it to extend or to change how it works? Which ones are totally like straight line, safe, open source path? And like when you start getting into hairy territory, like should I swap out my back end or not? Help people understand like that whole deal. Yeah, so there's a few pieces, right? So today, most extensions are C extensions or maybe Rust,
Starting point is 00:26:12 but need to kind of be built against the instance that you're running on. And so, you know, a lot of people show up excited about extensions and they're like, hey, I want to do this on RDS. And it's like, nope, like here is the whitelisted available set of extensions, right? So for at least the next midterm, like there's some thoughts on how to make this, you know, extensions more extensible, where it's like, oh, you could bring your own, right?
Starting point is 00:26:37 But we're a little ways off from that. But I think we'll wake up in a world in a couple of years, we'll talk in two years, and like there'll be an app store of extensions possibly, right? Which just blows my mind of what you could do with Postgres. And I'm a huge fan of extensions. We've had some customers show up and be like, I want this extension, but I don't see it listed.
Starting point is 00:26:56 And I'm like, cool, give me a week and we'll have support for it. So extensions are the easiest way to advance Postgres. Under the covers, there's deep, low-level hooks that gets exposed in Postgres. So it's not like you can go randomly change a thing in Postgres without that hook being there. But what's happened, extensions have been there for a number of years, and what's happened is, as we've gone over 10 years,
Starting point is 00:27:20 bit by bit, more hooks, more hooks, more hooks. Citus, at the start of Citus, there wasn't every hook that was needed to do that low-level sharding. Plugable storage came in about two years ago, and everyone was excited about it. Like, great, we're going to have all these different storage backends, like Neon's doing.
Starting point is 00:27:35 These things take time and move slow. There's been two or three different pluggable storage engines that came and kind of are there, and no changes to them in 12 months came and kind of are there and you know no changes to them in 12 months and kind of bit rotted and so it's a changing the storage layer is a large effort like that's a non-trivial effort a extension that is i want an email data type right like that's one of those things that i've thought about for for years we talked about it way back at heroku like why isn't there an email data type that could validate emails?
Starting point is 00:28:06 Right. Like, how do you know if it's valid, right? Like, is a plus okay or a dot? What's the answer, Craig? Why isn't there an email data type? Apparently, the spec for what is a valid email is way more complicated than you would ever think. We thought about writing it, and I was like,
Starting point is 00:28:19 whoa, this is actually, yeah, pluggable storage seems easier than that, maybe. I believe that, actually. Someone looked at the spec and was like, ha ha, that's funny. Well, I actually wrote, I penned a post years ago after years and years of trying to do the best of reg X, you know, to get all email, to have every edge case accounted for. And my post was, there's only one way to validate an email address. And the, the way to do it is you send them an email and you make them click on a thing because there's no actual other way to.
Starting point is 00:28:46 I mean, it's just darn near impossible. It's like Turing or what's it called? NP hard. I don't know. It's ridiculous. Yeah, no, it was funny because like this logically in my simple brain, this makes sense. And then it's like you start to drill into how it actually works. So, you know, foreign data wrappers are an interesting one.
Starting point is 00:29:02 They're kind of their type of extension, but a special class that lets you connect from Postgres to something else. So Postgres is like the front end, but the back end is like could be like an Excel spreadsheet or something crazy. Like the actual place that the data is stored could be anything. I use the Redis one every so often. Like, hey, I just want to join data from Redis to Postgres and it works. There's not an easy way to say, hey, here's how one is safer or, you know, more risky. So if you look at it as a basic data type or some
Starting point is 00:29:32 lookup or some function, right, that's definitely lighter weight, simpler, easier, like safer. If it's doing things to the query planner, that's kind of next level, right? Citus does this. Timescale does this, right? Hey, we're going to rewrite this query and take different paths. Citus and Timescale, I don't know if they play well together. It's been a common, common question for years. And it's like, we both take pretty invasive hooks. Back when I was at Citus, it's like, maybe, fingers crossed, probably not, right? Because of some of the hooks, like which one do you put first? And which one takes priority? And how does that step on toes, right?
Starting point is 00:30:08 When you're changing how code works and say, I'm going to do this instead of that. And then another thing does the same thing. It's a little riskier, right? Not to say you can't run with one of them, but you're starting to change. And it's a little less pure Postgres, right? And you're relying then on that extension developer to say, yeah, our code is as tested and is rigorous and as solid as Postgres code itself, which some are, some it's Wild West.
Starting point is 00:30:35 And then when you get down to the storage engine, that's just next level. So I think that's a little bit of a framework of, you know, and I love the small ones. We were about to add support for one, HypoPG, which is hypothetical indexes. What would happen if I add this index to my database? You want to know the impact on queries ahead of time? Would this work?
Starting point is 00:30:55 Is it a composite index or like you can just add the index, but how do you simulate production on prod and staging and all like all those hard things that we deal with every day in software what if postgres can just hypothetically say yeah this would improve things yeah it's interesting yeah i've always used like the minus small ones i think the the most i guess i would guess lines of code sized extension i've ever used was the post gis where it's like adding the geospatial queries. And it worked as advertised. It ended up being a maintenance burden when it came to like upgrading Postgres and like data stuff.
Starting point is 00:31:33 I ran into troubles because I am very much not a DBA. I'm an application developer who does what he needs to do to keep the site running, you know, and make the queries fast. That one was, it got to be where it was more work than i think was worth it just because of my lack of touch i don't want to necessarily you know harp on the the devs of that particular i think it's a pretty popular extension isn't it the gis stuff massive it's um one of the most popular ones yeah people think of them as the same ecosystem and it's interesting because like you know the post gis folks know the postgres core folks really well and vice versa
Starting point is 00:32:09 but they're kind of two parallel ecosystems like they they interact and talk together but like post gis is its own thing and its own core developers and committers and and it's it's massive it is easily the most advanced massive massive, you know, extension that exists for Postgres. And it definitely had some bumpy years around upgrades. Like I lived through some of those. It's gotten a lot better, but it's its whole own massive ecosystem and a great example of a, you know, huge kind of value. It makes Postgres with PostGIS like the most advanced open source geospatial database. And it might be the most advanced, right?
Starting point is 00:32:47 I think it beats out Oracle. You might could argue like Esri has some stuff that's like very enterprise proprietary. But you look for open source or relational database core kind of geospatial and it pushes it really to that extreme. Is there any opportunities in the extension space to like build a business around postgres i i mean uh situs was acquired by microsoft there's one you know time scale building a big business i don't neon i'm not sure how much it's a pure extension versus i believe it's actually more of kind of forking away and tweaking the storage engine i'd have to go and check it's two.
Starting point is 00:33:25 It's both. We talked with them. It was both. Yeah. I got to pull up here. Oh, actually, I was thinking about that. Something Nikita said. He actually said they're stock-ish.
Starting point is 00:33:39 Are you running a Forka Postgres or is it stock Postgres? So it's stock-ish. I guess it's stock Postgres with a caveat. So what's the caveat? Well, we have to change Postgres in a very surgical matter and specifically where Postgres reads a page from disk. Instead, it needs to read a page from our remote storage by making an RPC call. And when a Postgres writes into disk and sends what is called a wall record, write ahead log record, instead of writing to disk, it needs to send it over the network into our service, into our multi-tenant service. Those changes are not huge, but they're there. We've split those changes into five separate patches that we are submitting upstream.
Starting point is 00:34:23 They have not been accepted yet, but we are working with the community for it to all get upstream. Are you Postgres or are you not Postgres? Because we're stockish and they layer on some of their own extensions internally that they want to go upstream and they've committed
Starting point is 00:34:41 but have not been accepted upstream yet. Yeah, I mean I can have some drinks with them. We can debate how stock is or not. I think they are. They have some core developers and they are working. And so of the people doing that sort of stuff I think they have a good shot of getting it upstream.
Starting point is 00:34:58 But it may not. So the reason they're not stock is they later on... I think some of the big clouds have come in before and been like, hey, we want to commit this to Postgres. And that's not how open source development works. You can't show up and say, I have my way of doing thing, add this. You build credibility from the ground up from, hey, how about the testing and the bug reports and fixing bugs before you say,
Starting point is 00:35:20 here's how I want to change Rails to run on Python. Like what? No. And so I have some good faith that I think they're doing that. But yeah, it's a little bit of patience to actually kind of get to that point. But Timescale and Cite is your two great examples that were on vanilla Postgres and pure extensions. And I think there's opportunities for more. I think we're going to continue to see it.
Starting point is 00:35:42 You know, Postgres doesn't have a great doesn't have a great graphing vector capability. That's an interesting one where it's got time series. It's got time series in native Postgres and timescale. Sharding, you can do with the Postgres FTW natively, or you could do it in Citus with an extension. It doesn't have an amazing graph story. So that's the one area I could see right off more columnar stuff, like columnar compression is great. Instead of kind of a row based kind of sorting, it's columnar, you get good storage compression for certain workloads, really, really amazing when the data warehousing kind of stuff comes in, or you know, you've got a lot of time series data, wouldn't surprise me if there's companies focused on just that.
Starting point is 00:36:24 You mentioned big players coming in with their large patches and saying please accept our code and that's not necessarily how it works how does it work like how would you describe postgres governance or the core team like what's the size who are the people how do they make decisions and how does stuff actually get in is it like out there on github with pull stuff? Or is there a different process? How does it all run? So it is Git, but it's old school Git. Like go read the Postgres mailing list. Like here's a patch submitted via email. And like there, nope, GitHub. I think there's a GitHub mirror, but it's like, no, you're not submitting issues on GitHub. It is old school Linux open source development. And so Postgres has a few commit fests where like, here's a window open
Starting point is 00:37:05 for commits to come in. There's kind of a, it's fascinating because people think of the core team as like what commits and controls Postgres. The core team, I believe it's nine people. It used to be seven. That's more like a steering committee. Like, all right, we're gonna, you know, deal with the code of conduct complaints. And we're going to, like, figure out the conference and, like, defend trademarks and just make sure people abide by that. And then there is a commit bit and a major contributor, minor contributor. Major, minor is a little bit of a legacy thing. I don't think they're pushing that quite as much. Like, you commit a major feature, like range types or JSON.
Starting point is 00:37:43 You kind of earn, hey, you're a major contributor, major feature, right? That was in the release notes. Your commit bit, you earn over time, over years. A few years ago, they gave them out to some people that were really up and comers like Jeff Davis, Neil Conway, I think were really, really early. I think Jeff Davis may have been the youngest to get his commit bit at like 18 or 19. I don't know if it was him or Neil Conway, but young. Jeff Davis back active in the community for a little while. He wasn't. Neil Conway went on to get his PhD and is doing other interesting database things, but not active. And so Postgres is really slow about adding new committers. It's fascinating to watch some people that get their commit bit and get excited and like i'm gonna go ship some features now and commit stuff and it was not as solid it was a little buggy and their next year
Starting point is 00:38:30 was fixing that stuff like there's kind of this unspoken rule of you did this you maintain it you clean it up so the community really watches itself right there's's kind of that peer pressure. You're not committing conflicting pain on the rest of us, right? So commit fests happen every few months. That's an open window where patches are submitted. People sign up in the commit fests app. There's an app. So if you want to start to contribute to Postgres or see how it works, it's fascinating sense of open source development. Go review some patches. Pull them down, build Postgres, test it.
Starting point is 00:39:09 Reviewed the code quality. I can dig up, there's a couple of presentations that were given and we could link and show notes to like, here's how to contribute to Postgres. The best way is just reading the PG SQL hackers mailing list. Like you want to become a, people ask me a lot of times, how do I become like a really senior developer how do i like get good at c how do i become an advanced advanced developer just read
Starting point is 00:39:30 the hackers mailing list it's fascinating how the conversation it's not a cordial i mean it's it's cordial enough but it's not always friendly and like as a beginner you show up there and ask a question like all right where's the the patch to repro this and the sample test case and all that. But it's an amazing quality development that happens right there. So patches get submitted, pulled in during the commit fest. People sign up to review patches. Once enough review happens and people feel good, a committer picks it up and says, all right, I'm going to commit this. Even if they didn't author it, they'll give it a run through. They'll see the reviews of it and they commit it.
Starting point is 00:40:07 So there's a review process essentially community-wise that sort of layers on some desire for it to be Postgres native. Yeah. Anyone can come in and review it. You can sign up. You can hop on the CommitFest app. There's an open CommitFest right now and say, I'm going to help review this patch. It's kind of amazing that something like that works isn't it yeah it
Starting point is 00:40:27 seems so friction it's like it's like absolutely don't want anything stay away like completely autonomous organism of people just like organizing themselves over years and years and years right with a few like key players nine now who are like steering a direction but like so many perhaps conflicting ideas probably argumentation hopefully in the best sense of the word like all pushing this giant thing in a direction together it just seems like it would be so fraught with trouble but you know continues to stably move in a positive from the outside at least direction of improvement. I've had a lot of people ask, like, how can we replicate Postgres? I have no idea. Like the fact that it works, right? It's a
Starting point is 00:41:10 complete anomaly to me. There's not, I mean, the Linux kernel is maybe the only other similar example of that size and code base. And, you know, people talk about open source a lot. They're like open source databases. And Postgres defies that even like most open source a lot and they're like open source databases and postgres defies that even like most open source things are run by one company like there's one set of primary i think rails is a good another counter example of that right like hey large kind of community base but you know system stuff is usually not trivial and so so when people say, oh, there's open source databases, like MySQL. MySQL is primarily developed and maintained by a single company.
Starting point is 00:41:52 And Postgres, the core team cannot be comprised of more than half of one company. You look at the committers, and it's very distributed across... Is that written into the rules there? They say that's the case? I believe that is... No, I don't know if it's in distributed across, you know. Is that like written into the rules there? Like they say that's the case? That's in the, I believe that is, you know, I don't know if it's in the core, I don't know if I've read the core bylaws,
Starting point is 00:42:10 but it is at least a very unspoken rule. So when one recent acquisition happened, the core team grew from seven to nine to add two new people. I see. So like it's, if it's not in the bylaws, it's an unspoken one. And on the committers, it's the same thing.
Starting point is 00:42:27 It's not going to be 50% of the committers are at one company. People view that as unhealthy. And it's open source in its purest form, which I don't know that we see a lot of in the world. But it was started so long ago, back when open source community was smaller and simpler and grew to this i wonder if you could start fresh today not necessarily a database but a large open source thing that could grow into a similar form like you said you wouldn't know how to do it but even
Starting point is 00:42:59 could you do it maybe you can but it seems like it'd be harder today than it was back in the 90s or whatever. I don't know. I'm sure it's possible. I don't know if you started with that goal, right? Like, I, you know, I hope I'm around 25 years and can like go and see, right? Like, are there other examples of this? It's a great question we could wax poetic about and wonder for a while.
Starting point is 00:43:25 Well, let's get back to practical things here for those who are using Postgres or perhaps interested in it. What has been going on? I know 15 was a big release in 22. And surely there's things that are upcoming for the next major version. What's new and interesting, of course, with the disclaimer that it's all about being boring and stable. So it's like asking what's interesting about a boring thing, but we're interested and we know you are. What's on your radar, Craig, that people are working on in the community? Yeah, I mean, we hit on a lot with extensions.
Starting point is 00:43:54 I think extensions are, you know, going forward, we're going to talk about extensions as much as we talk about core Postgres. And I don't think it's a bad thing. I think it's just that line of how much of it goes crazy with Postgres versus is simpler. And I don't think it's a bad thing. I think it's just that line of how much of it goes crazy with Postgres versus is simpler. And I don't think going crazy is bad. I think we'll see a lot of innovation there.
Starting point is 00:44:10 I do think core Postgres keeps just getting better and better. You know, I think it was, I think it was 14. We had like refreshed materialized view. So like if you're using materialized views, like how do you refresh them, right? How do you reload the data? Like I want this snapshot of a materialized view and I do you refresh them right how do you reload the data like i want this snapshot of a materialized view and i want to refresh it it may have been that it was refreshed
Starting point is 00:44:29 concurrently i forget but it's like great this is a nice just simple thing that i had to work around before right logical replication we got a number of years ago now you can actually filter logical replication used to be the whole database now you can can apply like a, I want a logical stream of just these five tables. So way easier to, you know, kind of move data around from an ETL's perspective. To me, that was a huge one. That was like small and, you know, like usability that just when you need it, it's there.
Starting point is 00:45:01 There's a few things on like internal kind of sort performance and compression it's like every postgres release you you're like what's new and it's like just upgrade and you get better performance like that's just a nice thing to do every release now pretty much is just some better performance and the common questions will i be impacted by it will it will i get that performance uh just upgrade it can't be worse right it? Will I get that performance? Just upgrade. It can't be worse. It's really pretty good and stable about that. It can't be worse.
Starting point is 00:45:33 Well, surely there have been at some point some performance regressions, right? Like things have to slip through. It could be worse, right? It doesn't happen very often. Like Postgres is really. No, Jared. No, it can't be. I guess by the time they do a major release, they're ready for it. What's the cadence?
Starting point is 00:45:45 Is it like every set time or is a certain number of features when they decide this is a major release? So we have major releases every year and then there's five supported major versions at a time. Point releases come out every, I believe it's every two months. It might be every quarter. You have to double check that. But every so often for, hey, here's fixes, patches,
Starting point is 00:46:11 you know, that sort of thing. Usually the major release is every fall, like it kind of was a variable time from July to December. Usually now it's pretty close to that October time frame each year. I recommend waiting for the first point release always on a major version. When Postgres 15 came out, we supported it within five hours on Crunchy Bridge on day one. We have people that want it and that want to run Wild Wild West. Like, let's go. I want the new features. I'm ready for it. I recommend for that first patch release that's usually a couple months later. Postgres is really solid. It's good. It's not terrible to run, but you may find a bug in that first point release. So if you really want to care about stability even more, that waiting two, three months is not a bad thing to do.
Starting point is 00:46:53 Let's see. I'm trying to think of the other ones. A lot is performance. JSON stuff got a little bit of improvements. It continues to get just a little more bit by bit, which is nice. Some of the, just the functions around querying JSON, multi-range types and that sort of thing was pretty great. I'm looking at a list here, SQL merge command. That's not
Starting point is 00:47:13 something I'm familiar with. That was the top thing on 15. What is that? So it's a thing that's, I would not use it. I would actually use other things in Postgres. Like, it's so funny. Like, the broad set of user bases, like, look, it's finally getting merged. And it's like, here's other ways to work around and do this. What does merge do? Like merging two records? Yeah, it's a SQL syntax thing. So it's specific to, I believe you would probably want to like, most people would recommend
Starting point is 00:47:39 like a lateral join instead, or like traditional Postgres upcert. I think it hit the front page of Hacker News and every Postgres developer was like, please don't use this. Like use this other path of it. How do I get in then? Shouldn't the hive mind have rooted that one out before I got in? It's in this, I believe it's in the SQL standard. So it's like pushing like, okay, to be.
Starting point is 00:48:01 It's a compatibility thing. SQL standard and complete. And it was with some caveats. It's, I think it's one of those things. I should go back and see how much contention there was among core developers and committers of like, should this actually be in or not? It took a few years to make it in.
Starting point is 00:48:16 So it wasn't one of those runaway things, but it's like, cool, now we have complete compatibility with MySQL from that SQL perspective. Gotcha. It's kind of like the money data type in Postgres. It's in there, but you should never use it. Like, it assumes so many things about money and currency that just don't make sense that it's like, never use the money data type.
Starting point is 00:48:36 So how should you store currency inside of Postgres? What's the best practice? With a numeric data type. Okay. So why doesn't the money type just get removed? No code is the best code, right? I mean, isn't that the old adage? Yeah, because applications rely on it.
Starting point is 00:48:51 So that's why, I mean, that's why the bar is so high on Postgres, right? And people complain, it's like, go faster, add this feature. It's okay, you can change it later. And the community is great about this. It's like, you know, Postgres has managed to deprecate things. Like it really has, but it's like you know postgres has managed to deprecate things like it really has but it's it's a slow process and they want to make sure they're not subbing people's toes and give warnings and yeah is the money feature an old feature yeah it's been there for yes okay so it's dated it
Starting point is 00:49:17 assumed a lot of stuff yeah is there a book or a resource similar to javascript the good parts that somebody has written like Postgres, the good parts, because it sounds like there's areas, Greg, that you'd say, let's avoid these sections of Postgres. But here's the good stuff. The art of PostgresQL. It's by a good friend, Dimitri Fontaine. Yeah, it's and it's targeting app developers, too. It's not the DBA stuff. It touches on, here's how to do this in SQL, right? Things like common table expressions and window functions, which are scary, I think,
Starting point is 00:49:50 app developers, when you're like, whoa, what are we doing now in the database writing these sort of queries? When I talk to a lot of developers, if I'm giving a talk at a conference, ask them to raise their hand of who likes writing SQL? And I'll see, if there's 100 people, I'll like five hands and i'll follow that up with like who likes
Starting point is 00:50:09 reading other people's sequel and it's like no one because everyone writes like just bad sequel and it's like this string of unreadable mess but with like common table expressions you can construct really readable sequel where you're like, oh, this is like logical. Like I would write Ruby code and I can follow it. And so I think his book is really good for both the application developer stuff. Here's how to use JSON. Here's how to use range types. Here's how to like, you know, take advantage of this stuff. But also here's how to take advantage of SQL without it being too scary.
Starting point is 00:50:42 Love it. We will link that one up for those interested. The art of PostgresQL. For sure. It seems like the path to committing, though, is pretty narrow. That's why I'm like, well, just get rid of some of these features. If it's so narrow to get a feature in, you know, it seems like, you know, you should be quick to bounce
Starting point is 00:50:59 as slow as you're to take, so. Maybe. I think it's, you know, Postgres, especially with the rise in popularity, people are like, well, why can't Core just do, so maybe i think it's you know postgres especially with the rising popularity people like well why can't core just i mean we mentioned you know the postgres ish of neon right and well they're they're trying to build like it's easy to say why aren't they postgres no you can just be postgres and it's like but they've got to upstream this and they've got to wait for a year or two or three to keep that quality up. That quality. I think it was the geo stuff though.
Starting point is 00:51:28 It was mainly around the geo. Like the other stuff, it seemed like, I'm trying to recall the conversation though. I'm not trying to defend, I'm just trying to clarify. I think their intention is to be as Postgres as possible. Now, obviously presents as and Postgres compatible sounds very similar to that, but it sounds like they're trying to be Postgres and they want that to be given to the community. I think so much so that Jared, you're like, can we run Neon on our own? And Nikita's like, yeah, you can. You can take our patches
Starting point is 00:51:56 and recompile Postgres yourself and get to the same Neon we're at today and do it yourself. That's what I recall from that conversation. I think it's a big step forward from you know i would describe neon as an open source aurora i think that's fair you talk to amazon uh i think i think you you could ask nikita and be like that's probably a fair assessment right and you go talk to amazon saying well why haven't you open sourced aurora and they're like well it has all these amazon specific specific things and it wouldn't be good to the community. So I think this is definitely a step in the right direction.
Starting point is 00:52:28 But Postgres at its core, you put that in there and it breaks something or has this edge case or and then the whole set of community, a lot of volunteer on their nights and weekends developers, some of them
Starting point is 00:52:44 are paid full time for this, are now supporting this thing for a company that is like, you know, supports their mission. So at the core, right, you want a database to just work and not lose your data. And Postgres holds that bar really high. Not every database actually does. Some play fast and loose there. So it's a thing that if you want that, you've got to take that trade off of it's going slow, and things get deprecated slowly, because they made it in because we thought the quality was there. It's a thing that if you want that, you've got to take that trade off of it's going slow and things get deprecated slowly because they made it in because we thought the quality was there. It's a little slow and steady,
Starting point is 00:53:11 but it's the tortoise that's won the race so far. So what Neon is trying to do, take Postgres serverless, has two facets. You have the separation of the data storage from the compute layer, which they seem to have accomplished. Then you have the replication or the distribution of the database
Starting point is 00:53:32 all around the world to these different edge nodes. And it seems that there's a part of the industry that's going that direction. It's the edge of the industry. It seems like it's being very much bleeding edge or maybe being pushed by people who have reasons for that. But I wonder if the core team from your interactions or anything like, is there discussion of the Postgres developers of like, we're also headed in this similar direction or is that not something that they're interested
Starting point is 00:54:06 in building into Postgres? These kinds of, it's kind of re-architecting to a certain extent, which is why Neon has to patch and extend and do a lot of things in order to get it done. But as Postgres core, are they moving that way or are they just moving down the road of slow and steady performance improvements? Everything's extensions.
Starting point is 00:54:24 I think more of the latter. And I would say Postgres probably does better of all that shiny stuff than people realize. I've got a customer that looked at, they were on Heroku and thinking, okay, I'm thinking about what I do after Heroku. And ran this app that benchmarked on all these providers. And I'll send the link so that we can post it to the show notes. This is their benchmark. And Crunchy has geo-replicas today
Starting point is 00:54:49 and connected their Fly.io app, which Fly is all about run the app on the edge everywhere. And this is vanilla Postgres. There is no special proprietary anything. Vanilla Postgres, just running geo-replicas, we're faster than like fly native things so like Kurt's over there like you want to manage postgres run on crunchy bridge and like guess what postgres is really good and it doesn't get talked about because it is
Starting point is 00:55:16 boring and stodgy and not shiny new we did this advanced thing but guess what like vanilla postgres geo replicated reallyplicated, really fast. It works really well. I was kind of surprised, but I was surprised that we beat fly native ones. Like, wait, huh? How are we faster than fly on, like, when we're not even on fly? This is an AWS instance, you know, geo-replicated, and
Starting point is 00:55:37 AWS or Azure or GCP not on fly hardware. That it's actually a better performance latency time. Well, that's cool. Well, the one difference, I think, is that it's actually a better performance latency time well that's cool well the one difference i think is probably it's not managed and it's not serverless right there's there's two kind of key parts there which is part of the the neon story because you got to manage yourself and it doesn't spin down to zero yeah i think that spin down to zero is is a fair one and you know that's a great question i To me, I usually think of serverless is
Starting point is 00:56:06 more of a business thing. Like, are you do you actually care that it spins out to zero? Or you just don't want to pay for it when it's not in use? Right? I think, you know, you even look at that spin down to zero and look at an Aurora, there is no like zero cost Aurora anymore. It's now a minimum like, hey, we'll idle it. But still, there's a minimum, you we'll idle it but still there's a minimum you know budget account for your database yeah surely yeah i mean there's a business challenge there too because i remember one of jared's questions was like okay so you're footing the bill to that spend on the zero you're going to hold that data for how long because that zero may never come back to a one because the customer left or they no longer are interested in neon and you're sitting here with this data on a
Starting point is 00:56:43 disc and you're you know and he talked about the tiers of data and stuff like that. So there's definitely a business challenge there when it comes to affording that long term and enabling that forever zero feature, that spin on zero feature. It's an interesting world. Yeah, Heroku, I mean, look at Heroku as the perfect example of this. And, you know, the articles that are written of like, you know, this is why we can't have good things and is this the end of free for the internet for developers? I don't know. I think there's
Starting point is 00:57:11 ways to do that sustainably. For us, if you use your database for less than $5 a month, we don't bill you. I want it to be accessible to students and hobby developers. Use it, idle it. And you're just paying for the storage there. And we have people that every month just develop and work away and learn and that sort of thing.
Starting point is 00:57:33 But at the end of the day, how do you do that long-term, right? Like I'm sure they're going to grow and eventually someone's going to come in and say, oh, look, look at this line item here that we're footing the bill for. How do we reconcile that? Precisely.
Starting point is 00:57:45 Yeah, does that turn into true business and i and even with like heroku which i don't want to get too deep into that that set of weeds there but like you got to imagine the fraud waste and abuse in that free tier like it's a great enabler and i'm cool with that i love that but as a business that's trying to sustain and grow i'm sure sales Salesforce is a very large company, et cetera, whatever you want to attach to that. But there's a lot of security vulnerability in that free tier. There's a lot of fraud, abuse in that free tier that just isn't their core business.
Starting point is 00:58:16 Nothing that's more their argument than the free tier at large's argument because there's so many customers that could be a paying customer in that free tier if you just farm for them and educate them. But they've got to be real customers, real possibilities, not those there to just simply abuse the system. This is over 10 years ago, but I was the first product manager that handled fraud and abuse at Roku way back. So it wasn't a new thing. It's not a thing that started with yeah blockchain it
Starting point is 00:58:46 was uh the very first case uh yeah i mean i don't want to go down too deep too far down that rabbit hole because we don't go too deep but sure go one more we'll allow it we can talk about barbecue for an hour we can talk about heroku for an hour oh yeah i do actually love postgres but those things are fun too but um yeah the very first case was in korea you had to have a reservation to buy an iphone and so this app was spinning up connecting out to apple and making all the reservations and then reselling them so not even reselling an iphone like changing the name of the reservation and selling it out to people. Now, we were playing chicken and mouse with this. So like we would, they just kept pushing up the same slug, right?
Starting point is 00:59:30 So we could just look at the Git shot and be like, oh, it's okay. Then they started adjusting the Git shot of like, oh, I'll just add an empty commit. So they can't easily find it. We actually found this person. I think enough time has elapsed now their git commit had their name and like googled them had their linkedin had their like i like their name their where they were we coordinated with apple sent it over to them and they're like okay thank you we'll take care of this and like we know like it just went away after that don't know what they did but that was the
Starting point is 01:00:02 very first case of like what is going on why is all this traffic going to apple what what purpose do you have to make a reservation for an iphone like i never knew this was how in demand they were and how it worked there and so tim cook made that guy an offer he couldn't refuse it's true good one jared that or broke some kneecaps i don't know which i don't like it's a i'm gonna say he woke up with a horse head in his bed or something, right? Like come work for us or, or,
Starting point is 01:00:28 you know, or the other option, but it's nothing new. Run our reservations team. Yeah. I'm sure it's not any better with, you know, coin mining and other things like it.
Starting point is 01:00:37 Yeah. Well, there's another factor there, which we had a decade of hyper growth, you know, zero percent interest rate based investment. And the free tier for a startup is a epic win for growth. I mean, it's a massive way to get lots of people.
Starting point is 01:00:56 I think, was it Jason Bosco from TypeSense, Adam, that we talked to about how they didn't have a free for open source or a free for whatever offering with their cloud and how that is one way of going about getting a whole bunch of users that you could just buy them because you have investment money
Starting point is 01:01:14 and those times are changing. I think that's more of the, I don't know if cynical is the right word, but maybe the hairier side of what those things are. Of course, we want to always just be like, we love developers, we love open source, and we want to see people tinker and have fun, and here it is.
Starting point is 01:01:31 And I do believe that's sincere in many cases. It is also a hyper-growth strategy that's afforded by large investments and continues to run based on larger investments which eventually run out or need their money back. And so, like you said, eventually Salesforce is like,
Starting point is 01:01:47 this doesn't make sense for Heroku anymore. And so we're not going to do it. I think it's a little different there. And I like to think actually Crunchy has some of the same philosophy and ethos as the early Heroku. Like it's not free as a business piece, right? We want you to come to, I want you to learn Postgres. I want you to get experience with Postgres.
Starting point is 01:02:07 I want you to be able to build your side project and it not cost you $1,000 on the weekends. Come bootstrap a thing, right? But when you're up and running in production, if you're getting value out of it, you should pay for it, right? And Heroku very much was that, hey, developers should learn here. Like the amount of like Rails girls camps that ran there and PyLadies and all that sort of thing. I think some of that ethos got lost.
Starting point is 01:02:32 I don't know if you guys saw, we shipped Postgres in the browser, but it's a whole playground. Instead of us running databases and connecting to them, it's running locally in your browser. You want to learn. You don't have to install postgres and we have like apparently now like some university courses like basing stuff on that like oh cool like you don't have to installing rails is still hard installing postgres is not always trivial so how do we make it easy for people to learn get started and then when you get value yeah go pay for it right totally yeah that postgres in the browser thing is so cool. Yeah.
Starting point is 01:03:07 What was involved in getting that in the browser? What's the backstory? That was an engineer that showed up on a Monday and said, I did a crazy thing this weekend. Like, I've been playing with Wasm and I just put Postgres in. He's like, yeah, I know it's crazy. It's a stupid idea.
Starting point is 01:03:21 I'm like, actually, I wonder, can we do this? And so our whole playground, there's a Notion database I'm like, actually, I wonder, can we do this? And so our whole playground, there's a notion database we have that we just go and add tutorials. So it's bootstrapped by like markdown and then a SQL file. And that loads up a whole new tutorial. So we have like marketing folks that like don't have to deploy any app change to just like edit a mark a, you know, notion file. And now we've got like new tutorials for people pretty ad hoc. It's been amazing that we've got a ton of internal folks that are like, oh yeah, I wrote this blog post, and here's a tutorial that you can follow step by step, pretty marked down with images and etc., and it's just
Starting point is 01:03:56 bootstrapped by your own SQL file. Then we have an Easter egg in there as well, where you can just append to the URL to Playground, like SQL equals, and then give it a URL and it'll load your own SQL file. So if you wanted like internal training with sample data, you can just, it'll boot up the browser instance, download that SQL file, like create tables, load up data, all just right there for you.
Starting point is 01:04:19 That's cool, man. So what lives in Notion specifically? So if you go to our playground, you'll see like the title of a tutorial, the description, the SQL, and then the markdown. And that's like, so we're hitting the Notion API to basically render all that. Think of Notion as our CMS for the playground.
Starting point is 01:04:36 We use Notion internally to essentially run our entire schedule. We do a bunch of interesting things. I'm just curious what you put in there. So it essentially gets consumed by your website via the API. It's not actually Notion, but what is there for each tutorial lives in Notion probably as its own page or document or whatever. Yeah, exactly. You also totally do a blog post about that. I'm super curious because our events page for our website is powered by Notion and all that. So now I'm curious
Starting point is 01:05:06 to see. I mean, sounds like we're using some things in similar ways. It's a love-hate relationship with Notion. I like it. It's very heavy. I did say one time, Jared, it was super fast and it's gotten slower. So sad. But it's a love-hate relationship.
Starting point is 01:05:22 I never experienced that. He's like, Notion's super fast. I'm like, it is? Is it? Maybe it was temporary. But still, yeah, an amazing tool. I love it. Love Notion. It's just, it's kind of bulky.
Starting point is 01:05:33 But in terms of giving access to people who are not, they don't have to query a SQL or Postgres database in order to add tutorials to the Postgres playground. It's super cool for accessibility to your guys' teams. I love wins like that. We used to use Trello in a similar way as a CMS for our newsletters. And so just, I think people,
Starting point is 01:05:53 I think Notion has become kind of the new build your own integrations that team members can work on kind of thing. People are starting to whip out some code and glue together some really interesting solutions to their problems. it is slow yeah i agree with that i agree with both points right there's a lot in there is there too much in there is it that curated clean cut product i'm not sure anymore but yeah you can do some cool stuff with it to create that kind of you know cms flexibility accessibility stuff all right craig anything left unasked, untold?
Starting point is 01:06:29 You dropped this cool playground on us, which I had heard about, but didn't realize it was you and your team that put it together. That's a super cool nugget here at the end. Anything else in the Postgres world? We know there's Postgres Weekly for those who want to keep up, which you're also involved in. That's a Peter Cooper joint. What else to say before we call it a show? Probably the final thing is just
Starting point is 01:06:45 JSON, JSONB, and Postgres is awesome. It's hard not to mention. We've made it an hour and not talked about JSONB, which everyone is like, it's awesome, and I use it. Man, maybe everyone knows it and is aware, but I still see people every so often and they're like, wait, Postgres can do that?
Starting point is 01:07:00 And it's full. JSON came in, which was just cheating. It was just text validation on JSON and threw it into a text file, text field. And then JSON B came in. One of my colleagues says B stands for better. So I continually, you know, steal that from him. It's binary JSON on disk, rich indexing, searching. It's really, really great. So, I mean, I think that, you know, you think of postgres is this stodgy relational database we're i think past that but if you weren't aware that we're past that like the json b stuff in postgres i think highlights it and we're coming up on on 10 years of json
Starting point is 01:07:36 and postgres so um i'll leave with that it's like it really is a pretty sweet database we talked a lot about extensions like when you think i need need a Postgres-like thing, no, maybe you just need Postgres. Just Postgres is pretty cool by itself. There you go. Well, JSON beat it up. I remember when Douglas Crockford said that JSON would never have a version. Is that kind of like a slap in the face? Is he involved in JSON? I don't know. What's the story there? No, not at all. I mean, it's JSON, but it's, yeah, it's... But it's better. Exactly.
Starting point is 01:08:08 Exactly. And instead of a JSON2.io, it's just JSONB, so it's the final one. It's the better one. It's the better one. There's no JSONC, Adam. There's not going to be a JSONC. It's just... No JSONZ or Zed. Or JSON++. Our only option now is like JSONB++.
Starting point is 01:08:23 That's right. There you go. That's the way to do it. It's better. Craig, thanks for coming on last minute, too. Appreciate the... Appreciate catching up. I appreciate being here. I wasn't here for two years ago when you were here, so hopefully I'm here two years from now
Starting point is 01:08:37 when you come back and we talk about... I think two years ago, you're like, I'm not really a Postgres guy. I don't really do that. I don't have opinions on it. I think you were like... Honestly, I don't really do that. I don't have opinions on it. I think you were like... Honestly, I don't know what happened. It was October when that was recorded.
Starting point is 01:08:49 It wasn't like it was June, Jared, when I would take vacation or something like that. I'm trying to consider why I wouldn't have been available for that call. I've met that guy in the beer line, and I don't want to talk to him. Yeah, I don't like that guy. I met him 10 years ago. He's got a terrible barbecue.
Starting point is 01:09:05 Okay, so we do have to come back. We have a show called Backstage Craig, and we'd love to have you back. Jared, you can join to sniff or partake, not to cook, and we could talk about rubs, timing, temperature, you know. That sounds awesome. Let's do it. How posh you may or may not be.
Starting point is 01:09:25 Is it mill scale for life or is it something else? You know, what do you do? Did you have yours custom built? Do you build them custom yourself? Of course, I'm talking about the steel around a barbecue, which is the barbecue itself
Starting point is 01:09:36 and your process. But let's do that on backstage. Thank you for all your passion in Postgres. Thank you for all the work you're doing at Crunchy Data and the work you're putting in there and for coming on the show.
Starting point is 01:09:46 It's been a pleasure. Yeah. Thanks, folks. I'm glad it worked out last minute. I was like, I think it was last week, like I was on the Django chat, you know, at the end of the year. I'm like, oh, this is fun.
Starting point is 01:09:56 I should actually do some more of these. So it was a nice, you know, opportunity. I'm going to go retrieve a kid from school. Do it. Awesome. Thanks, Craig. Thanks, folks. That Do it. Awesome. Thanks, Greg. Thanks, folks. That's it. Okay. So just Postgres, is it enough? We think it is. Just Postgres,
Starting point is 01:10:14 not Postgres compatible, not presents as Postgres. Not that those are bad things. It's just not Postgres. It's like saying open source, but being BSL. It's not open source. So don't call it open source. A big thank you to our friends and partners Fastly and Fly. And of course, thank you Breakmaster Cylinder. Those beats are banging. We love them. Keep them coming.
Starting point is 01:10:36 Okay, this show's done. Thank you for tuning in. We will see you on Monday. day Thank you.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.