Techlist.io - Korean Tech Blog Curator

toss4 min readCurated summary

Rubric Design and System Implementation for Skill Quality Management

Toss’s AI DX Team created a 30-item rubric to improve the quality of internal Skills used by coding agents. The central conclusion is that deterministic defects should be checked with rules, while semantic questions—especially whether a Skill will be triggered—should be evaluated by an LLM. This separation improves accuracy, cost efficiency, and developer feedback. ## Why Skill Evaluation Is Difficult Skills are artifacts that are both invoked and read by LLMs, so they lack the compiler and test-based validation available for code. - Defects can accumulate silently: - A Skill may never be invoked. - It may be invoked but have little practical effect. - Two especially common problems are: - **Trigger failure:** Trigger conditions are placed in the Skill body instead of its description. Agents inspect the description when deciding whether to invoke a Skill; the body is read only afterward. - **Format failure:** Invalid naming conventions, mismatched folder names, or malformed metadata can prevent the agent from recognizing the Skill at all. ## Rules for Deterministic and Semantic Checks The rubric explicitly separates the 30 checks into: - **17 rule-based checks** - Use regular expressions, counts, and AST parsing. - Handle objective issues consistently and cheaply. - **13 model-based checks** - Use an LLM for meaning-dependent judgments. - Evaluate questions such as whether a description adequately communicates when the Skill should be used. Mixing the two approaches causes problems: - LLMs may overlook clear format violations. - Regular expressions produce false positives when trying to understand varied natural-language intent. - Rule checks can run on every pull request at nearly no cost. - Model checks run only after structural blockers have passed, reducing LLM expenses. ## Rubric Structure and Severity The rubric contains six sections and 30 evaluation items. - Each item is classified as: - **BLOCKER** - **MAJOR** - **MINOR** - Results are summarized using grades from **S to F**. - Any single BLOCKER automatically produces an **F**. - The grade is primarily a compact signal for authors; merge eligibility is simplified to whether the result is F or not-F. ## Validity: Does the Skill Need to Exist? The validity section contains three MAJOR checks. - It asks whether the Skill: - Has a legitimate reason to exist. - Provides recurring or reusable value. - Offers something more useful than simply asking the coding agent to perform the task directly. - This section is intended to identify Skills that should not have been created in the first place. ## Structure: Catching Format Errors The structure section has eight checks, including five BLOCKER-level checks. The rule-based implementation verifies items such as: - Presence and parseability of YAML frontmatter. - `name` following lowercase kebab-case. - Consistency between the Skill’s `name` and its folder name. - Description length between 1 and 1,024 characters. - Absence of XML tags in the body. The checks collect all failures and return them together so authors can fix multiple problems from a single pull-request comment. Only an unrecoverable frontmatter parsing failure causes an immediate return. ## Trigger Design: Making Skills Discoverable The trigger section contains six checks, including one BLOCKER. - A description must communicate both: - **WHAT** the Skill does. - **WHEN** it should be used. - A detailed “when to use” section in the body is insufficient because the agent cannot see the body during invocation selection. - The team initially tried regular expressions to detect trigger signals such as: - “when” - “use when” - Korean expressions meaning “when using” or “at the time of.” - This produced failures because trigger intent can be expressed through emojis, indirect wording, and many other forms that keyword lists cannot cover. - The final approach assigns the semantic question—whether the description covers the body’s trigger conditions—to an LLM. The resulting design favors simple, repeatable rule checks for formal correctness and model-based evaluation only where natural-language meaning is unavoidable.

Read original(opens in new tab)
aws2 min readCurated summary

Try the new console experience in Amazon Bedrock, optimized for Anthropic- and OpenAI-compatible APIs | Amazon Web Services

Amazon Bedrock introduces a refreshed console centered on the `bedrock-mantle` inference engine, which supports Anthropic Messages, OpenAI Responses, and OpenAI Chat Completions APIs. The experience is designed to streamline model discovery, evaluation, application development, and production setup for GPT, Claude, and open-weight models. It complements the existing console, which remains available for features such as Agents, Knowledge Bases, Guardrails, fine-tuning, and `bedrock-runtime` APIs. ## Model Catalog and Comparison - Browse supported models in a unified catalog. - Compare up to three models by: - Capabilities and modalities - Context window and token limits - Pricing and input/output costs - Service quotas - Regional availability - Use side-by-side evaluations with identical prompts to compare model responses. ## Project-Based Workflow - Create projects that organize model assignments, evaluations, API keys, and application setup. - The project dashboard displays: - Inference requests and errors over selected date ranges - Recently used models - Total token usage - Tokens per minute - Requests per minute - Tokens per inference request - These metrics can guide model selection, prompt optimization, and workload consistency. ## Application Setup and Live Documentation - The console provides project-specific setup instructions for Anthropic and OpenAI SDKs. - Developers can select an SDK, programming language, and authentication method. - It generates terminal commands, `.env` configuration, and sample requests for quick testing. - Live API documentation automatically inserts the project’s model ID, Region, `bedrock-mantle` endpoint, and API key reference. - Documentation updates automatically when project models or settings change. ## AI Coding Agent Integration - Projects can connect coding agents such as Claude Code, Cline, Codex, Cursor, and OpenCode. - Setup instructions cover: - Installing the selected agent - Using AWS IAM credentials or Bedrock API keys - Configuring environment variables - Routing agent requests through Bedrock ## Availability The new console is available in Regions offering `bedrock-mantle`, including locations in the United States, Asia Pacific, Europe, and South America. Users can access it through the existing Bedrock console by selecting **Try the Bedrock Mantle Console**, while the traditional console remains available for fully managed Bedrock capabilities. Developers building with Anthropic- or OpenAI-compatible APIs can use the new console to move from model evaluation to application testing and deployment with less manual configuration.

