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.
[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: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: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: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: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: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]
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: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: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: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: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: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: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: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]
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: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: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: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]
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: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: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: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: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: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: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: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]
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: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: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: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: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: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]
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: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: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: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: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]
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: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: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: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]
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: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: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]
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: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: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]
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: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: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: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: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: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: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: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: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: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: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: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: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: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: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]
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: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: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: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: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: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: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: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: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: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: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: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: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: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]
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: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: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: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]
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: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: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: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: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: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: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: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]
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: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: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: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: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]
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: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: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: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]
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: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: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,