EPISODE 17 - The Rooftop Waitlist
56 min 2025-05-22
The Rooftop Waitlist

Golf-ball-sized hail, last-minute flight changes, and an endless RSVP scramble set the scene as Kalen and David riff on Shopify Editions, the great review-purge, Sidekick mutations, theme “non-upgrades,” and a DIY cart. David wrangles BigQuery with bulk mutations while Kalen shows off ShopWorker on Cloudflare. Add in GraphQL linters, Flow hacks, and the eternal email-template headache—pure dev-therapy gold.

Chapters

[00:00:00] Golf-Ball Hail & Garage Panic
[00:03:00] Editions Event FOMO Begins
[00:07:45] Party Invites, Runs & Rooftops
[00:10:45] Review-Purge Heartbreak
[00:14:00] Sidekick Queries + Theme Upgrade Rants
[00:18:00] SaaS Cart vs Own-Your-Code
[00:22:00] Wishlist King Rebrand Saga
[00:24:45] David’s BigQuery Cleanup Odyssey
[00:31:00] ShopWorker: Cloudflare Automations
[00:38:30] Flow vs Logs vs Rate Limits
[00:43:00] "Drink Your Own Champagne" Rant
[00:45:30] GraphQL Linter & MCP Mysteries
[00:50:00] Claude-Powered Code Reviews
[00:54:00] Liquid Email Template Nightmares
[00:56:30] Travel Logistics & Event Wrap-Up

Transcript