Read original(opens in new tab)
cloudflare3 min readCurated summary

Your AI bill is out of control. Cloudflare can fix it now.

Cloudflare argues that uncontrolled AI spending stems from shared API keys, poor attribution, and defaulting to the most expensive models. Its AI Gateway now adds dollar-based spend limits, while a closed beta combines Cloudflare Access with identity-based budgets and routing. The goal is to make AI costs visible, attributable, and controllable without disrupting workflows. ### The AI Spending Problem - Companies encouraged aggressive AI adoption before establishing budgets or monitoring. - Shared API keys make it difficult to identify whether costs came from employees, teams, training pipelines, or runaway CI jobs. - Without routing rules or spending limits, users often choose frontier models for tasks that could use cheaper alternatives. - Visibility and controls are necessary to measure AI ROI and prevent waste. ### What AI Gateway Provides AI Gateway sits between applications and providers such as OpenAI, Anthropic, and Google. - Unified billing across providers and models. - Centralized logging of requests, token counts, and costs. - Response caching and rate limiting. - Content guardrails that can block PII and secrets before they reach models. - Previously, however, it lacked detailed attribution and budget controls. ### Dollar-Based Spend Limits - Budgets are measured in dollars rather than tokens and track cumulative request costs in real time. - Limits can be scoped by: - Model - Provider - Custom attributes such as user, team, or application - Budgets support daily, weekly, or monthly windows, including fixed and rolling periods. - When a limit is reached, requests can be blocked by default. - Dynamic Routes can instead redirect requests to a cheaper fallback model. - Spend limits are available in open beta across all AI Gateway plans through the dashboard or API. ### Identity-Driven Attribution and Policies Cloudflare Access can attach verified identity information to AI Gateway requests. - Authenticated user identities are extracted from Access JWTs and added as request metadata. - Organizations can track usage by employee, team, identity-provider group, or service. - Per-user budgets can give different spending limits to individual contributors and senior engineers. - Team policies can control which models different groups may use. - Access service tokens provide named identities for CI/CD pipelines and autonomous agents. - Logs include details such as email address, IdP group, or service-token name for export to analytics systems. - Configuration uses Cloudflare Access applications and existing identity-provider groups, without requiring custom Workers or manual JWT parsing. ### Cloudflare’s Internal Use - Cloudflare routes millions of requests and billions of tokens through AI Gateway each month. - It uses identity metadata to attribute costs, understand team usage, and manage budgets. - The company is making this internal approach available through the closed beta for identity-driven budgets and policies. Organizations should route AI traffic through a gateway, assign verified identities, set dollar-based budgets, and use model fallback rules to balance cost control with developer productivity.

Read original(opens in new tab)
google3 min readCurated summary

Unlocking dependable responses with Gemini Enterprise Agent Platform’s Agentic RAG

Google’s Agentic RAG framework extends traditional retrieval-augmented generation to handle complex, multi-source enterprise questions. Its multi-agent system plans searches, rewrites queries, routes them across data sources, and iteratively retrieves missing information instead of stopping after one pass. A Sufficient Context Agent verifies that the evidence supports every part of the request, improving factual accuracy by up to 34% on evaluated datasets. ## Why Standard RAG Falls Short - Conventional RAG typically performs one retrieval step before generating an answer. - Enterprise information is often distributed across separate data sources and requires multi-hop reasoning. - For example, a project document may contain a server ID, while the server’s specifications exist in another database. - Without a second search, the system may produce an incomplete answer or incorrectly conclude that the information is unavailable. ## Multi-Agent Planning, Rewriting, and Routing The framework divides research into specialized roles: - **Orchestrator:** Determines whether the request requires multiple steps and delegates tasks. - **Planner Agent:** Maps the information needed and identifies which sources to search. - **Query Rewriter:** Converts a broad question into targeted search queries. - **Search Fanout Agent:** Sends those queries to multiple retrieval systems. - **Synthesis Agent:** Combines the gathered evidence into the final response. This architecture is designed to coordinate complex searches rather than treat retrieval as a single matching operation. ## Iterative Retrieval with Sufficient Context The central innovation is persistence: the system detects when its evidence is incomplete and continues searching. - The **Sufficient Context Agent** reviews: - Retrieved text snippets - An intermediate draft answer - The original user request - It identifies which requested elements are supported and which are missing. - Instead of merely reporting insufficient information, it produces specific feedback describing the gap and suggesting what to search for next. - This feedback drives another query-rewriting and retrieval cycle. - Retrieval stops only when the system determines that the available context is sufficient for a grounded answer. ## Example: Patient Discharge Information For a request involving medications, dietary restrictions, and allergic reactions, the workflow proceeds as follows: - The Root Agent delegates the task to Pharmacy, Nutrition, and Clinical Notes sub-agents. - The initial search finds medication and diet information but no obvious allergy records. - The Sufficient Context Agent flags the missing allergy information. - The Query Rewriter generates focused searches such as “rashes” or “adverse events.” - A deeper search finds the missing evidence. - The system performs a final context check before producing the doctor’s summary. ## Evaluation Results - The framework was evaluated on the FramesQA benchmark, which contains multi-hop questions. - It reportedly improved factuality accuracy by up to 34% compared with standard approaches. - Google also tested it on proprietary internal datasets and observed better grounding and reasoning accuracy across several domain-specific tasks. - The approach is hosted through Gemini Enterprise Agent Platform’s Cross-Corpus Retrieval capability. Agentic RAG is most useful when answers depend on several documents, databases, or reasoning steps. For enterprise deployments, iterative retrieval and explicit context verification can reduce incomplete answers and unsupported guesses, though they add orchestration and retrieval overhead.

