---
title: "Latest reads"
description: "The engineering internet, summarised so you can actually read it."
---

# Latest reads
> The engineering internet, summarised so you can actually read it.

## Articles

### [Using Kamal 2.0 in Production](https://yomu.fyi/post/using-kamal-2-0-in-production.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: May 29, 2025
- Type: Announcement

Sam Ruby describes publishing an online guide to using Kamal 2.0 for production after finding existing material insufficient for deploying a real project. The guide grew from research for the Deployment and Production chapter of Agile Web Development with Rails 8, then was converted from Pragmatic Programming’s XML grammar to Markdown with GitHub Copilot and proofread with it. It presents an opinionated starter list with defaults and alternatives, covering seven initial requirements alongside Docker builders, container repositories, secret management, hosting choices, load balancing, and managed databases. It also treats production as including database backups, searchable logs, monitoring, and application security, and invites community corrections or additions under a CC0 license.


### [parking\_lot: ffffffffffffffff...](https://yomu.fyi/post/parking-lot-ffffffffffffffff.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: May 28, 2025
- Type: Incident / postmortem

Fly.io’s fly-proxy, a Rust-based Anycast router, suffered lockups while managing rapidly changing routing state across thousands of servers. An earlier outage came from an if let expression that kept a read lock through both branches, while later regionalization and lazy loading increased write contention in the Catalog. The investigation traced the new failures to parking\_lot’s try\_write\_for wakeup path: after a waiting writer timed out, it attempted to clear WRITER and WRITER\_PARKED together even though one bit had already been cleared, and wrapping arithmetic produced the corrupted lock value 0xFFFFFFFFFFFFFFFE. The parking\_lot team fixed the defect, after which the lockups did not recur; the team also audited Catalog locking, removed if let patterns and RAII lock guards, and added lock-timing metrics, labeled slow-write logs, and holder tracking.


### [Resilient Import Maps - Better Theme Development and Beyond](https://yomu.fyi/post/resilient-import-maps-better-theme-development-and-beyond.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: May 28, 2025
- Type: Problem & solution

Shopify found that JavaScript modules and import maps failed in themes and App Blocks when modules loaded before a map, or when multiple maps collided. These restrictions reflected the requirement that module resolution remain stable, but real pages assembled by themes, apps, Shopify, and extensions could not reliably guarantee ordering or a single map. Working with web-platform contributors, Shopify proposed a reconciliation mechanism with one global import map, a resolved module set, and merging rules that preserve existing resolutions and drop conflicting or unsafe additions. The change reached the HTML specification and shipped in Chromium and WebKit; Chrome supports it from version 133 and Safari from 18.4. Shopify also uses es-modules-shim support for browsers without native support, while Firefox support is hoped for.