[00:01:18] Kalen Jordan: What's up broski,
[00:01:20] David: What is up?
[00:01:22] Kalen Jordan: dude? So you're like, yeah, there's gonna be a hailstorm. Might lose power. 26 minutes later you're like, it's sunny outside. We're good to go.
[00:01:33] David: Yeah. I feel like if I told someone it hailed, they would tell me I was lying. 'cause it's like, it's all gone now. But there were some golf balls coming out.
[00:01:41] Kalen Jordan: Are you serious?
[00:01:42] David: My cats were so scared.
[00:01:45] For sure I was gonna lose my, I have a Bradford pear tree and those are like notorious for crashing,
[00:01:51] Kalen Jordan: right.
[00:01:52] David: it's still hanging in there.
[00:01:54] Kalen Jordan: Nice. so like, your cars don't get, your windshields don't get broken in When? , When you get golf ball. S sized. Ha.
[00:02:03] David: I was very scared to open the garage door and look. But yeah, it was fine. Took it like a champ.
[00:02:08] Kalen Jordan: Nice dude.
[00:02:09] David: Volkswagen at Outlet Atlas. They've been engineered by the Germans to resist hail damage, I guess.
[00:02:17] Kalen Jordan: Can't beat that 1980s German dude. Nice. That's funny.
[00:02:26] David: but you, you haven't had much hail lately.
[00:02:28] Kalen Jordan: Oh dude. We're finally, it's starting to get hot, actually. It's
[00:02:31] David: Lately, yeah.
[00:02:33] Kalen Jordan: nineties, so that'll
[00:02:34] David: I'm ready.
[00:02:35] Kalen Jordan: we'll be complaining about. Yeah, it was like, nice, like seventies, sunny spring weather for like three days and then hail, and then Nice, for two days and then hail, and then
[00:02:48] David: Oh,
[00:02:48] Kalen Jordan: then hail. And then,
[00:02:49] David: the flip flopping.
[00:02:51] Kalen Jordan: And then it was like, no hail, but it's in the nineties now, so
[00:02:57] David: Have fun with that,
[00:02:58] Kalen Jordan: Yeah, it's like good luck. It's like how the guys guys are with the review, with the review kills. Hey, good luck.
[00:03:06] David: quite the segue.
[00:03:14] Kalen Jordan: Okay. First, before we get into that dude, 'cause I just pulled up this list of events, shout out to Jordan, Piscal app slash events. He put together, a list of all the different events at at additions.
[00:03:31] David: Oh.
[00:03:32] Kalen Jordan: And dude, there's just way too much going on, dude. It's kind of depressing because everything is like spa, request access, like you're
[00:03:42] David: Uh, how do you spell pen?
[00:03:46] Kalen Jordan: P-P-I-M-S-I-C-A-L.
[00:03:50] David: That's what I thought.
[00:03:51] Kalen Jordan: Piscal app for all your needs. Coupon code, uh, coupon, coupon code, hail.
[00:04:03] David: Nice. Oh, I like this. Well,
[00:04:06] Kalen Jordan: it's cool he put this all together. 'cause I, I knew there was a bunch of stuff going on that I'd want to at least sort of, kind of figure out, but he put it all in here. So there's a frigging tournament, which is, have you heard of Padel?
[00:04:20] P-A-D-E-L Paddle, however the
[00:04:22] David: no.
[00:04:22] Kalen Jordan: say it. , It's kinda like pickleball, but it's like the ball bounces off the walls. It's kinda like, I guess it's kinda like pickleball
[00:04:29] David: Oh.
[00:04:29] Kalen Jordan: racketball combined, type of a thing. And I've never played it before, but apparently it's pretty, I. I'm Bothered that they didn't do a pickleball thing instead.
[00:04:38] 'cause I
[00:04:39] David: Yeah,
[00:04:40] Kalen Jordan: it dude.
[00:04:41] David: they should have consulted you.
[00:04:42] Kalen Jordan: Yeah, I would, I would've destroyed. Would've absolutely crushed. but, and then I don't know, dude, there's so much stuff. There's an apps and acquisitions, loyalty lion partner dinner. If you look at the picture on this loyalty lion partner dinner.
[00:05:04] Dude, this is the fanciest room I've ever seen in my entire life.
[00:05:10] David: Wow.
[00:05:10] Kalen Jordan: You see that?
[00:05:11] David: Yeah.
[00:05:12] Kalen Jordan: You're like, I've seen fancier than that dude.
[00:05:15] David: No, I'm not like a, I'm not a dinner person.
[00:05:18] Kalen Jordan: I would be uncomfortable, especially being in such a
[00:05:21] David: Yeah.
[00:05:21] Kalen Jordan: dinner that was
[00:05:22] David: Like, do I need to like sit up straight the whole time? Or
[00:05:25] Kalen Jordan: but I'm just saying it,
[00:05:27] David: how many forks do we need?
[00:05:29] Kalen Jordan: yeah, what's, what's the fork strategy here? Can somebody, can somebody help me out? But still, it's just like, you know, and oh, and then an exclusive rooftop additions pre-party. I was like, that looks rad. But it's like, exclusive for, I think it's like for Shopify, shop of Folk, which I
[00:05:54] David: Shop a folk.
[00:05:55] Kalen Jordan: just bothers me, Shopify employees. And,
[00:05:58] David: out there though.
[00:06:01] Kalen Jordan: it's out there. You can't deny it. But yeah, I have to very consciously, you know, decide and commit to never saying it. But, that looks cool. But I don't, think, I mean, you'd have, I don't know how the hell you get into that one. That one looks kind of fancy.
[00:06:15] David: It's all part of the game. You gotta figure it out.
[00:06:17] Kalen Jordan: Yeah, let's figure that out. Let's, , see if we can get into that. Then there's , the Judge me party. Did you slide into that yet?
[00:06:24] David: I didn't, I was not able to slide in. And also I was not aware of this list and so I just switched my flight to be on the 29th. So I'm coming in on Thursday,
[00:06:37] Kalen Jordan: Thursday, dude. You're a mad man.
[00:06:40] David: but it looks like there's some stuff happening on Thursday also.
[00:06:43] Kalen Jordan: oh yeah. There's stuff all, there's all sorts of
[00:06:46] David: Uh, it's all running though. I'm not a runner.
[00:06:49] Kalen Jordan: there's, two runs, dude. There's two runs. There's SDA, Shopify Dev Alliance is doing a run, and then, uh, TFI Digital, or that they're doing a run.
[00:06:59] David: Dang. I gotta get my finger on the pulse of this for next year. Early.
[00:07:04] Kalen Jordan: it's, this is just out of control. There's this yoga thing in the morning. Honestly, I might even try to check that out.
[00:07:09] David: Yeah, yoga sounds good.
[00:07:12] Kalen Jordan: Dude, I, I, I love a little bit of yoga. I haven't done it in a long time, but, anyways oh, there's an e-commerce corral. Uh, wait, what, what time is that?
[00:07:21] That's eight. Okay. So May 29th, which is Thursday
[00:07:30] David: Uh,
[00:07:30] Kalen Jordan: additions.
[00:07:31] David: night additions thing, and then
[00:07:34] Kalen Jordan: the
[00:07:34] David: something afterwards. Nice.
[00:07:36] Kalen Jordan: corral is, is something afterwards. I need to see if I can get, get into that one.
[00:07:41] David: Yeah, I gotta try and slide into that too.
[00:07:43] Kalen Jordan: That looks pretty cool. Yeah, let me join that waiting list. All right.
[00:07:49] David: Let's see.
[00:07:50] Kalen Jordan: dude, this is stressing me out a little bit. But I
[00:07:57] David: Uh, join waiting list. Here we go.
[00:08:01] Kalen Jordan: Wait. And then there's another Pade thing on the 30th which is crazy. Okay. Anyways, that's enough about that, dude. We're gonna go, we're gonna have a
[00:08:11] David: It's happening. It's coming up couple weeks.
[00:08:15] Kalen Jordan: I was talking to my friend and I was like, Hey, he's, more of a business guy and, I was like, Hey, are you gonna, go to additions? And I haven't seen him in a while. You know, I used to hang out like I was thinking about him. 'cause like, I always, I'd have fun hanging out with him at, uh, like Magento events and he's
[00:08:31] David: Mm-hmm.
[00:08:31] Kalen Jordan: he's like, well, my, my son has a graduation, so I don't know why I can make it. I was like, he'll live just.
[00:08:39] David: That's not that important.
[00:08:45] Kalen Jordan: But, yeah, dude, back to the review. Review, getting review
[00:08:50] David: Review again and lots of again, ands lately.
[00:08:53] Kalen Jordan: Yeah. So, some people are like, Hey, you know, I have all these reviews, these like legit reviews, I worked hard for, blah, you know, and they're upset. And then other people are like, well, like all the apps I've seen have gone up in score, you know, so your app should be going up in score and I don't know, honestly, I'm kind of over it.
[00:09:11] I'm kind of even done talking about it 'cause I've been tweeting about it like an idiot all day.
[00:09:15] David: Well, it, it is interesting seeing everyone talk about like how many of their reviews got removed and, and I wonder what the criteria was for removing reviews.
[00:09:24] Kalen Jordan: Yeah.
[00:09:25] David: said something about if you, got the review while your app was free and now it's not free, , that seems like.
[00:09:33] Something interesting. And then I saw, uh, Dave Lazar, I think is how you say his name, hunky Bill. He said something like, people are mad about getting reviews removed after they helped the merchant, but maybe their shouldn't have needed help or something like that. He's always got some, some little quips.
[00:09:54] Kalen Jordan: Yeah. he does. I mean, and to be honest, I think it's like, and you're an app developer, you put so much blood, sweat, and tears into those things that
[00:10:04] David: Sure.
[00:10:04] Kalen Jordan: It's so easy for everybody else to be like, ah, you know, kind of be hand wavy about it. But I mean, I've taken a couple very small stabs at a public app, and it's just, it's so hard.
[00:10:16] David: Rough out there. I bet.
[00:10:17] Kalen Jordan: yeah. So like I think you'd be heartbroken, like if you're,
[00:10:21] David: Totally.
[00:10:21] Kalen Jordan: unless you're just like, sailing through life because your app is so big that it just doesn't matter. Like you're just,
[00:10:29] David: Mm-hmm.
[00:10:29] Kalen Jordan: affect you at all. And you don't even do development anymore.
[00:10:32] You just like ride on boats and like watch your revenue go up, you know, like.
[00:10:41] David: That sounds like the ideal, but I don't know how many people are actually doing that.
[00:10:45] Kalen Jordan: but I think anybody that's day to day, like struggling with their app, like it's, it's, it's just a dagger through the heart, dude.
[00:10:52] David: Totally. There's a lot of independent developers out there who are, you know, like they rely on this stuff and so
[00:10:59] Kalen Jordan: It seems like, I don't know what the hell their process was, you know, like just it into a prompt and just let it rip. But, um, like,
[00:11:11] David: I am sure they'll get some questions about it in a couple weeks.
[00:11:13] Kalen Jordan: But I feel like, even if you had, you know, a handful of like, developers that were in your, like council, like remember Magento would have like little councils of people that they'd run stuff by or whatever.
[00:11:26] David: Mm-hmm.
[00:11:27] Kalen Jordan: Like if they had something like that and then they just like pre-flight ran them by, were like, Hey, here's the like reviews that are gonna be deleted.
[00:11:36] Like, do you see any red flags? And then, they'd be like, well, yeah, like half of these are really me, you know, legit meaningful reviews. I
[00:11:44] David: Yeah.
[00:11:45] Kalen Jordan: they didn't, I'm sure they had some sort of a thorough process. They, they must have,
[00:11:50] David: Totally. Yeah. That's why I would like, I, I don't know if we'll ever know, but it would be nice to know what the criteria was.
[00:11:55] Kalen Jordan: Yeah. I, I mean, I was just thinking, 'cause like there's some definitely legit reviews that were removed, but maybe that review was legit, but maybe that reviewer did some other BS review and because of
[00:12:07] David: Mm.
[00:12:07] Kalen Jordan: their whole account got flagged or something like that.
[00:12:10] David: Yeah. I'm wondering if there's also something like the store that left the review no longer has the app installed or something like that.
[00:12:18] Kalen Jordan: Yeah. Oh
[00:12:20] David: That would be weird.
[00:12:21] Kalen Jordan: That's a good point. I haven't seen mention that specifically. I've seen a couple people mention that the store was still active. They're like, Hey, the store's still active. It's a real merchant, and they deleted the review.
[00:12:31] David: Oh, wow. Okay.
[00:12:32] Kalen Jordan: But active as a store, but like, not necessarily has the app still installed, but even still, I mean, if you uninstall an app after two years and you know, you used it for two, like, that should still be valid, I think.
[00:12:46] David: True. Yeah.
[00:12:47] Kalen Jordan: it's funny 'cause everybody's ranting about like all this crappy review stuff and the ransom reviews and it seems like they're taking that serious and trying to improve the, put some guardrails in place. It's just weird that it like, shook out like this.
[00:13:02] David: Yeah, I agree. Like Shopify's gotta do some sort of stuff to make sure the app store doesn't feel like junk. And so I trust that they're trying to do something that's in the best interest of merchants or people who are using the app store.
[00:13:17] Kalen Jordan: Yeah,
[00:13:18] David: But I mean, it, it's obvious that it was abrupt and not everyone was happy about it.
[00:13:24] Kalen Jordan: yeah. Yeah.. Sidekick, is coming along. It,
[00:13:29] David: Is it.
[00:13:30] Kalen Jordan: like. Yeah. 'cause like I remember I had messed around with it a little bit at first and I was like, okay, whatever. It seem that interesting and I think they, they hooked it into the MCP that, it can do queries now. And I tried testing it out. Like I tried asking it about like like, Hey, tell me my revenue the last 30 days. And it did, it did like an analytics query, they probably have a whole class of prompts that are like tied into analytics queries. But I didn't, get it to actually see it do a query.
[00:14:08] I don't know how it would work, but I saw a bunch of people saying that it does queries and that it's gonna do mutations soon. Which is. Pretty cool. And they said they're working on some kind of a really slick interface to like, kinda like make the mutation safe or like, I guess they're gonna give some kind of a cool preview or something like that. Which is, that's pretty awesome. Like,
[00:14:33] David: that seems like something you should probably do.
[00:14:37] Kalen Jordan: Yeah.
[00:14:38] David: Like the use case that I, I think that they led with when they first started talking about sidekick was like, change my theme for me. And
[00:14:47] Kalen Jordan: Oh,
[00:14:47] David: that, that seems like a,
[00:14:50] Kalen Jordan: That's
[00:14:50] David: all right. Yeah, change the theme. But then, uh, sidekick, can you also like, go through all of my, my whole website and tell me if anything doesn't look right because of what you just did?
[00:14:59] Kalen Jordan: Yeah.
[00:15:00] David: Probably, uh, like, I don't know.
[00:15:02] Kalen Jordan: Yeah. That's insane. I was thinking it's kind of insane how, I know we've talked about this before, but it's kind of insane how non upgradable themes are. Like, I not,
[00:15:13] David: Hmm.
[00:15:13] Kalen Jordan: not in theory, but in practice. Like, that's kind of nuts. Like, it's like you work off the theme at whatever version you bought it at, and then for the next six years, you're not gonna update the theme.
[00:15:27] David: I mean, maybe someone does and I just suck, but I, I don't, it's,
[00:15:31] Kalen Jordan: thing. I don't think,, I think if people have an off the shelf theme, yeah. But like, if you're customizing it, I, I don't think anybody, I mean, I'm sure there's the outliers, but I think
[00:15:42] David: mm-hmm.
[00:15:43] Kalen Jordan: of people, they, just don't, I mean,
[00:15:46] David: Yeah. I, I bet there are agencies who have like, their base theme, and if you're working with them, they try and make sure that like the new stuff that they come out with gets. Pour it into your theme. And then like, they're super careful about what they change because they know what their upgrades are gonna look like
[00:16:04] Kalen Jordan: right,
[00:16:04] David: something like that.
[00:16:05] Kalen Jordan: right.
[00:16:05] David: yeah, I mean, for the themes are so simple. It's just JSON and, and h tm L basically. I mean, liquid is like h tm l pre-processor. So it's, I mean, uh, I don't know, maybe I didn't do it the right way, but there's, um, yeah, I mean, you gotta go in there and make changes for things and you can't always anticipate what the upgrades are gonna be like.
[00:16:28] Kalen Jordan: Yeah. I haven't really heard of anybody, like, I don't know if there is a, like a right way, ,
[00:16:34] David: yeah, I mean, we're getting, security updates through the platform itself, not through the, the theme. So
[00:16:40] Kalen Jordan: right.
[00:16:41] David: the downside is a little bit different too. Like the, the downside is maybe you don't get the new section, but you can, like sections are just. HTML files and and Js ON. So you could always grab those if you want them.
[00:16:52] Kalen Jordan: Right. Yeah. I mean, maybe it's kind of a feature in a sense, the fact that you can have such an old theme and
[00:16:59] David: Totally.
[00:17:00] Kalen Jordan: platform updates, not have to think about security. yeah, maybe that's sort of a good thing, but it, it just feels like there should be a way to have , like a custom section, your code that overwrites the core and then like the core,
[00:17:14] David: Yeah.
[00:17:15] Kalen Jordan: know, is untouched.
[00:17:16] But even that in practice always got weird, you know, with Magento, like keeping all your stuff and, and like figuring out how to layer everything on top of the core
[00:17:29] David: Yeah.
[00:17:29] Kalen Jordan: got complicated too. I feel like.
[00:17:32] David: It did and it was a little bit more dangerous there 'cause that, that had security implications. But here, like the core here is the API layer and you're not gonna do anything with that. So
[00:17:41] Kalen Jordan: Right, right, right, right,
[00:17:43] David: kind of, we're in our sandbox and play around there, which it feels great. Like it, it feels like you can move so much faster than on Magento with like small, like we have a, a launch coming up next week and we're still talking about some little things that we might change about the experience.
[00:17:59] And like back in Magento days, it would've been like, no, there's no way we're changing anything with one week to go.
[00:18:04] Kalen Jordan: right,
[00:18:05] David: But our development process is just so much faster now 'cause we're in the sandbox.
[00:18:11] Kalen Jordan: Nice. Nice. And then This dude Jason, , I think his agency's called Negative Space. He, , came out with like a cart, deal. I don't think it's an app or something. It's like a, it's basically like a replacement for, what's that one called? Rec Cart.
[00:18:30] What's the one called? That everybody uses for their like little side cart that has like, the little progress bar and, and the
[00:18:38] David: Oh yeah,
[00:18:39] Kalen Jordan: upsells and like,
[00:18:42] David: there's a bunch of those.
[00:18:43] Kalen Jordan: There's a couple that I
[00:18:44] David: I.
[00:18:45] Kalen Jordan: are pretty popular and they're like, they're pretty expensive, But yeah, it's basically like a more customizable, type thing. So I think if you buy it, if you buy the cart, like you're buying the code and it's like meant to be customizable,
[00:19:01] David: Cool.
[00:19:02] Kalen Jordan: As, so it's not a SaaS model, it's like an owned model type of thing. I took a quick look at it.
[00:19:08] Looks, looks pretty good.
[00:19:10] David: So it's, uh, you buy the code and then you, integrate it into your existing theme, I guess is how that works.
[00:19:16] Kalen Jordan: yeah, yeah.
[00:19:17] David: I guess one benefit of that would be if they have some sort of defined interface for how you should do certain things or like opinionated ways on how to do certain things in the cart.
[00:19:26] Like for instance, what if in my empty cart I want to show some recommendations or, or if I have something in my cart, I wanna show add-ons for those products. That would be interesting if, if that's what it was.
[00:19:40] Kalen Jordan: think that's exactly the, like, it, the kind of stuff that it has where it's just like built to be customized whereas I think, and haven't really worked with these,, SaaS things too much, but I think that, the SaaS carts, like they've got some buttons you can click to enable different options and things like that.
[00:19:59] David: Hmm.
[00:19:59] Kalen Jordan: you want to go in and code something to customize it, I think that's where you're like limited. But like, this one is designed to be customized , by a developer, which I think in, in a custom like. a, in a custom site situation that I think that's what you want,
[00:20:16] David: Yeah, I like that. We have a, uh, uh, I think, we're still using this wishlist app. The Wishlist app, has this like, it, it's pretty cool in, in the app itself, in the Shopify interface. You can go in and there's like spots for you to put your custom code and it's organized in such a way that you can kind of click through all the different places that you can customize.
[00:20:38] And there's really nice like documentation about, okay, if you want this, this to be what's happening, then use this API and then like build your stuff around it. Uh, I really like that approach where it's like simple, but then also if you need something, there's this other custom area that you can layer on top.
[00:20:55] Kalen Jordan: Yeah. I like the idea of being able to go, you know, as a developer, you just want to get into the code, really. You
[00:21:02] David: Mm-hmm.
[00:21:03] Kalen Jordan: and so much of the time, anything you're working on, it's like, yeah, can you do it through the check boxes in the app? Like sometimes, but most of the time there's something you need to code.
[00:21:13] So it's like that's, that's kind of
[00:21:16] David: Yeah,
[00:21:16] Kalen Jordan: what you want. Is that, wishlist app? Is that Wishlist King.
[00:21:20] David: I think so.
[00:21:20] Kalen Jordan: Oh, okay.
[00:21:21] David: Lemme see.
[00:21:22] Kalen Jordan: you telling me you started using that one.
[00:21:24] David: They might have changed their name.
[00:21:26] Kalen Jordan: Oh yeah, that's the other thing. All the name, all the weird app name changes, it's
[00:21:32] David: It's called
[00:21:33] Kalen Jordan: Wishlist King. Now. That's what everybody did.
[00:21:38] David: Can't Have Wishlist in your name. It's too close.
[00:21:43] Kalen Jordan: prefixing it with a couple initials.
[00:21:47] David: , Yeah, it's, it's called Swish Now.
[00:21:50] Kalen Jordan: Okay.
[00:21:51] David: Swish parentheses, former Wishlist. King is the name of the app.
[00:21:56] Kalen Jordan: Oh, that's kind of cool. Kinda like that
[00:21:58] David: Yeah, it's nice.
[00:22:00] Kalen Jordan: You got a list, put a list together or am I gonna be Philip Filibustering? I don't mind
[00:22:06] David: Um, I don't have a list, but I have a, a problem I can talk through.
[00:22:13] Kalen Jordan: Let's do
[00:22:14] David: Uh, I'm still in my data era.
[00:22:18] Kalen Jordan: Right.
[00:22:18] David: So where I'm at now is I have five tran connected to Shopify and it's pulling out the raw data from Shopify, which is awesome. , And then I have some DBT processes running on top of it to do things like.
[00:22:32] New versus repeat analysis based on the first order from a customer versus the last order. So it does like order ranking.
[00:22:39] Kalen Jordan: sorry, five Tran is the thing that pulls it into Google. Big Query or something.
[00:22:45] David: Yep. Five Tran pulls it from Shopify into BigQuery, and then DBT runs on top of the tables in BigQuery and makes new tables that are more convenient to query against.
[00:22:56] Kalen Jordan: Right,
[00:22:57] David: So I've been building in that convenience, like making sure new versus repeat is correct, including for our import orders. 'cause the, like there's a created at time and a processed at time, so I have to use processed at instead.
[00:23:08] 'Cause they were all created at import time.
[00:23:11] Kalen Jordan: right.
[00:23:11] David: And then late last week, I got to the point where I have all of the different channel sources. So there's like, depending on if the order came from an app or a sales channel or something else, it's got either an ID or a name in this like source field.
[00:23:27] And so I built in convenience to understand like, okay, is this retailer online? Then like, what is the actual name of the source? 'cause sometimes it's a app id. And so I just went in and like, okay, this app Id means shop my whatever. and Then for our imported orders, I got that working too. And then I looked at all of our orders and it was like, there are way too many orders that are classified as being purchased in our San Francisco store.
[00:23:52] Kalen Jordan: mm-hmm.
[00:23:53] David: uh, it was fun. 'cause on top of BigQuery, you can use Looker.
[00:23:58] Kalen Jordan: Mm-hmm.
[00:23:58] David: And Looker is another Google thing that like, lets you do the charts. So I just threw every order into a chart. Split out by
[00:24:06] Kalen Jordan: so
[00:24:06] David: location.
[00:24:07] Kalen Jordan: Is Looker, just like a visualization library or something
[00:24:11] David: Yeah, it's a
[00:24:12] Kalen Jordan: yeah.
[00:24:13] David: exactly.
[00:24:14] like You can go in and click, like in BigQuery, I wanna use this data source, this schema. Or you can just write a query. It's pretty cool, but it's like a lot to get into. There's so many things.
[00:24:25] Kalen Jordan: Yeah.
[00:24:26] David: But I, I was like, man, I wish I could visualize what all the sources were for all of our orders ever.
[00:24:32] Kalen Jordan: right,
[00:24:32] David: I did that and it was super easy. And then I saw, like, the trend line does not make sense
[00:24:38] Kalen Jordan: right.
[00:24:39] David: for when we imported orders. So like from 2018 to 2023,
[00:24:45] Kalen Jordan: Yeah.
[00:24:45] David: of those orders are classified incorrectly. That's, that's a lot of orders. So, , I found out that the reason they're classified incorrectly is because Shopify has orders and they have fulfillments,
[00:25:00] Kalen Jordan: Right.
[00:25:00] David: and in between those two is a fulfillment order.
[00:25:03] Have you ever looked at fulfillment orders?
[00:25:07] Kalen Jordan: Yes. They're so confusing.
[00:25:10] David: I guess when we imported them, we didn't set a location and so Shopify might've picked one. I don't know what happened. I. Whatever happened, whoever imported these orders, like maybe did it wrong.
[00:25:21] Kalen Jordan: right.
[00:25:22] David: So I, I went in and I was like, okay, well I have some orders from that period and I ran this, mutation, fulfillment order move,
[00:25:30] Which just changes the location that if you were to fulfill this order, fulfill it from this location, and we're not gonna fulfill any of these.
[00:25:37] I just wanna make sure that I have a reliable understanding of where was this order placed from.
[00:25:44] Kalen Jordan: Hmm.
[00:25:44] David: So anyway, the mutation worked and now I have to do it on a very large number of, of orders,
[00:25:53] Kalen Jordan: Nice
[00:25:53] David: Like I, I can't export the data. Into a Google sheet to process it from a Google sheet.
[00:25:59] 'cause Google Sheets just doesn't support that much data. Like trying not to say how many orders we have, but it's a large number.
[00:26:07] Kalen Jordan: dude,
[00:26:08] David: Um,
[00:26:09] Kalen Jordan: 'cause I searched recently. I was like, how many cells can you pull in at once
[00:26:15] David: it's 10 million.
[00:26:16] Kalen Jordan: API? And it was like a lot. But that's not even the limit the limit on a Google sheet is very high.
[00:26:24] David: Yeah. The limit on a Google sheet is 10 million cells.
[00:26:27] Kalen Jordan: my God.
[00:26:28] David: I Don't have 10 million orders, but there's also a limit of the amount of data you can export from BigQuery into a Google sheet. So anyway, long story short, I now have to learn how to build Google Cloud functions so that
[00:26:44] Kalen Jordan: Nice
[00:26:44] David: I can run this, like this process that will have to deal with the Shopify rate limits.
[00:26:51] And like churn through these like certain number at a time. And then give me a dashboard to understand how far we are. And like I did some calculations and figured out like, okay, if I update one order per second, which is, , not very fast, but just speaking conservatively, if I did one order per second, it would take me like over a week to let this thing just run.
[00:27:15] And so I'm in this, this twilight zone of like, I just gotta put all this together, I guess, and let it run. And hopefully nothing bad happens.
[00:27:23] Kalen Jordan: dude and you need to update the fulfillment order.
[00:27:27] David: Yeah. The fulfillment order. So there's no fulfillments for these orders, which was like another thing you had to like, get around to not have to pay the GMV tax or whatever. It's like the, these orders aren't gonna be fulfilled, they're just in Shopify. And, there was some concern, like if, if I update an order using the order fulfillment move, mutation, does it count as an order edit?
[00:27:49] Is it gonna resend that order over to NetSuite? Is it gonna send the customer an email? It seems like all that's fine. , But I'm still gonna try with like some internal employee orders it, like a bigger chunk and see if anything crazy happens before I go
[00:28:03] Kalen Jordan: right, right,
[00:28:04] David: too wild.
[00:28:05] Kalen Jordan: That's funny. , I just checked the bulk mutations API, but there's no bulk mutation for
[00:28:11] David: Yep.
[00:28:11] Kalen Jordan: orders.
[00:28:12] David: I went first too. That's mostly product stuff, right?
[00:28:15] Kalen Jordan: Yeah, has customers, but yeah. Nice,
[00:28:21] David: So just gonna have to drain my API limits for a solid week.
[00:28:28] Kalen Jordan: nice. That's a fun one, dude,
[00:28:31] David: It is fun, but it's just, \ the learning never ends. Now I have to figure out how to do Google Cloud functions on, on BigQuery.
[00:28:38] Kalen Jordan: right?
[00:28:39] David: I bet it's fine.
[00:28:41] Kalen Jordan: yeah, so, I built this, uh, little thing called shop worker. It's like
[00:28:47] David: I,
[00:28:47] Kalen Jordan: uh, it's like an open source thing for like, for like building, little automations on CloudFlare workers
[00:28:56] David: yeah, that looks super cool. I'm, I'm sad I haven't been able to go check it out yet.
[00:29:00] Kalen Jordan: thanks dude. but Yeah, like I did a, backfill the other day for like pushing orders to Google Sheets and, what I like about it, 'cause whenever I do these integrations and stuff, like, when you have to go into some server and then test something, and then it runs a big batch at once or whatever. whenever I'm doing these, I always want to just like test first. I want to just test one record at a time. So like, there's a
[00:29:25] David: Mm-hmm.
[00:29:26] Kalen Jordan: tool for like, just test one record and then, you know,
[00:29:30] David: Nice.
[00:29:30] Kalen Jordan: see how it works and then it'll paginate through, records and stuff like that.
[00:29:35] But I mean, I only did like, you know, like a couple thousand records for this thing, but that would be a fun project for this too, actually. 'cause that's kind of the idea is to make it easy to like build out little things like that. And then you could, deploy it, you could have it run on like a little schedule or something like that and have it do like batches of, I don't know, maybe batches of like 250 every minutes or something like that.
[00:30:02] David: Yeah.
[00:30:02] Kalen Jordan: And then
[00:30:03] David: that sounds nice. That's like a lot of what I, I've just been talking to my boy Claude, about this project and Google Cloud functions. I think the best part about Google Cloud functions is it, it has some like nicer APIs to work against BigQuery tables,
[00:30:19] Kalen Jordan: nice.
[00:30:20] David: I'll probably have to do that, but yeah, I should go take a look at your,
[00:30:24] Kalen Jordan: Oh, so you have to
[00:30:25] David: your thing,
[00:30:26] Kalen Jordan: from BigQuery in order to have the data to update the fulfillment order.
[00:30:31] David: right.
[00:30:32] Kalen Jordan: Oh, gotcha. Okay. Yeah,
[00:30:35] David: Yep.
[00:30:35] Kalen Jordan: there then.
[00:30:39] David: Yeah, like, basically this data has to be in BigQuery now because it's too much. So what's the best way, I mean, it'd be cool if CloudFlare could just work with BigQuery if I gave it a service worker or something.
[00:30:52] Kalen Jordan: actually, you know, now that I think about it, yeah, you probably build a little connector to BigQuery and then, so basically you just need to like fetch like a chunk of those order or orders or whatever from BigQuery and then push over to Shopify.
[00:31:09] David: Yeah. The query is super simple. You just need the fulfillment order id,
[00:31:13] Kalen Jordan: Mm-hmm.
[00:31:13] David: and then the mutation is just the fulfillment order id and then the ID of the location you want it to, to go to.
[00:31:20] Kalen Jordan: Right, right,
[00:31:22] David: So I have a table that I created that's just static now that has like the, all that stuff that I need.
[00:31:27] So I just have to chunk through it and also come up with a, a way to understand what's happening over time. So I probably have some sort of like results table
[00:31:38] Kalen Jordan: right.
[00:31:38] David: to it.
[00:31:39] Kalen Jordan: I've been using the CloudFlare worker logs, which are actually pretty cool, like I'm so used to dealing with logs for automation systems, and they all
[00:31:48] David: Yeah.
[00:31:49] Kalen Jordan: especially like, for example, flow has logs, but you can't search 'em for you.
[00:31:54] David: Hmm.
[00:31:54] Kalen Jordan: like one thing, like you can search 'em for, the ID of the order,
[00:32:00] David: Yeah, just like a full text search or whatever.
[00:32:02] Kalen Jordan: And so CloudFlare workers has full text search you can just, whatever you console log out is boom,
[00:32:09] David: I.
[00:32:09] Kalen Jordan: there. they have a pretty high free tier. So like, you could just, as you're chunking through those, you could just log out like the order name, the, like the previous, , fulfillment location
[00:32:24] David: Mm-hmm.
[00:32:25] Kalen Jordan: one and just log those babies out.
[00:32:27] And then, as it's running, you probably spot check some of them and then just let it rip. And then if something weird happens, you have a log of everything. And I
[00:32:38] David: Nice.
[00:32:38] Kalen Jordan: yeah,
[00:32:39] David: I would not be surprised if Cloudflare's Logs had some sort of query syntax. Have you seen that?
[00:32:45] Kalen Jordan: I don't know 'cause I just searched in the dashboard, which I think is the only way to search them. I don't think there's an an API, but did regular, I just did a regular search and it just,
[00:32:57] David: Gotcha.
[00:32:58] Kalen Jordan: pulled it up.
[00:32:59] David: We had this product for a while when we were on Magento, it was called Sumo Logic. Have you ever worked with one of those?
[00:33:06] Kalen Jordan: Oh, that sounds so familiar, but I might
[00:33:09] David: It was pretty cool. You could, you could do like wild cards as part of a, like, as part of a search. So you could try and figure out, like, a lot of what I was doing back then was trying to figure out what these bots were doing and like block the bots. So I had to like, figure out what their signature was and, and look at it.
[00:33:28] Kalen Jordan: Oh,
[00:33:29] David: Um,
[00:33:29] Kalen Jordan: right, right, right, right.
[00:33:31] David: I bet if CloudFlare has logs, they're probably either working on that or they have it already. They just do, they do it with all their stuff. They just freaking do it.
[00:33:41] Kalen Jordan: Dude, there's so good, man. I just, I love it. I love it so much. Lemme see. Worker logs. I think, there's also log push, I think, which you push your logs somewhere else. But I think,
[00:33:57] David: Oh, it says you can store them in R two. Maybe that's what makes them queryable.
[00:34:01] Kalen Jordan: No, out
[00:34:01] David: that's it.
[00:34:03] Kalen Jordan: Out of the box. It doesn't store them in R two, it just, you just enable observability.
[00:34:12] David: Gotcha.
[00:34:12] Kalen Jordan: it stores 'em in R two 'cause I did have to create a couple R two, buckets or whatever.
[00:34:18] David: Yeah. What is R two? Is that their file storage.
[00:34:21] Kalen Jordan: Yes, yes. R two is like their, I guess like their S3.
[00:34:28] David: Got it.
[00:34:28] Kalen Jordan: So funny all the terms they use,
[00:34:33] David: I know S3 is like, simple something. Storage,
[00:34:37] Kalen Jordan: object storage or something like that.
[00:34:39] David: simple storage service. That's what it is.
[00:34:41] Kalen Jordan: what it's, yeah, yeah.
[00:34:43] but yeah, like, so you might be better off just using logs. I mean, you could build out a dashboard, but you might be fine with , just using your logs and you know, you just want to be able to like, make sure you can probably search 'em, because like
[00:34:59] David: yeah,
[00:35:00] Kalen Jordan: if you can't search them,
[00:35:02] David: it's gonna be a lot of logs.
[00:35:03] Kalen Jordan: Yeah. ,
[00:35:05] David: Also, since I'm on BigQuery, I could probably just put stuff into a table and then run, run a join to see like how stuff is going.
[00:35:13] Kalen Jordan: Hmm,
[00:35:14] David: Maybe that works.
[00:35:17] Kalen Jordan: That's true. Yeah. Cause then you could like mark them as fixed and then you could join on the that are fixed and.
[00:35:26] David: Yeah,
[00:35:26] Kalen Jordan: Spot check 'em and stuff like that.
[00:35:28] David: knows, man, week to week, I'm just like, okay, guess I'm doing Google. Google Cloud stuff.
[00:35:37] Kalen Jordan: yeah. Nice. That's a fun one. , But yeah, I'm kind of pumped about this shop worker thing because like, there's always so many limitations in automation tools like that. it's nice to just be able to write some code \ I kind of optimized it for cursors so that like you can just pro, you know, there, you can just prompt it and then be like, you know, create a job that does this, does that, and then it, it knows like where the triggers are. Where the job files are, like how, how to create a job. And then each job just takes in like an input, like a trigger does some stuff.
[00:36:11] David: I just had a question about it. Go ahead.
[00:36:14] Kalen Jordan: yeah. No, no, no. Go ahead. Go ahead.
[00:36:17] David: I think when you started this, it was more of a like easy way to create webhooks, right?
[00:36:24] Kalen Jordan: Yeah. Yeah.
[00:36:26] David: So now you've built on top of that, the webhooks can also generate, jobs. And so like a job is a thing
[00:36:35] Kalen Jordan: Yeah, each job has a trigger, and then basically an, an action. But instead of, having like a set of actions and a set of blah, blah, blah conditions, blah, blah, blah, , the action is all just note. So you
[00:36:49] David: it.
[00:36:49] Kalen Jordan: do whatever you wanna do in there, and then there's a manual trigger for like, running, like the backfill job was just a one time thing. I didn't need it to run on a server on a schedule, so I just ran it locally.
[00:37:04] David: Mm-hmm.
[00:37:04] Kalen Jordan: a, a manual trigger. But then, , I'll probably add like a schedule trigger, .
[00:37:10] David: I see.
[00:37:10] Kalen Jordan: and stuff like that. So like, I had a couple clients that had some automations, but they wanted some changes and they're like, there were some issues, like certain things, like for example, like with an automation tool, like you might have something that takes your orders and puts them into Google Sheets on create,
[00:37:28] David: Mm-hmm.
[00:37:29] Kalen Jordan: okay, well I also wanna update them. it's like, okay, now you gotta go in, you gotta like do a lookup for the update. Like, it gets, it gets a lot more complicated to do like things like updates and
[00:37:42] David: Mm-hmm.
[00:37:44] Kalen Jordan: I was able to use it for a couple little client things um, hoping I can find some more little excuses to, to use it.
[00:37:53] David: Yeah, that's super. So each new job is, is it a new,, edge worker that's listening for a ping from
[00:38:02] Kalen Jordan: It's actually the whole thing is one worker, because I was thinking about if they should be separate workers, but it's like if they're separate workers, then they have separate law. I mean they have separate like,
[00:38:16] Everything is kind of Yeah. So it's all one worker and then you just have as many basically routes that are configured and, webhooks and stuff like that.
[00:38:27] David: Got it.
[00:38:28] Kalen Jordan: yeah. So, but
[00:38:30] David: So you
[00:38:31] Kalen Jordan: like a job JS file that
[00:38:33] David: Ah, gotcha.
[00:38:34] Kalen Jordan: in a pay, takes in like a JS om payload from the trigger and then does stuff.
[00:38:40] David: Okay, so your tool creates the, in your tool you say, I want to do something on order, create.
[00:38:47] Kalen Jordan: Yeah,
[00:38:47] David: so your tool goes and creates the webhook listener for order, create, and routes that all of the incoming data from that listener into, , a job that does a thing.
[00:39:02] Kalen Jordan: right, right.
[00:39:03] David: Cool.
[00:39:03] Kalen Jordan: , Yeah, and then the logs are right in there. The free tier is so high that like, there's, I think, quite a few use cases that you could get
[00:39:13] David: Yeah.
[00:39:14] Kalen Jordan: I mean,
[00:39:15] David: It's like a million runs a month or something like.
[00:39:17] Kalen Jordan: It's like, it's ridiculous. That's, that's kind of cool.
[00:39:23] Um, and then the, yeah, the logs are pretty, I can't tell you how many times I've wanted just a full text search on logs. Like it's so important because anytime something unexpected happens, it's like, oh, well these variants with this meta field value didn't save correctly. Okay. How do I find those, you know, on
[00:39:46] David: Hmm
[00:39:47] Kalen Jordan: update trigger
[00:39:48] David: mm-hmm.
[00:39:49] Kalen Jordan: I have 5 billion flow runs
[00:39:53] David: Ah, I see. So that's the benefit overflow.
[00:39:56] Kalen Jordan: yeah. Yeah. Which is kinda weird, weird timing because I'm doing some flow templates too,
[00:40:05] David: Yeah. Yeah. So I, I guess you now have this like decision to make each time you run into a problem is, should I use flow or should I use this
[00:40:14] Kalen Jordan: Well,
[00:40:15] David: thing?
[00:40:16] Kalen Jordan: it's So much fast, like to go into flow and click around, like, you gotta click here, you gotta click there, you gotta find your variables. You gotta, like, so much manual clicking and then you can literally just with one prompt, like it, it'll just do it.
[00:40:37] David: Nice.
[00:40:38] Kalen Jordan: like it, it'll just do it.
[00:40:40] It's like, it's awesome. I mean, and of course you have to be able to understand the code and stuff like that, but,
[00:40:47] David: Yeah,
[00:40:47] Kalen Jordan: I've gotten so used to the, to the vibe coding that like, like just clicking around and stuff is brutal,
[00:40:58] David: just gotta give, give it up to the machines. Man.
[00:41:02] Kalen Jordan: Yeah.
[00:41:04] David: I was really happy with, , flow the other day. Someone was like, I want our customer support team to respond to one and two star reviews.
[00:41:13] Kalen Jordan: Mm-hmm.
[00:41:14] David: And I was like, okay, that's probably easy.
[00:41:16] Kalen Jordan: Mm-hmm.
[00:41:16] David: went into flow and there's a, trigger for receive new review, and then I can easily set it to less than or equal to two, and then HGDP request over to Zendesk to create a ticket.
[00:41:31] It was pretty nice. Like the, the hardest part was just figuring out what the, the format of the API call to Zendesk was, and that that wasn't even that bad.
[00:41:41] Kalen Jordan: Sweet dude. By the way, I may or may not have access currently to the HDP response. Um,
[00:41:49] David: What sweet.
[00:41:54] Kalen Jordan: cannot confirm or deny. Um, yeah, it's pretty, it's pretty cool.
[00:42:01] David: I mean, you, do get the HTT P response if it fails, so
[00:42:06] Kalen Jordan: right,
[00:42:08] David: you get it on success. That's exciting.
[00:42:10] Kalen Jordan: Yeah. So I'm building out a couple templates for that.
[00:42:14] David: Oh, cool.
[00:42:15] Kalen Jordan: cases yeahs kind of cool. that's a cool little flow for, reviews.
[00:42:21] David: Yeah, sometimes it just works.
[00:42:23] Kalen Jordan: Yeah, that's a great one. That's a great little, that's a solid little flow.
[00:42:28] David: What does drink your own champagne mean?
[00:42:32] Kalen Jordan: Okay. I was just looking at that one. So I was listening to this podcast, it was like this AI podcast, and it was like this AI solutions architect or something that was talking, and it's basically another version of eat your own dog food. And made me so bad when, when I heard her say that it is like, it just bothered me to no end. It's like one of these like, you know, say something in a less, I don't know,
[00:43:04] David: Yeah. Like I, no, our product is not dog food. It's champagne.
[00:43:11] Kalen Jordan: It's so stupid. It's so stupid.
[00:43:17] David: We are all out here making champagne. I mean, I would love to drink my own champagne. If I made champagne, I would drink it all the time.
[00:43:23] Kalen Jordan: Yeah. That's the whole point of the phrase is that like, there's problems with your stuff. That's the whole, there's always like, that's the whole point is that , we're not making champagne out, out of the box. , there's issues and if you don't actually
[00:43:41] David: Hmm.
[00:43:42] Kalen Jordan: you don't find them.
[00:43:43] David: Got it. So it's more like, uh, when it's dog food, it's like you, you consciously have to do it.
[00:43:49] Kalen Jordan: Yeah.
[00:43:49] David: uh,
[00:43:50] Kalen Jordan: like, it's painful. Like if it was champagne, we'd all drink our own champagne. It wouldn't be hard. You know?
[00:43:58] David: I just Google searched this. And the top Reddit thread is I sometimes buy champagne just to drink it alone.
[00:44:09] Kalen Jordan: That's funny. probably do that one day. In Better News also, uh, another one from Jordan, from Pi Scle. Shout out to Jordan. have to make,
[00:44:19] David: Shout out.
[00:44:20] Kalen Jordan: a episode. Shout episode title. he made a, a graph, QL Linter. That,
[00:44:27] David: Hmm.
[00:44:28] Kalen Jordan: I think it basically, I, I haven't checked it out yet, but I always have this issue where I'm writing GraphQL and then like, also Cursor is really bad at it.
[00:44:37] It'll, you know, it'll do the wrong fields for things. And so I think it just auto detects against the schema. Drops a little like linting error message
[00:44:48] David: Which, like, I feel like everyone thinks that's what the whole point of an MCP is, right? Like it's supposed to.
[00:44:56] Kalen Jordan: Yeah.
[00:44:56] David: That's what it's supposed to do, but I guess it doesn't. So you need this extra step.
[00:45:00] Kalen Jordan: Yeah, that's a good point. Yeah, I mean it really, I well, , but also, even if you're, but the cool thing about the linter is even if you're writing it by yourself, like even if you're not prompting to
[00:45:10] David: Oh, gotcha.
[00:45:11] Kalen Jordan: GraphQL, it would, it would help with that, yeah, it, it, I don't understand mcps, I don't understand how they work.
[00:45:21] They never seem to work that well. Every time I see a demo of a cool MCP in Claude, it like prompts you to click to confirm every single time, which is
[00:45:31] David: Hmm.
[00:45:32] Kalen Jordan: it feels so clunky. They're like, check out this cool thing, click, click, click. I don't know how the MCP works, like, does it try to determine in your prompt which like it needs to reference and then it passes that over or something like that? Wish I understood better how they worked.
[00:45:56] David: I guess like, my guess is that when you have a, schema as part of the MCP. The, it's in the context for the language model, but that doesn't necessarily mean it's going to abide by it. Like, it, it can still hallucinate, I guess.
[00:46:14] Kalen Jordan: Yeah.
[00:46:15] David: , But it feels like an, like, something that would be useful is when it comes up with a response, it should use that schema to lt against what they just generated.
[00:46:26] And if it doesn't match, then fix it. But it seems like maybe that's not the case.
[00:46:33] Kalen Jordan: I think it like the MCP kicks in before it generates the code. 'cause if I say like, okay, change my query to do this and that, then
[00:46:42] David: Mm-hmm.
[00:46:42] Kalen Jordan: okay, hitting the MCP and then it'll be like, okay, generating the code and then it'll generate the code. So the MCP didn't see, I don't think the MCP saw the code edit it, just saw the prompt.
[00:47:01] I think I, I don't know, man.
[00:47:03] David: No, that matches the way I understand it. Like , the model knows what it can do. It goes and does that thing
[00:47:09] Kalen Jordan: Mm-hmm.
[00:47:10] David: and gets more context, and now it understands a bit more about what it should do.
[00:47:15] Kalen Jordan: Mm-hmm.
[00:47:16] David: But once it creates something before it delivers, I feel like it should always check it against whatever schema is part of the MCP.
[00:47:27] Kalen Jordan: That's the thing is I don't know if CPS have, schemas that they can return back
[00:47:34] David: Well, that's part of the Shopify MCP. I saw one of the things was a big schema that just included the entire GraphQL schema.
[00:47:42] Kalen Jordan: So can you see the m, the source code for the MCP or
[00:47:46] David: Yeah. Lemme see if I can find it.
[00:47:49] Kalen Jordan: Okay. That's good to
[00:47:50] David: That's what I was poking around.
[00:47:52] Kalen Jordan: So then I wonder, does MCP just feed the whole full schema back?
[00:47:58] David: Yeah. I don't know,
[00:47:59] Kalen Jordan: Or does it try to find the part of the schema? That would be too big. 'cause the schema, the graph schema is big. So I'm guessing it probably tries to identify which part of the schema to send back. Maybe that's what
[00:48:16] David: , The entire schema here. I'll send you a link right now. The entire schema , in the GitHub repository is 622 kilobytes. So it's not nothing.
[00:48:25] Kalen Jordan: Mm-hmm.
[00:48:26] I thought it was bigger than that.
[00:48:28] David: this open source Shopify Dev MCP project is like, the only reason I know anything about MCP is 'cause I just read through this,
[00:48:36] Kalen Jordan: Nice.
[00:48:37] David: stuff.
[00:48:37] I, I should have tweeted it.
[00:48:42] Kalen Jordan: Yeah.
[00:48:43] David: speaking Of all of this stuff, I'm still in Claude. Chat, just hanging out with Claude and it's doing, , like an interesting job. It, it keeps changing the way it generates code
[00:48:54] Kalen Jordan: Mm-hmm.
[00:48:55] David: now it does it over in a little pane over on the right side. Like when I'm just talking through, okay, if there's this thing I want to do, like the Google Cloud scripting or whatever,
[00:49:04] It generates a bunch of code.
[00:49:05] And then when you do a follow up, , like, don't do it this way. Or like, here's this other thing that I kind of forgot to tell you about. You can watch and it deletes, like it deletes lines characters at a time and then puts in new stuff. It's really interesting
[00:49:21] Instead of recreating the whole thing, it goes and edits the thing that's already there.
[00:49:26] And I, I'm kind of scared like, is it, deleting the right spots?
[00:49:30] Kalen Jordan: Right, right,
[00:49:31] David: I don't know.
[00:49:33] Kalen Jordan: Like it applies a diff kind of,
[00:49:35] David: I'm guessing that's what it does. Yeah. It, it comes up with a diff and then applies it and. The first time it did that, it missed something and had to go in and fix it manually.
[00:49:45] Kalen Jordan: right, right. We'll look at the diff , and then kind of like, before I commit it, I'll, I'll review the, get diff to make sure like nothing
[00:49:53] David: Mm-hmm.
[00:49:55] Kalen Jordan: but sometimes if
[00:49:56] David: you're just reading through the MCP code. I can tell
[00:49:59] Kalen Jordan: yeah. Yeah. I'm trying to, as if I'm gonna understand it that fast,
[00:50:04] David: it's not like there's not a lot going on. I was surprised.
[00:50:08] Kalen Jordan: Yeah. That's actually super helpful. I'll dig into that. That's a good one to look at, to try to understand what the hell's going on.
[00:50:15] I used clot, so I got asked to do some code review for this, app, and, I popped in, I looked at a couple things and then I was like, I noticed a couple things and then I was just kind of like, oh God, I hate code review so much. But then popped into Claude code, the, the terminal one, which is really good at like understanding like a whole code base at once kind of a thing. And it was so helpful, dude. Like, I just was like, okay, well , you gimme an overview of what it's doing and then it put that into like a document. Like, gimme an overview of the architecture and then like, okay, where is it sending the things to the API, how is it doing paginate or like, just different things like that. It was such a nice little way to get familiar with the code base.
[00:51:11] David: Does it understand what you're looking for and like present it to you somehow? Like, oh, that's in this file over here,
[00:51:17] Kalen Jordan: Yeah.
[00:51:18] David: it or something.
[00:51:19] Kalen Jordan: I'll say, highlight some of the important files and, and what they, Liz, like by default, if you run Claude in it, it gives like a little overview of the project, which is like a decent overview.
[00:51:29] Then I ask like, for some more details, like, tell me some of the important files and like, get and tell me what they do. So then you know, it like identified those and it just explained and then it like explained the flow of data from one system to the next. 'cause it was like
[00:51:44] David: Cool.
[00:51:44] Kalen Jordan: from Shopify to another system and it, explained the data flow and dah, dah, dah. And I was like, it was just, it, it was just such a cool, like there's all these AI use cases that, you know, are not necessarily obvious.
[00:51:58] You know, like, You think like, oh, well AI lets you create, you know, a video game in five minutes so you can get rich. Like, okay,
[00:52:04] David: Mm-hmm.
[00:52:05] Kalen Jordan: But then it's like it takes the pain out of code review and just helps you to actually like review code more easily,
[00:52:14] David: So this is a command line, and so like you, you install this and you talk to it from within the, the code bases directory.
[00:52:23] Kalen Jordan: Yeah. Yeah. That's how Claude code works. It's like, it's just a command line. it's not within an IDE, which takes like, I don't use it that much day to day. 'cause it takes some getting used to, it's weird for me to not be within an IDE, you
[00:52:37] David: Yeah.
[00:52:38] Kalen Jordan: like that's a little more comfortable for me. But it's more expensive, especially for like code, but actually just for like, asking questions, it was pretty cheap because like, that's pretty easy for it to do.
[00:52:50] It's so much harder to like a code base or something like that. But yeah, it's, it's good at like understanding the whole code base, which is pretty, pretty sweet.
[00:53:02] David: Yeah, that is interesting. Does it tell you how much it's spent every time you
[00:53:05] Kalen Jordan: It does.
[00:53:06] David: ask a question?
[00:53:07] Kalen Jordan: Well, when you exit the session, it tells you the cost. So like, dude, the other thing I tried to do was I was looking at the Shopify order details liquid order confirmation email liquid, which is like lines. I don't know if you've looked at it
[00:53:28] David: Oh yeah.
[00:53:29] Kalen Jordan: it's brutal. And
[00:53:31] David: The emails are tough.
[00:53:32] Kalen Jordan: I was gonna try to convert it to a flow format, which would need different liquid variables. So then the first thing I wanted to do like, the indentation is all jacked up in there. To just clean up the indentations so that it was just like a clean slate to work with.
[00:53:50] David: Mm-hmm.
[00:53:50] Kalen Jordan: there was like a linter error \ there and I was like, I don't want to. So I tried to get Claude Co to do it, I swear, dude, I've had it refactor. Hundreds of lines of code. The most I've ever seen it take is like, it'll chug for like a minute. it chugged for 1200 seconds on the order details liquid, and then eventually I just stopped it. It didn't even finish. I just stopped it. And it cost a buck 50
[00:54:22] David: Oh, no.
[00:54:23] Kalen Jordan: Yeah.
[00:54:24] David: Guess I gotta use my brain power on this one. Yeah, those emails are kind of gnarly. You just gotta like
[00:54:31] Kalen Jordan: they're rough.
[00:54:32] David: like zoom in on what you're actually trying to update. Like there, there's some stuff we do, like we had to add final sale in there 'cause we have final sale on the front end and so we had to like figure how to do that and it's like totally different than how you would do it.
[00:54:46] And raw liquid,
[00:54:47] Kalen Jordan: Right.
[00:54:48] David: it's interesting.
[00:54:48] Kalen Jordan: Yeah. You just dip in, you fix your thing, you dip out. You don't, you
[00:54:52] David: Yeah,
[00:54:52] Kalen Jordan: think too much about the whole
[00:54:54] David: I command a copy, paste that into somewhere else
[00:54:58] Kalen Jordan: Yeah,
[00:54:59] David: and then like
[00:54:59] Kalen Jordan: yeah,
[00:55:00] David: everything falls apart,
[00:55:02] Kalen Jordan: yeah.
[00:55:02] David: back in there.
[00:55:04] Kalen Jordan: What it
[00:55:04] David: I
[00:55:04] Kalen Jordan: is like to be able to have subsections, you
[00:55:07] David: mm-hmm.
[00:55:08] Kalen Jordan: re render out sub snippets. It needs snippets,
[00:55:11] David: Yeah,
[00:55:12] Kalen Jordan: is what would be great.
[00:55:13] David: that would be nice.
[00:55:14] Kalen Jordan: Yeah. , But
[00:55:16] David: Gonna have to bring that up next week, a couple weeks from now.
[00:55:19] Kalen Jordan: Oh, yeah. Yeah. Dude. So, at, at
[00:55:22] David: I heard that there's gonna be, yeah, I, I was talking to our account manager and it sounds like there's booths for different teams, so you can like, walk around and, talk to them.
[00:55:31] Kalen Jordan: yeah, yeah, yeah. You got any
[00:55:34] David: That'll be great.
[00:55:34] Kalen Jordan: wanting to talk to in
[00:55:36] David: Yeah. I want to go, I, I don't know if it's the fulfillment team, but I, I wanted to talk about exchanges. I know there's some interesting things happening with exchanges infrastructure.
[00:55:46] Kalen Jordan: right?
[00:55:46] David: I think they already did some nice stuff, like in, in the new exchange endpoint, you can see point of sale and online exchanges all in one, which wasn't the case a little while ago.
[00:55:57] Kalen Jordan: mm
[00:55:58] David: , So we were talking about that.
[00:55:59] Kalen Jordan: Nice.
[00:56:00] David: who else? It's always cool to see what. The liquid team is working on. Like, uh, I think his name is Ben.
[00:56:08] Kalen Jordan: Yeah.
[00:56:08] David: So it'd be cool to go hang out with them for a little bit.
[00:56:12] Kalen Jordan: Nice.
[00:56:13] This'll be our last, pod before the event,
[00:56:16] David: Hey,
[00:56:16] Kalen Jordan: and yeah, it's exciting. Well, it'd be good to meet Paul, uh, for the first time with
[00:56:22] David: yeah.
[00:56:23] Kalen Jordan: Paul at
[00:56:23] David: I
[00:56:23] Kalen Jordan: pm That'd be awesome.
[00:56:27] David: mean, I'm, I'm sure I'll walk around and talk to everyone. It's such a cool opportunity.
[00:56:32] Kalen Jordan: Yeah, , it's really cool, man.
[00:56:34] It's such a cool event. Just go, go with the flow. See, see what happens.
[00:56:41] David: Same. Hopefully my hotel won't get canceled. I booked that last, I think I booked that earlier this week.
[00:56:47] Kalen Jordan: Oh, nice. The hotels are expensive, dude.
[00:56:52] David: Yeah, they're, they're not cheap.
[00:56:54] Kalen Jordan: how much was the hotel? I was like, like the ones we were looking at were like, minimum two 50, and those ones were like, great.
[00:57:01] David: I think where I ended up,
[00:57:02] Kalen Jordan: I mean, they were nice, but I'm just saying they weren't like, you know, I mean
[00:57:06] David: I think what I got was some sort of,, apartment, I forget what they call it.
[00:57:12] We use this thing called Hotel Engine, and they changed their name to Engine.
[00:57:18] Kalen Jordan: Uh, that's weird. Hotel engine and they changed it to Engine. I,
[00:57:23] David: yeah.
[00:57:24] Kalen Jordan: that's a weird name,
[00:57:26] David: where's the cost for this thing?
[00:57:28] Kalen Jordan: Like, there's like this little, , you're right on the water there's like this cool like park. Green area, walkway, like walk, space It's like super. And then last time I was staying up by the airport, so I didn't get to chill out there too much. But this time I'm closer, so I'm pumped,
[00:57:52] David: Nice.
[00:57:52] Kalen Jordan: so pretty there.
[00:57:54] David: Yeah, I think I'm at the, Life Sweets Loft. I got that for around two 50 it looks like.
[00:58:02] Kalen Jordan: Uh,
[00:58:02] David: And it looks not bad.
[00:58:04] Kalen Jordan: Not bad at
[00:58:04] David: It looks like I should be able to walk over to the, I don't know if I will. , But yeah, that's where I'm at.
[00:58:10] Kalen Jordan: Nice, sweet dude.
EP 17: The Rooftop Waitlist

© 2025 All Rights Reserved SCORE: 0

Kalen
Punch Kalen - @kalenjordan
David
Punch David - @d_rbn