Read original(opens in new tab)
toss4 min readCurated summary

How the Toss Team Faces the AI Wave: AI Surf Day

Toss created **AI Surf Day**, a dedicated weekly time for employees to experiment with AI, share lessons, and redesign their workflows. Running on Fridays from April through June, the initiative aims to reduce the AI gap across technical and nontechnical roles by making experimentation collaborative and accessible. Its broader conclusion is that successful AI transformation depends less on formal programs than on culture, time, and people who actively share what they learn. ## AI Surf Day’s Purpose - Employees focus on their core work Monday through Thursday and reserve Friday for AI experimentation and practical application. - The program addresses anxiety and knowledge gaps, especially among nondevelopers who may struggle to identify useful AI information or find time to learn it. - Its concept comes from Jon Kabat-Zinn’s phrase: “You can’t stop the waves, but you can learn to surf.” - The goal is to help Toss become a company that works with AI as a foundation, not merely a workplace where individuals use AI tools. ## AI Surf Club - Employees can create or join informal groups focused on AI topics; roughly 200 clubs were formed at launch. - An **AI Antipattern Study** focused on failures and mistakes, turning participants’ experiences into a practical guide for avoiding common problems. - An **LLM Wiki** group explored how to organize scattered organizational knowledge across data engineering, machine learning, and business teams. - A beginner-focused “Step 0” group helped employees overcome basic technical barriers, such as installing agent tools and asking questions they felt were too fundamental. - A customer-protection team built an external-complaint monitoring portal in one month, along with automation for complaint-response drafts and classification. - A marketing team divided AI work into roles such as: - **Builder:** creates AI-powered tools and workflows - **Curator:** collects useful examples and resources - **Operator:** applies AI to repetitive work - **Scouter:** identifies new opportunities - The clubs emphasized reusable outputs and shared confidence, rather than isolated individual experimentation. ## AI Surf Weekly - Weekly sessions share successful internal AI applications, lessons learned, and current industry insights. - Toss connected employees with similar needs across different departments, enabling them to solve problems quickly by learning from existing internal examples. - Rather than prescribing specific tools, the program presents ideas and use cases that encourage employees to adapt solutions to their own work. - Examples included connecting a sales employee with an HR colleague who had built a similar tool, and pairing a marketer with a designer experienced in AI-powered automation. ## AI Surf Evangelists - Toss selected 142 employees across its affiliated companies and teams to promote AI adoption in their own organizations. - Evangelists were chosen through peer nominations, recognizing people who already shared useful discoveries and helped colleagues overcome AI-related obstacles. - Their responsibilities over three months include: - Reporting effective AI use cases - Sharing useful insights with colleagues - Hosting at least one meetup or workshop - Toss’s Culture team provides workshop templates and facilitation support. - Many teams have conducted workshops around redesigning their existing workflows with AI. - The program treats AI adoption as a team-level workflow redesign challenge, rather than simply measuring individual proficiency with AI tools. ## OpenAI Collaboration and Mini-Hackathon - Toss held a special AI Surf Day with OpenAI on May 15. - Hands-on sessions covered: - Codex-based development workflows for developers - ChatGPT Agent-based automation for nondevelopers - A 2.5-hour hackathon produced two notable projects: - An iOS workflow where Codex implements features, operates the simulator, tests the result, iterates on problems, and produces verification footage. - An agent that classifies thousands of daily Toss Place product records, sends reviewers links, and supports approval or rejection through an admin interface. - These projects demonstrated how AI can become a reusable agentic workflow rather than a one-time assistant. ## Culture Over Programs - Toss does not claim to have a fixed answer for managing AI’s rapid evolution. - The lasting value of AI Surf Day is the protected time for learning and experimentation, along with a culture where employees openly share results and failures. - Successful examples spread naturally across teams, while evangelist-led workshops translate experimentation into concrete changes in how work is performed. Organizations pursuing AI transformation can take a similar approach: create dedicated experimentation time, encourage peer-led learning, recognize existing champions, and focus on reusable workflow improvements rather than tool adoption alone.

Read original(opens in new tab)
naver1 min readCurated summary

What a Non-Developer Learned from Developing Full-Stack for a Month

The content is a minimal NAVER D2 landing page rather than a substantive technical blog post. It provides navigation links to D2 News, About D2, NAVER Developers, DEVIEW, OpenSource, and D2 STARTUP FACTORY, followed by a copyright notice. ## Available Sections - **D2 News**: Link to NAVER D2 news and updates. - **About D2**: Information about the D2 organization. - **NAVER Developers**: Resources for NAVER developers. - **DEVIEW**: Access to NAVER’s developer conference content. - **OpenSource**: Open-source projects or resources. - **D2 STARTUP FACTORY**: Information about NAVER’s startup support initiative. ## Footer - Copyright © NAVER Corp. All Rights Reserved. No technical topic, argument, or conclusion is included in the provided content.

Read original(opens in new tab)
cloudflare3 min readCurated summary