### [Odysseus to AI: Matt Greenwood on the Dev Interrupted Podcast](https://yomu.fyi/post/odysseus-to-ai-matt-greenwood-on-the-dev-interrupted-podcast.md)
- Company: [Two Sigma](https://yomu.fyi/company/two-sigma.md)
- Author: Emily Majewski
- Published: May 27, 2025
- Type: Explainer

Matt Greenwood, Chief Innovation Officer at Two Sigma, outlines strategies for managing technological change, integrating artificial intelligence into systematic investment, and building supportive engineering organizations. Greenwood describes sustained innovation through the S-curve using an epsilon and omega approach, combining small iterative steps with a broad long-term vision. To direct resources amid rapid advances in machine learning and large language models, he presents a functional framework categorizing AI roles into advisory insights, oracle outcome validation, operational task automation, and agentic coordination. This categorization aims to automate routine workflows while keeping human creativity, control, and higher-level thinking at the center of the investment process. Additionally, the organization fosters employee engagement through initiatives such as an internal hacker lab where cross-disciplinary teams build projects ranging from robots to racing simulators.


### [OpenTelemetry Basics on Heroku Fir](https://yomu.fyi/post/opentelemetry-basics-on-heroku-fir.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Alex Arnell
- Published: May 27, 2025
- Type: Tutorial

Heroku Fir includes OpenTelemetry as a built-in observability capability, addressing the need to monitor increasingly distributed and complex applications. The post introduces OpenTelemetry’s logs, metrics, and traces, while noting that events and profiles are under development. It distinguishes application-embedded SDKs, which generate and process telemetry, from standalone collectors that receive, process, and export data, although Fir acts as the central hub for telemetry pipelines. The walkthrough uses the Go getting-started app in a Fir space, creates Grafana Cloud credentials and environment variables, converts OTLP headers to JSON, and adds an HTTP Heroku Telemetry Drain with the CLI. After deployment and browser refreshes, application metrics appear in Grafana Cloud, followed by traces and logs.


### [How We Decomposed Tinder’s Monolith](https://yomu.fyi/post/how-we-decomposed-tinder-s-monolith.md)
- Company: [Tinder](https://yomu.fyi/company/tinder.md)
- Author: Tinder
- Published: May 23, 2025
- Type: Problem & solution

Tinder faced significant agility and build performance challenges caused by an iOS codebase monolith containing over 1,000 files and 150,000 lines of code. Manual extraction efforts risked creating massive, unmanageable pull requests that would require constant rebasing against the main branch. To systematically decompose the target into Swift sub-modules, the team mapped declarations and references via the Swift compiler into a directed graph. They iteratively extracted leaf nodes with an in-degree of zero across sequential phases and automated common code adjustments, including module dependencies, imports, access control levels, and dependency injection. The automated decomposition completed in under six months with zero P0 incidents, reducing monolith build times by 78% and disallowing future additions to the monolith target.


### [Effortless enterprise authentication at Grab: Dex in action](https://yomu.fyi/post/effortless-enterprise-authentication-at-grab-dex-in-action.md)
- Company: [Grab](https://yomu.fyi/company/grab.md)
- Author: Kah Wei Lee
- Published: May 23, 2025
- Type: Problem & solution

Grab built Concedo to centralise access management, authentication, and authorisation across internal applications and external platforms. Its customised Google OAuth2.0-based mechanism created integration challenges with systems such as Databricks and Datadog, producing fragmented sign-on experiences and administrative overhead. To standardise identity, the team adopted OpenID Connect (OIDC) and used Dex, a federated OpenID Connect provider that aggregates identity providers and issues standardised OIDC tokens. Dex supports single sign-on, multiple identity providers, token delegation between trusted peer services, and a kill switch that can redirect traffic during an identity provider outage. The implementation separated application authentication concerns and established a single identity source, while a future phase will address fragmented authorisation through a unified model.


### [Deploying a Simple Go/Gin Application on Heroku](https://yomu.fyi/post/deploying-a-simple-go-gin-application-on-heroku.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Ken W. Alger
- Published: May 22, 2025
- Type: Tutorial

Deploying a Go/Gin application can be simple locally but requires explicit preparation for cloud deployment, including dependency management, environment configuration, and a process definition. The guide initializes a Go module, adds Gin with go get, runs main.go locally, and verifies the API with curl, using Go 1.24.0 in its example. It then creates a Heroku app, adds a Procfile with web: go run main.go, runs go mod tidy, commits the project, and pushes the main branch to the Heroku remote. Heroku detects the Go app through go.mod, installs Go 1.24.0 and dependencies, builds ./bin/go-gin, and launches the web process; the deployed /quote endpoint returns JSON, while heroku logs --tail confirms a successful request.


### [SignalR Scalability: Scaling Real-Time SignalR Applications on Heroku](https://yomu.fyi/post/signalr-scalability-scaling-real-time-signalr-applications-on-heroku.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Andrew Fawcett
- Published: May 21, 2025
- Type: Tutorial

Scaling a SignalR application beyond one server requires coordination because each server maintains its own connected-client list. The guide builds a .NET 9.0 chat application, adds the Microsoft.AspNetCore.SignalR.StackExchangeRedis package, and configures Redis as a backplane with a SignalRChat channel prefix and environment-specific connection settings. It deploys the application to Heroku, changes the dyno type to standard-1x, and runs three web dynos; without session affinity, WebSocket startup fails because the connection may be routed to a different dyno. Enabling Heroku’s http-session-affinity feature keeps requests on one dyno, after which both browsers establish stable WebSocket connections and exchange chat messages successfully across the scaled deployment.


### [Litestream: Revamped](https://yomu.fyi/post/litestream-revamped.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: May 20, 2025
- Type: Announcement

Litestream’s redesign aims to make SQLite suitable for more deployment scenarios while preserving its embedded, application-oblivious model. The original tool continuously streamed WAL pages to S3-compatible object storage, but restores could be slow because they replayed every change since the last snapshot. The new design adopts LiteFS’s transaction-aware LTX format, sorted changesets, and compaction, enabling faster point-in-time restores with fewer duplicate pages; conditional writes provide time-based leases that prevent overlapping instances from confusing a destination. Planned additions include a VFS-based read-replica layer that fetches and caches pages from object storage, plus replication across hundreds or thousands of database files. The remote read path may be less efficient than local SQLite, but caching and prefetching are expected to provide strong performance for suitable use cases.


### [From failure to success: The birth of GrabGPT, Grab’s internal ChatGPT](https://yomu.fyi/post/from-failure-to-success-the-birth-of-grabgpt-grab-s-internal-chatgpt.md)
- Company: [Grab](https://yomu.fyi/company/grab.md)
- Author: Wenbo Wei
- Published: May 19, 2025
- Type: Problem & solution

In March 2023, an effort to reduce repetitive questions overwhelming Grab’s ML Platform support channels began as a chatbot for platform documentation and became GrabGPT, an internal ChatGPT-like tool. The initial chatbot used chatbot-ui and more than 20,000 words of Q&A documentation, but GPT-3.5-turbo’s 8,000-token limit forced summaries below 800 words; embedding search also performed poorly, so the approach was abandoned. The pivot extended existing frameworks, added Google login, and deployed a tool through Grab’s catwalk model-serving platform, later named GrabGPT. It reached 300 registered users on day one, more than 3,000 users and 600 daily active users by month three, and nearly all Grabbers according to the post, with private routing, global accessibility, multi-provider model support, and auditable interactions cited as reasons for adoption.


### [Launching MCP Servers on Fly.io](https://yomu.fyi/post/launching-mcp-servers-on-fly-io.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: May 19, 2025
- Type: Announcement

The post presents Fly.io’s approach to simplifying remote deployment of Model Context Protocol (MCP) servers, which otherwise require client-specific JSON configuration, local processes or HTTP hosting, and potentially cumbersome OAuth 2.1 setup. It uses the Slack MCP Server as a demonstration, converting its npx command into a fly mcp launch invocation with --claude, --server, and secret flags for the bot token and team ID. Running this requires flyctl v0.3.125 or later, and the command supports Fly.io options including auto-stop, file contents, flycast, regions, volumes, secrets, and VM sizes. Built-in configuration support covers Claude, Cursor, Neovim, VS Code, Windsurf, and Zed, with bearer-token authentication enabled by default on both server and client. The broader beta support includes multiple transports, Machines API deployment, separate Machines or containers, in-application deployment, and HTTP Authorization, WireGuard tunnels, flycast, or reverse proxies.


### [Introducing Notion AI for Work](https://yomu.fyi/post/introducing-notion-ai-for-work.md)
- Company: [Notion](https://yomu.fyi/company/notion.md)
- Author: John Hurley
- Published: May 13, 2025
- Type: Announcement

Notion introduces Notion AI for Work, an all-in-one set of AI capabilities built into its workspace to address time spent searching for answers, writing updates, and following up after meetings. The release adds AI Meeting Notes, Enterprise Search across connected tools, Research Mode for drafting documents from workspace sources and the web, access to top AI models, and bundled pricing. AI Meeting Notes transcribes conversations, summarizes them, surfaces action items, and stores meetings in Notion so they can be searched and connected to projects; connectors support Slack, Microsoft, Jira, Google Workspace, and GitHub, with more planned. Research Mode can produce project updates, research reports, and internal best-practice documents from a single prompt, while the offering starts at $20 per user per month versus the stated $150–300-plus range for separate tools. Research Mode and AI Meeting Notes are available, while Enterprise Search and connectors are rolling out.


### [Introducing a New Way to Use Generative AI for Social Selling](https://yomu.fyi/post/introducing-a-new-way-to-use-generative-ai-for-social-selling.md)
- Company: [Ebay](https://yomu.fyi/company/ebay.md)
- Author: eBay News Team
- Published: May 13, 2025
- Type: Announcement

eBay has introduced a generative AI video tool that turns product listing images into short-form videos for social sharing, extending its earlier social caption generator. The tool creates professional-quality video content from existing images, lets sellers choose templates and platforms, and supports direct sharing to YouTube and TikTok. Sellers access it while creating a social post in Seller Hub by selecting Marketing, Social, Create Post, Video Post, a preferred platform, and Create a video with photos before choosing a template. It is currently available to US sellers and requires no video editing skills, extra equipment, or hours of work. eBay says it plans to expand the tool to additional platforms, while positioning video as a way to increase visibility, engage buyers, and build brand presence.


### [Changes Are Coming to the Okta Developer Edition Organizations](https://yomu.fyi/post/changes-are-coming-to-the-okta-developer-edition-organizations.md)
- Company: [Okta](https://yomu.fyi/company/okta.md)
- Author: E. Dunham
- Published: May 13, 2025
- Type: Announcement

Okta is replacing Developer Edition organizations with the Integrator Free Plan as the default developer organization type on May 22, 2025, as part of architectural changes tied to its Secure Identity Commitment. The new organization is intended for iterative integration development, identity-flow validation, and OIN preparation, not production use, and provides access to expanded testing offerings and support resources. Existing Developer Edition organizations begin deactivation on July 18, 2025, in batches, after which users lose access to their organizations and resources. Migration choices include recreating resources with automation, generating Terraform configurations with Terraformer, or using EnvSync to back up supported objects and recreate many of them. Published OIN integrations remain available, but linking them to the new account requires contacting Okta; draft or in-review submissions from Developer Edition must be approved by June 9 or will be automatically declined and require resubmission.


### [Why the future of work depends on AI](https://yomu.fyi/post/why-the-future-of-work-depends-on-ai.md)
- Company: [Notion](https://yomu.fyi/company/notion.md)
- Author: Makenna Lowe
- Published: May 8, 2025
- Type: Explainer

The post examines why organizations struggle to make AI useful in daily work despite strong demand. Tool fragmentation forces teams to search across disconnected systems, manually prepare data, and switch context, while resource limits and concerns about hallucinations complicate adoption. A survey of 1,000 productivity-software decision-makers found that integrating AI into existing systems was the leading challenge, while productivity motivated 57% and AI specifically motivated 44% of platform evaluations. The post presents embedded AI and connected workflows as the response, citing Notion AI’s AI Meeting Notes and Enterprise Search as examples. It reports that 86% of users would be disappointed without it, over 70% report improved work quality and faster information processing, and 50% save more than an hour weekly.


### [Streamlining RiskOps with the SOP agent framework](https://yomu.fyi/post/streamlining-riskops-with-the-sop-agent-framework.md)
- Company: [Grab](https://yomu.fyi/company/grab.md)
- Author: Fujiao Liu
- Published: May 8, 2025
- Type: Problem & solution

Risk Operations teams investigating Account Takeover (ATO) cases must gather data across systems, run SQL queries, and make decisions under pressure, creating delays and error risk. The SOP-driven LLM agent framework represents the workflow as a natural-language, indentation-based tree whose steps specify queries, external functions, and decision criteria. During execution, the SOP planner navigates the tree and produces JSON-formatted instructions, while a Worker Agent invokes APIs or SQL queries and stores results in a feedback loop. The process ends by synthesising investigation data into a report and final decision. In reported results, handling time fell from 22 to 3 minutes per ticket, 87% of ATO cases were automated since launch, and the error rate was zero.


### [Evolution of Product Classification at Shopify: From Categories to Comprehensive Product Understanding](https://yomu.fyi/post/evolution-of-product-classification-at-shopify-from-categories-to-comp.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: May 8, 2025
- Type: Explainer

Shopify’s product classification system evolved from a 2018 logistic-regression model using TF-IDF into a product-understanding platform designed to capture categories, attributes, characteristics, metadata, and content-safety signals. A 2020 multimodal image-and-text approach improved classification, but growing product complexity led Shopify to combine Vision Language Models with its Standard Product Taxonomy, spanning more than 10,000 categories and over 1,000 attributes across more than 26 business verticals. The production pipeline uses two-stage category and attribute prediction, with category context shaping the second call, and runs on Kubernetes with NVIDIA GPUs; FP8 quantization, Nvidia Dynamo in-flight batching, and KV caching improve inference efficiency. A multi-LLM annotation system independently evaluates products and uses arbitration when models disagree, helping build training data for consistent predictions. The resulting system processes over 30 million predictions daily, delivers an 85% predicted-category acceptance rate, and doubles hierarchical precision and recall versus the earlier neural network approach.


### [Email wasn’t designed for modern work—so we started from scratch: A Q&A with Notion Mail founders](https://yomu.fyi/post/email-wasn-t-designed-for-modern-work-so-we-started-from-scratch-a-q-a.md)
- Company: [Notion](https://yomu.fyi/company/notion.md)
- Published: May 7, 2025
- Type: Announcement

Notion Mail’s founders argue that email remains universal but has become an overwhelming work hub, forcing messages ranging from spam to critical information into an equal inbox structure. They describe rebuilding it around a familiar inbox with Notion’s more opinionated conventions, including labels instead of folders, no nested labels, and a modern editor with shortcuts, slash commands, and mentions. The team says earlier AI plans focused on advanced drafting and auto-response, but research suggested most users need organization more than composition; on a given day, 80–90 percent may only want to read email. Its resulting Auto Labeling feature learns from a few confirmed examples and applies personalized labels, such as doctors’ appointments or customer support requests, to future messages. The founders position this as a shift from speeding up manual triage toward helping people take action and gather information, while leaving future direction to user feedback.


### [Provisioning Machines using MCPs](https://yomu.fyi/post/provisioning-machines-using-mcps.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: May 7, 2025
- Type: Announcement

Fly.io’s flyctl MCP server lets LLMs such as Claude or Cursor use tools to inspect and modify application resources, demonstrated by creating a volume and adding support for all volume commands. The author describes asking Claude to identify unattached volumes and delete the oldest, while noting that flyctl’s mounted-volume safeguards provided an error if destruction was unsafe. Compared with writing against the Machines API, using flyctl directly, or navigating the dashboard, the conversational workflow surfaced an observation and turned it into an action with less manual effort. The post outlines a future in which an LLM proposes deployment plans, examines build errors and logs, and acts through MCP servers on Fly.io’s private network. Users can try the current open-source server with fly version upgrade to v0.3.117, configure an LLM, or run the MCP Inspector; apps, logs, machines, orgs, platform status, and volumes are roughed in.


[Newer posts](https://yomu.fyi/posts/page/177.md) · [Older posts](https://yomu.fyi/posts/page/179.md)
