Syntax - Tasty Web Development Treats
Syntax - Tasty Web Development Treats

733: Egress, scraping, Safari EU changes, is SetInterval worth it?

In this potluck episode of Syntax, Wes and Scott discuss egress, scraping, Safari EU changes, and answer questions on updating dependencies and SetInterval. Show Notes 00:00 Welcome to Syntax! 01:35 Brought to you by Sentry.io. 02:49 I have over 100,000 user images on Cloudinary. How do I migrate to

Featured Speakers

Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers Host

Topics Discussed

Episode Summary

Executive Summary: A potluck-style Syntax episode covering image hosting migration, Windows vs Mac for development, Apple’s PWA and browser-engine restrictions in Europe, monorepo tooling, DOM event handling patterns, SQLite-to-Postgres migration, ChatGPT Plus value, timer accuracy, dependency upgrades, Chrome extension Manifest V3 concerns, and JavaScript date pitfalls—plus listener follow-ups and two practical product recommendations.

Main Topics: Migrating away from Cloudinary: Discusses when Cloudinary gets expensive at scale and options for moving images to cheaper infrastructure like Cloudflare Images, S3, or caching Cloudinary behind Cloudflare while managing egress costs. Apple, alternate browser engines, and PWA regression concerns: Examines reports that iOS PWAs and fullscreen behavior may be degraded in Europe after Apple was forced to allow third-party browser engines, with suspicion that some limitations may be intentional. Monorepo tooling and workspaces: Compares Lerna-style setups with modern package-manager workspaces, and positions Turborepo/Nx as performance layers rather than replacements for workspace management. Virtual scrolling and event delegation in large web apps: Explains why sites like Notion/Airtable use scroll containers and high-level event handlers: performance, virtualized rendering, and fewer event listeners. JavaScript dates, timers, and accuracy: Covers setInterval drift, why countdowns should recalculate from a base timestamp, and how date range filters can fail when start/end boundaries use current-time defaults. Dependency upgrades, Node versions, and schema migrations: Advises cautious, branch-based upgrades using tools like ncu, checking changelogs, and using TypeScript to catch breaking API changes; also discusses moving from SQLite to Postgres. Extension APIs and Manifest V3 follow-up: Clarifies that Manifest V3 mainly hurts ad/content blockers because the blocking webRequest API is being removed or limited, while privacy implications remain contested.

Key Arguments: Cloudinary is easy to start with, but egress and image-at-scale usage can make the bill balloon; cheaper replacements often involve S3/Cloudflare or caching Cloudinary behind Cloudflare. If you only need standard image transforms, you can approximate Cloudinary with your own pipeline; the hard part is replacing its advanced features. Windows is a valid development platform; the best choice is the machine and OS that lets you work comfortably and effectively. Apple’s browser-engine policy changes do not automatically mean more web openness; the reported PWA/fullscreen regressions may be an intentional “malicious compliance” style of enforcement. For most monorepos, package-manager workspaces are enough; Turborepo and Nx are best viewed as build/cache accelerators on top of workspaces, not direct replacements. Virtual scrolling works by rendering only visible items plus buffers, which is why apps use custom scroll containers and delegated event handling. SetInterval is not a reliable clock; timers should always be derived from the current time minus a stored start time because browser scheduling, background tab throttling, and event-loop load cause drift. Migrating databases is often easier than people fear if the stack supports it, but the biggest question is whether the migration is actually necessary. ChatGPT Plus may be worth it for heavy users and better coding responses, but many people can get by with cheaper API-based or alternative tooling. Manifest V3 is not purely a privacy win for content blockers because removing blocking APIs weakens ad blockers while still leaving some snooping capability intact. Date-range bugs often come from using `new Date()` as a boundary without normalizing to start/end of day, which excludes same-day records unexpectedly.

Data Points: Cloudflare Images pricing: $1 per 100,000 images delivered per month - Mentioned as a lower-cost image delivery option compared to Cloudinary Cloudflare Images storage pricing: $5 per 100,000 images stored per month - Used to estimate a rough monthly cost for hosting images on Cloudflare Estimated Cloudflare Images storage cost example: $25/month - Speaker estimated cost for storing images under the stated pricing model Syntax website build time: 1 minute 33 seconds - Reported build time for the site Syntax website deploy time: 1 minute 8 seconds - Reported deploy time for the site Total Syntax deployment time: About 2.5 minutes - Combined build plus deploy time on the Syntax website Weighted blanket size: 25 pounds - Previous king-size weighted blanket weight New weighted blanket size: 30 pounds - Upgraded blanket used as a recommendation

Pivotal Quotes: "I think this is what the sense. Tool can do for you just right there in your century." — Scott: Promoting Sentry’s AI-assisted debugging tool "I think the thing that bugs me the absolute most about Apple is that in their modern operating systems, the phone, the iPad, even the VR headset, they all use this intentionally limited operating system to push you into the app store so that they get their 30% cut." — West: Critique of Apple’s platform control and app-store economics "You cannot assume that set interval run at a thousand milliseconds will actually run every 1000 milliseconds." — Scott: Explaining timer drift and why countdowns must recalculate from real time

Implications: Listeners should rethink default assumptions around platform lock-in, timer accuracy, and migration cost. The episode encourages practical engineering choices: optimize for reliability, measure real usage, and be ready to swap tools when economics or platform behavior change.

🔓 Sign Up for Unlimited Episode Search

About Syntax - Tasty Web Development Treats

View all episodes from Syntax - Tasty Web Development Treats