VoidZero is joining Cloudflare

VoidZero, the company behind Vite, Vitest, Rolldown, Oxc, and Vite+, is joining Cloudflare, with its entire team moving over. The projects will remain open source, MIT-licensed where applicable, vendor-agnostic, and community-driven. Cloudflare says the acquisition will provide more engineering resources while preserving portability and independent community governance. ## Open Source and Vendor Neutrality - Vite and the other VoidZero projects will continue to be developed in the open. - Applications built with Vite will remain deployable anywhere, not only on Cloudflare. - Evan You and the VoidZero team will continue leading the projects. - Cloudflare plans to invest engineering resources rather than redirect the projects toward its own platform. - Cloudflare is committing $1 million to a Vite ecosystem fund for maintainers and contributors, administered by the Vite core team. ## Vite as a Shared Foundation - Vite underpins a broad range of frameworks and tools, including Vue, SvelteKit, Nuxt, Astro, Solid, Qwik, Angular, React Router, and TanStack Start. - The authors describe Vite as a neutral foundation for the JavaScript ecosystem rather than a framework tied to one provider. - Cloudflare’s earlier investment in Astro is presented as an example of how it intends to support open-source projects while keeping them portable. ## The Environment API and Cloudflare Integration - Cloudflare and Vite began collaborating in 2024 on the Vite Environment API. - The API allows server-side code to run in non-Node.js runtimes during development. - Cloudflare’s Vite plugin runs application code locally inside **workerd**, the same open-source runtime used by Workers in production. - Services such as Durable Objects, D1, KV, R2, Workflows, Workers AI, Agents, Service Bindings, and Workers RPC can therefore be tested locally using the production runtime model. - The approach keeps Vite’s integration generic: other runtimes can implement their own provider-specific plugins without requiring a Cloudflare-specific development server. - Vite reportedly reaches about 129 million weekly downloads, while the Cloudflare Vite plugin approaches 14 million. ## AI-Driven Development - AI agents now use development tools directly, including project scaffolding, dev servers, testing, linting, formatting, error handling, and deployment workflows. - Agent-driven development increases the importance of: - Fast builds and tests - Fast linting and formatting - Structured, actionable errors - Consistent command-line interfaces - VoidZero’s tools—Vitest, Rolldown, Oxc, Oxlint, and Oxfmt—are designed for repeated, automated feedback loops. - Vite+ combines these tools behind a unified CLI and configuration model, reducing complexity for both developers and agents. - Cloudflare is using the tools internally: its dashboard runs on Vite, Oxlint is reducing engineering effort, and the Flue agent framework is adopting Vite and the official Cloudflare plugin. Cloudflare’s stated priority is to preserve the trust and portability that made Vite widely adopted. The practical takeaway is that the acquisition is intended to expand Vite’s resources and runtime integrations without turning it into a Cloudflare-only platform.

Read original(opens in new tab)
stripe3 min readCurated summary

New ways to turn global demand into revenue

Stripe argues that global expansion is increasingly accessible, but turning international reach into revenue requires solving localization, payment performance, money movement, and compliance challenges. Its Sessions announcements present an integrated set of tools for improving conversion, reducing fraud and costs, managing cross-border funds, and handling tax responsibilities. The overall conclusion is that businesses can scale internationally faster by relying on Stripe’s infrastructure rather than building country-specific systems themselves. ## Localize checkout to improve conversion - Checkout Studio helps businesses tailor checkout experiences to local markets using location data, industry recommendations, and performance tracking. - Stripe supports more than 125 payment methods, including Bizum, BLIK, TWINT, Sunbit, and Pay by Bank. - Stripe reports that showing even one geographically irrelevant payment method can reduce conversion by up to 15%. - Supporting locally preferred methods can significantly improve results: - Pix increases Brazilian conversion by up to 38.3%. - UPI increases Indian conversion by up to 19.8%. - Adaptive Pricing displays prices in customers’ local currencies and manages the associated conversion work. - Businesses see an average 5% increase in authorization rates and a 17.8% increase in cross-border revenue. - Subscription businesses see conversion improve by 4.7% and lifetime value per session increase by 5.4%. - Subscription pricing includes safeguards to keep renewal amounts consistent across billing cycles. ## Increase payment acceptance and reduce fraud - Authorization rates differ by region because of issuer behavior, payment networks, and local card preferences. - Stripe Authorization Boost uses real-time retries, issuer-specific messaging, Data Only authentication, and A/B testing to improve acceptance. - Businesses see an average authorization increase of 3.8%, while some customers reduce processing costs by up to 3.3%. - Stripe Radar detects and blocks risky transactions across cards, bank debits, wallets, buy-now-pay-later services, and stablecoin payments. - In a private preview, Radar reduced fraud by an average of 71% across Klarna, PayPal, Affirm, and Cash App Pay. ## Simplify cross-border money movement - Stripe Treasury lets businesses store, convert, and send funds in multiple currencies and stablecoins from a single account. - Businesses can hold different currencies without maintaining multiple bank accounts, local entities, or converting funds unnecessarily. - Currency conversion is available instantly, around the clock, with transparent rates. - Treasury supports payouts to more than 160 countries and enables employee cards funded directly from Treasury balances. - Stablecoin capabilities allow marketplaces and sellers to accept, hold, spend, and convert stablecoins into currencies such as ARS, COP, EUR, MXN, PHP, and USD. - Treasury operates in more than 120 countries, with stablecoin-backed balances available in 100 countries and planned expansion to 41 more by the end of 2026. ## Handle tax and regulatory compliance - International expansion requires navigating different tax systems, registration thresholds, invoicing rules, filing obligations, and dispute timelines. - Stripe Tax supports businesses that remain the merchant of record by automating: - Tax calculation and collection - Threshold monitoring - Registrations - Filing - It covers more than 100 countries and over 600 product categories, and is used by more than 67,000 companies. - Stripe Managed Payments acts as the merchant of record, handling tax registration, collection, and remittance in more than 80 countries. - Managed Payments also provides fraud protection, dispute management, customer support, and localized checkout. - The service is now available for digital goods and has supported companies including Unity, RevenueCat, and Lovable. Stripe’s broader recommendation is to treat international growth as an integrated operational problem rather than a series of separate country launches. Businesses can use localized checkout, automated payment optimization, Treasury, Stripe Tax, or Managed Payments to reduce infrastructure and compliance work while expanding into new markets.

