John Duff

3.7K posts

John Duff

John Duff

@johnduff

Developer and Engineering Leader. Previously Director of Engineering @Shopify.

Ottawa Katılım Temmuz 2007
402 Takip Edilen1.7K Takipçiler
John Duff retweetledi
Jean Boussier
Jean Boussier@_byroot·
I tried to explain why I don't believe the recent accusations toward my former teammates, as well as how the Ruby and Rails Infra team at Shopify operates and why it can be trusted. byroot.github.io/opensource/rub…
English
16
63
328
49.4K
John Duff
John Duff@johnduff·
@kalenjordan I templated my Shopify app toml that I think does what you’re describing. I have one toml.erb that I inject some of the environment specific bits into when I deploy or run the app. I leave the scopes in there, but could move them out and inject them.
English
1
0
1
38
Kalen Jordan
Kalen Jordan@kalenjordan·
Finally spun up a quick cli for deploying environment-specific apps. Also scopes managed in a reasonable js array as opposed to the gnarly comma-separated-with-no-newlines toml format. Someone else has to have done this before? Shopify toml files are brutal.
Kalen Jordan tweet mediaKalen Jordan tweet media
English
4
0
3
581
John Duff retweetledi
Gadget
Gadget@gadget_dev·
Meet Gadget, the first development and hosting platform with an AI that will set up infra, write code, debug, deploy, and scale every part of your app. Ship with confidence, knowing that every part of your app is built right. gadget.new
English
10
25
106
16.4K
John Duff
John Duff@johnduff·
@_byroot Really appreciate these deep dive articles Jean, keep ‘em coming!
English
0
0
3
104
Jean Boussier
Jean Boussier@_byroot·
I wrote down my personal thoughts on whether it's worth removing Ruby's GVL and what it would take. I wanted to talk about Ractors too, but this is already too long, so that's for another time. byroot.github.io/ruby/performan…
English
10
10
87
4.9K
Jean Boussier
Jean Boussier@_byroot·
@johnduff Yeah, I should have included some section about GVL instrumentation. Rather than another post perhaps I should just quickly edit this one.
English
2
0
3
481
John Duff retweetledi
Jean Boussier
Jean Boussier@_byroot·
I want to write a post about Pitchfork, but before I can get to that I need to share some thoughts. I suspect this one may be more controversial than the optimizing JSON series 😅. byroot.github.io/ruby/performan…
English
10
19
105
13K
John Duff
John Duff@johnduff·
@_byroot You could, I feel like it could be a big enough / important enough topic to warrant another post and link to it too. Totally up to you though 😅
English
1
0
1
149
John Duff
John Duff@johnduff·
@_byroot Thanks for writing this Jean! IO comes up so often when talking about Rails performance so great to have a post diving into the details. I love the part about conflating scale with performance. This should be linked from the Rails performance guides, so much good info in here.
English
0
0
3
222
John Duff
John Duff@johnduff·
@hunkybill @ShopifyDevs I’m with you! Recently implemented it and used ActionController::Metal and it’s super speedy too. Can likely make some more improvements if needed, but the baseline is great and so much more enjoyable to work with.
English
1
0
1
36
Dave Lazar
Dave Lazar@hunkybill·
@johnduff @ShopifyDevs There remains a certain beauty in being able to provide shipping entries with Carrier Services. Being able to write 200 to 400 lines of Ruby to deliver results is gob-smackingly superior to the WASM route with the limits those functions incur. I prefer the poetry of the Ruby.
English
1
0
0
51
Shopify Developers
Shopify Developers@ShopifyDevs·
NEW WAYS TO EXTEND CHECKOUT IN 2025 💬 Chat apps in checkout Add real-time support using the Chat API • Use the chat component to embed custom UI • Query checkout and store information • Handle mobile-specific size constraints 🖌️ Line item customization Set up how products display in the order summary for better visual hierarchy • Configure custom aspect ratios for thumbnails • Set image fit and badge background color • Implement responsive image rendering rules 🔐 Gift card restriction in checkout Disable gift cards with custom logic through the Payment Customization Function API • Restrict gift cards with conditional logic • Create validation rules for customer segments • Hide input field and remove applied gift cards 📦 Metadata for delivery options Extend shipping options with the Delivery API • Store custom data for each delivery options • Handle delivery option selection states • Track shipping option changes automatically 📥 Draft order support Build extensions that load in draft orders • Implement cart instruction validation checks • Handle API availability states • Prevent cart line and note modifications
English
7
6
61
7K
John Duff
John Duff@johnduff·
@hunkybill @ShopifyDevs I have a strong suspicion that nothing is changing there and this is all checkout extension after the rates are delivered, but really hope to be proven wrong!
English
1
0
1
22
John Duff
John Duff@johnduff·
@kalenjordan @gilgNYC I was just reading through some API updates and came across this which mentioned tags being deprecated and recommending using customer segments to do it instead. Late, but maybe helpful for next time? #filtering-customers" target="_blank" rel="nofollow noopener">shopify.dev/docs/api/relea…
English
1
0
1
60
Kalen Jordan
Kalen Jordan@kalenjordan·
Is it *so* weird that you can't query customers by tag explicitly only indirectly with the default query, which will also pick up customers who happen to have that tag in their name or email. As cool as it may seem, don't name your son Net30 - he's gonna get some weird emails.
English
1
0
2
498
John Duff
John Duff@johnduff·
@gilgNYC @TaylorSicard Since the status page is usually quite delayed from when a problem starts I usually look for other signals first to indicate there could be an outage as well.
English
0
0
0
31
Taylor 🍕
Taylor 🍕@TaylorSicard·
🚨big outage right now 🚨
Taylor 🍕 tweet media
English
3
0
8
1.7K
John Duff
John Duff@johnduff·
@hunkybill @releod No worries! There’s a lot of bits and pieces now that can be used in some overlapping ways. Hard to keep it all straight!
English
2
0
2
78
Dave Lazar
Dave Lazar@hunkybill·
@johnduff @releod I understand that in checkout, a function can run that can alter the checkout itself. Add a product due to rules, sure. Hide a shipping option due to rules, sure. OK. All good. I mistook the concept of user actionable things like add to cart, in checkout, my bad.
English
1
0
1
53
A
A@releod·
After building checkout extensions (while limited and clunky at times), the comparison really shows how much of a total shit show building for storefronts can be. Why are dynamic checkout buttons doing ANYTHING to prevent normal operation of adding items, updating attributes?
English
3
0
6
637
John Duff
John Duff@johnduff·
@hunkybill @releod A checkout extension can add/remove items and update attributes. You can’t hook into specific buttons, but you can listen to cart changes and make changes yourself from the extension.
English
1
0
2
79
Dave Lazar
Dave Lazar@hunkybill·
@releod But in checkout no code should be present to add items or update attributes. Do you mean instead, cart functions?
English
1
0
1
112