Read original(opens in new tab)
datadog3 min readCurated summary

When failover isn’t safe: Building high-availability PostgreSQL on Kubernetes

Datadog’s gameday testing exposed a PostgreSQL failure mode in which network latency caused replication lag to grow until no standby could be safely promoted. Although the clusters remained writable, they could not fail over without risking data loss, forcing operators to wait for connectivity and replicas to recover. Datadog’s solution was to redesign failover candidates around synchronous replication coordinated by Patroni, balancing stronger durability with acceptable write latency. ## The Zonal Failure That Exposed the Weakness - A simulated availability-zone failure introduced network latency in a staging environment. - Several Kubernetes-based PostgreSQL clusters had primary nodes in the affected zone. - Communication between primaries and replicas degraded, causing: - Rapidly increasing replication lag - Stalled writes - Applications serving stale data - No replica being current enough for safe promotion - The clusters prioritized continued writes over durability, leaving them writable but unable to fail over safely. ## Baseline PostgreSQL Architecture - Each cluster uses a single-writer design: - One active leader handles writes. - Two standby nodes are reserved for failover and do not serve application traffic. - A separate read-replica pool handles read-only traffic and scales independently. - Read replicas are intentionally excluded from failover candidates. - Patroni manages replication, leader elections, and failover. - ZooKeeper acts as Patroni’s distributed configuration store, tracking: - The current leader lock - Cluster configuration - Member replication state and latest LSN - ZooKeeper’s ephemeral leader key ensures that only one node can become primary. - During partitions, Patroni favors safety by pausing or demoting nodes that cannot verify cluster state. ## Why Failover Was Not Safe - Patroni checks replication lag before promoting a standby using `maximum_lag_on_failover`. - During the gameday, all eligible standbys exceeded that threshold. - Patroni correctly rejected promotion because each candidate could have been missing committed transactions. - The cluster therefore had no safe writable primary, even though the original leader was impaired. - The failure was a consequence of asynchronous replication and network latency, not a failure in Patroni’s safety mechanisms. ## Asynchronous Versus Synchronous Replication - **Asynchronous replication**, used originally: - Lets the leader commit and respond without waiting for replicas. - Provides low write latency and high throughput. - Can lose transactions committed on the leader but not yet copied to a standby. - **Synchronous replication**: - Requires the leader to receive acknowledgment from at least one replica before confirming a transaction. - Reduces the chance that a failover candidate is significantly behind. - Provides stronger durability, but may increase write latency when replicas experience network or availability problems. ## The Redesigned Approach - Datadog reworked its PostgreSQL deployment so failover candidates use synchronous replication. - Patroni coordinates these replicas and continues to enforce safe leader election. - The design aims to make failover both automatic and safe while limiting performance impact. - Benchmarking and failure testing were used to evaluate the trade-off between durability and latency. Datadog’s experience demonstrates that asynchronous replication can leave a system operational but unable to fail over during network disruption. For clusters where data durability and automatic recovery are critical, synchronous replication for designated failover candidates offers a safer architecture, provided its latency and availability costs are measured carefully.

Read original(opens in new tab)
discord2 min readCurated summary

Discord Patch Notes: June 4, 2026

Discord’s June 4, 2026 patch focuses on usability, performance, accessibility, and bug fixes across desktop, Android, and iOS. Major updates include a mobile call-confirmation prompt, an 8% improvement in median desktop startup time, a redesigned Account settings page, and a clearer voice-invite embed. The release also addresses numerous layout, navigation, accessibility, and platform-specific issues. ## New Features and Improvements - **Mobile call confirmation** - Adds a confirmation step after tapping call buttons in direct messages. - Helps prevent accidental calls. - **Faster desktop startup** - Improved median startup times by approximately 8%, or around 650 milliseconds. - Additional performance work is planned. - **Redesigned Account settings** - Updates visuals and wording to match the broader User Settings redesign. - Moves Devices, Family Center, Account Standing, and Multi-Factor Authentication into nested Account pages. - **Improved voice-invite embeds** - Displays the relevant server and channel. - Shows the number of users currently in the voice channel. - Adds animated avatars and hover details for usernames. ## General Bug Fixes - Fixed Android custom status text crowding the clear button. - Corrected iOS event behavior involving external Markdown links, mentions, sharing, QR login, themes, notifications, and profile images. - Fixed guest server invites getting stuck in onboarding or application flows. - Improved handling of long nicknames, wrapped time indicators, event descriptions, community announcements, and high zoom levels on desktop. - Corrected inaccurate Android search results when combining `has:forward` with Media, Links, or Files filters. - Fixed mobile navigation issues, including the Set Status back button. - Prevented empty Bluesky handle submissions from bypassing form validation. - Removed incorrect or unreachable keyboard shortcut hints and scrollbars. - Improved tab navigation and focus behavior for accessibility. - Fixed visual inconsistencies involving rounded corners, themes, font scaling, gradients, cursors, borders, and tinting. - Corrected invite, server discovery, event, and profile interactions that opened the wrong view or failed silently. - Improved behavior at high zoom levels and in smaller windows, including Shop filters and Event Details modals. The patch is intended to make Discord more reliable and polished across platforms. Users may not receive every fix immediately because the changes are still rolling out individually.

Read original(opens in new tab)
google3 min readCurated summary

Towards passive heart health monitoring via smartphone camera

PHRM is a Google Research system that passively estimates heart rate and daily resting heart rate using short facial videos captured by a smartphone’s front-facing camera after face unlock. It applies remote photoplethysmography and efficient deep learning, achieving wearable-comparable accuracy in laboratory and real-world settings. A central contribution is its deliberate validation across skin tones, including substantial representation of participants with dark skin. ## Passive Heart Monitoring with a Smartphone - PHRM records approximately eight seconds of facial video during everyday phone use. - It estimates heart rate from changes in how light reflects from the skin as blood pulses through facial tissue. - The system uses: - Temporal shift convolutional neural networks for efficient on-device prediction. - Confidence scores to filter unreliable measurements. - Kalman filtering and daily aggregation to estimate resting heart rate. - Unlike earlier smartphone approaches requiring a finger over the camera, PHRM works passively in the background. ## Designing for Skin-Tone Inclusivity - Existing remote PPG research often relied on small, controlled studies and underrepresented people with dark skin. - Google trained PHRM on more than 350,000 video clips from nearly 700 participants across laboratory and real-world conditions. - Dataset targets based on the Monk Skin Tone scale ensured: - At least 25% representation of light and medium skin tones. - At least 33% representation of dark skin tones. - The researchers required heart-rate error differences between skin-tone groups to remain below five percentage points. ## Laboratory Validation - The model was trained using synchronized facial video and ECG recordings from 365 diverse participants. - On a separate 104-person test set, PHRM achieved mean absolute percentage error below 10% for every skin-tone group after confidence filtering. - It outperformed 15 leading published remote-PPG models and was the only evaluated model to meet the under-10% target across all groups. ## Real-World Smartphone Study - In an eight-day free-living study, 231 participants used their own phones normally while wearing an ECG chest strap and Fitbit Charge 6. - The research app captured an average of 231 facial clips per participant per day after face unlock. - Participants reviewed and explicitly authorized uploads each day; recordings were sent to secure, encrypted servers. - On a held-out group of 101 participants: - Overall MAPE was 6.09% after confidence gating. - MAPE was 5.04% for light skin, 5.12% for medium skin, and 7.84% for dark skin. - The average underestimation was only 0.64 beats per minute. - The model again outperformed the 15 comparison systems. ## Resting Heart Rate and Research Access - By combining reliable heart-rate estimates throughout the day, PHRM produced daily resting-heart-rate estimates with mean absolute error below five beats per minute compared with a wearable tracker. - Google released the largest and most diverse publicly available smartphone-video dataset for remote PPG research, along with a pre-trained “PHRM-mini” model. - Access is available to qualified researchers. PHRM demonstrates that smartphones could broaden access to passive cardiovascular monitoring without requiring dedicated wearable hardware. Before clinical use, the system would still require continued validation, careful privacy protections, and assessment across additional devices and populations.

Read original(opens in new tab)
aws3 min readCurated summary

Improve your application resilience with Amazon Cognito multi-Region replication | Amazon Web Services

Amazon Cognito multi-Region replication improves authentication resilience by maintaining synchronized user data, credentials, configurations, and machine secrets in a secondary AWS Region. During a regional outage, applications can redirect traffic while users continue using existing credentials and sessions, though registration and profile updates are unavailable during failover. The feature also adds customer managed AWS KMS keys for consistent, customer-controlled encryption across Regions. ## Challenges with Regional Failover - Custom replication solutions previously required significant engineering effort. - Manual user-data transfers introduced security and consistency risks. - Users could be forced to reset passwords or authenticate again after a regional switch. - Machine-to-machine systems required new app clients, application reconfiguration, and updated OAuth resource trust settings. ## How Multi-Region Replication Works - Replication is one-way, from a primary Region to a secondary Region. - The replica includes: - User profiles and credentials - User pool configuration - Machine-to-machine secrets - The secondary pool is read-only and remains available for authentication. - Existing sessions continue uninterrupted. - Users can authenticate with existing credentials, and either Region recognizes access tokens issued by the other. - Supported authentication methods include: - Social identity providers - SAML and OIDC federation - API authorization flows - Machine-to-machine authentication - New registrations and profile changes are unavailable while operating from the replica. ## Customer Managed KMS Keys - A multi-Region customer managed key is required before replication can be configured. - The key must be replicated into both the primary and secondary Regions. - Its policy must grant Amazon Cognito permission to use the key. - Customer managed keys provide consistent encryption across Regions and greater control over encryption policies. ## Configuration Process - The console guides administrators through three main steps: - Select and configure the customer managed KMS key. - Configure multi-Region OIDC issuer endpoints. - Select and create the replica Region. - Client applications must be updated with the new OIDC endpoints. - Server-side applications require redeployment, while mobile applications require updated store submissions. - After the replica is prepared, an administrator must manually activate it. ## Additional Regional Resources - Lambda functions used for custom authentication, SMS, or email must be deployed and configured in the secondary Region. - Logging and AWS WAF settings must also be recreated there. - Teams should verify that all supporting authentication infrastructure is available before failover. ## Health Checks and Failover - Both regional endpoints remain active and ready to serve traffic. - Applications should define health checks based on error rates, latency, or service alerts. - DNS can redirect traffic to the secondary Region when failover criteria are met. - Teams should test failover during low-traffic periods, potentially routing only a small percentage of traffic initially. - Managed login and federation with custom domains can use Amazon Route 53 health checks for built-in traffic routing. ## Pricing and Availability - Replication is available as an add-on for Cognito Essentials and Plus tiers. - User authentication costs: - $0.0045 per monthly active user per replica Region for Essentials - $0.006 per monthly active user per replica Region for Plus - M2M replication adds 30% to standard successful-token pricing. - The feature is available across selected Regions in North America, Europe, Asia Pacific, Canada, Africa, and South America. Organizations needing resilient authentication should pair Cognito replication with multi-Region KMS keys, replicated supporting services, tested health checks, and an automated or well-practiced DNS failover process.

Read original(opens in new tab)
meta3 min readCurated summary

Lights Out, Systems On: Validating Instant Power Loss Readiness

Meta’s Instantaneous PowerLoss Storm is a disaster-readiness testing program designed to prepare data centers for sudden, zero-notice power loss. It extends existing fault-tolerance mechanisms across facilities, servers, storage, compute, and the Twine orchestrator, while addressing region-wide failures and autonomous recovery. Through incremental testing and carefully defined tradeoffs, Meta aims to make losing an entire region as manageable as losing a smaller fault domain. ## Defense-in-Depth for Instant Failures - Power-loss tolerance was built into the full data-center stack, including mechanical and electrical systems, server racks, storage, compute, and Twine. - Batteries and Power Loss Siren (PLS) preserve in-memory data when racks lose power. - Twine services use region-wide asynchronous unavailability events (UEs) to coordinate shutdown and recovery. - Existing mechanisms had been tested against smaller fault domains, but region-wide failures introduced new challenges involving scale, replica placement, and autonomous startup. ## Solving Region Bootstrap Problems - Restarting a region may require millions of services to start simultaneously and discover their dependencies. - Circular dependencies among Twine control-plane services—such as Scheduler, Allocator, Broker, and Zelos—could prevent the orchestrator from starting itself. - Belljar CI/CD tests continuously identify critical startup dependencies before deployment. - A Twine recovery kit, supported by Belljar and Twrko, provides a manual “jumpstart” mechanism for breaking unexpected dependency cycles. - Meta also encountered a “boomerang” problem in which UEs shut down the control-plane services responsible for generating and distributing those signals. - The simpler solution was to let control-plane services ignore power-related shutdown UEs, preventing orphaned services that could not be reaped or recovered. ## Balancing Reliability and Engineering Velocity - Absolute tolerance to instant power loss could require costly or overly complex infrastructure and might create false positives during normal operations. - Meta defined unacceptable impacts as: - Storage or database data loss - Permanent damage to data-center facilities - Sustained disruption beyond one region - The company accepted bounded risks such as transient service errors, limited rack failures, and temporary staleness in routing or region-availability information. - Issues were considered tolerable when they could be remediated after the incident within a reasonable mean time to respond (MTTR). ## Incremental Validation Through PowerLoss Storms - Because testing a full region carried significant risk, Meta validated readiness progressively: - Dependency tests in new and pre-production regions - Exercises in shadow regions that mirror production - Tests in small production regions - Full tests in large regions supporting storage, AI, and data-warehouse workloads - During a Storm, Meta injects a power-supply fault to immediately de-energize an entire region. - After a short, realistic MTTR, remedial drain actions isolate the region from global controllers and schedulers. - The tests avoid preemptive preparation so they accurately represent an unexpected power failure. - Repeated exercises train both systems and engineers to handle regional loss with the resilience normally expected from smaller fault domains. Meta’s approach is to expand disaster readiness gradually: define unacceptable consequences, build layered recovery mechanisms, test at increasing scale, and use each exercise to improve both architecture and operational practice.

Read original(opens in new tab)
cloudflare3 min readCurated summary

Enforcing the First AS in BGP AS PATHs

Forged BGP AS_PATHs can let attackers impersonate legitimate networks, misdirect traffic, and conceal their true origin. Recent hijacks suggest some providers accept routes whose first AS does not match the customer peer that advertised them. Enforcing this “First AS” relationship check is a straightforward defense that complements RPKI and ASPA. ## Route Hijacks Involving Forged Paths - A reported hijack of Orange’s `90.98.0.0/15` included the path: `48237 1299 199524 270118 17072 41128`. - The path implied implausible commercial relationships: - `AS41128` was an unused Orange ASN. - `AS17072` was a Mexican ISP. - `AS270118` was a Mexican hosting provider. - `AS199524` was Gcore. - `AS1299` was Arelion, a Tier 1 provider. - Another hijack included Cloudflare’s ASN in the path: `199524 270118 17072 13335 36429`. - Cloudflare confirmed it had no adjacency with the unused `AS36429`, indicating that the path was fabricated. - The routes appeared to terminate behind Gcore rather than actually traversing the networks listed in the forged path. - The suspected attack sequence was: - Announce parked or unused prefixes. - Completely forge the AS_PATH without including the attacker’s ASN. - Send the route to Gcore. - Rely on the provider accepting the route without verifying its first AS. - Once accepted, the forged route could be propagated to upstream providers and peers. ## Why First AS Checking Matters - The BGP AS_PATH records the networks a route is expected to traverse. - It supports: - Route selection. - Loop prevention. - Operator routing policies. - BGP permits AS_PATH manipulation for legitimate purposes, such as AS prepending, but the same flexibility enables attackers to shorten or fabricate paths. - First AS enforcement verifies that the first AS in an advertised path matches the ASN of the customer or peer that sent the update. - Without this check, a customer can advertise a path that appears to originate from another network. ## Limits of RPKI and ASPA Alone - RPKI ROAs validate whether an origin ASN is authorized to announce a prefix. - ASPA validates provider-to-customer relationships. - However, an attacker may still bypass these mechanisms by: - Claiming an RPKI-valid origin ASN. - Including a legitimate ASPA provider in the forged path. - Omitting the attacker’s own ASN when the receiving provider does not enforce First AS. - In the example, a route forged to appear as though it originated from `AS64506` could remain RPKI-valid and attract traffic if `AS64502` accepted it without checking the peer’s first AS. ## Practical Recommendation Network operators should enable strict First AS checking on BGP sessions, alongside RPKI route-origin validation and ASPA deployment. These controls address different parts of the attack: RPKI validates the origin, ASPA checks authorized provider relationships, and First AS enforcement prevents a peer from presenting a path that does not begin with its own ASN.

Read original(opens in new tab)
netflix4 min readCurated summary

Dynamic Repartitioning for Time Series Workloads

Netflix’s TimeSeries Abstraction uses Cassandra to ingest and query petabytes of temporal data with millisecond-scale latency, but growing partitions can cause seconds-long reads, timeouts, and resource exhaustion. Its initial time-based partitioning works well when workload estimates are accurate, yet traffic changes and outlier IDs can make partitions too large or too small. Netflix therefore developed automated time-slice repartitioning and, for isolated hot IDs, asynchronous dynamic partitioning at the individual-ID level. ## Cassandra and the Wide-Partition Problem - Cassandra provides: - High-throughput, low-latency reads and writes - Cost-effective operation at scale - Strong operational familiarity within Netflix - TimeSeries datasets accumulate events over time, creating potentially very wide partitions. - Wide partitions can lead to: - Read latencies increasing from milliseconds to seconds - Request timeouts - Garbage-collection pauses - High CPU utilization and thread queueing - Scaling Cassandra clusters can help, but Netflix sought more targeted solutions. ## Initial Time-Based Partitioning - TimeSeries divides data into discrete time slices to keep partitions manageable. - This structure also makes it efficient to: - Query data by time - Drop old data without creating large tombstone problems - At dataset creation, users provide expected workload characteristics. - Netflix’s provisioning pipeline uses those inputs, along with Monte Carlo simulations, to select infrastructure and partition settings. ## Why Static Provisioning Falls Short - Workloads may be unknown or inaccurately estimated during initial provisioning. - Traffic patterns, client behavior, and product needs can change over time. - A small number of TimeSeries IDs may generate far more events than the rest. - Time slices provide a way to change partitioning for future data, but manually updating thousands of datasets is impractical. ## Repartitioning Entire Time Slices - Cassandra introspection tools, such as `nodetool tablehistograms`, expose partition-size distributions. - Netflix added a background worker that: - Monitors partition histograms for time slices - Publishes observations through a Cassandra virtual table - Detects partitions that are too large or too small - Calculates a new partitioning adjustment factor - Target partition density is typically between 2 MiB and 10 MiB, depending on workload. - The worker updates the strategy for future time slices. For example, it may expand a `time_bucket` interval from 60 seconds to 604,800 seconds when partitions are too small. - This approach reduced read latency and timeouts caused by thread queueing. - Its limitation is that it changes partitioning broadly and is ineffective when only a minority of IDs produce oversized partitions. ## Handling Isolated Problem IDs Netflix considers several responses when only some IDs are problematic: - **Do nothing:** Appropriate when wide partitions do not affect application-level metrics. - **Partial returns:** Abort a request after it exceeds a latency SLO while returning data already collected; useful when latency matters more than completeness. - **Block IDs:** Prevent exceptionally bad test, spam, or otherwise harmful IDs from destabilizing the system. - These options are inadequate when valid, important IDs must return all their data despite generating large partitions. ## Dynamic Partitioning per ID Dynamic partitioning addresses outliers by splitting partitions for individual TimeSeries IDs rather than modifying an entire table. The asynchronous pipeline has three stages: - **Detection:** The read path identifies partitions that exceed a configured size threshold. - **Planning and splitting:** The system asynchronously plans and executes splits into appropriately sized partitions. - **Serving reads:** Once splits are available, read requests are transparently rerouted to them. During each read, the server tracks the bytes retrieved for a partition. If usage exceeds the threshold, it emits a detection event to Kafka containing information such as: - The Cassandra time-slice table - The affected TimeSeries ID - The existing time and event bucket - Whether the partition is immutable - A version identifier ## Practical Recommendation Use whole-time-slice repartitioning when an entire dataset is systematically over- or under-partitioned. For isolated but important high-volume IDs, dynamic per-ID partitioning provides a more precise way to control latency without disrupting the rest of the dataset.

Read original(opens in new tab)