# Flow

Published articles for Flow.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Creating Query Components with Apollo

DevFeed: [Creating Query Components with Apollo](<https://devfeed.tech/articles/creating-query-components-with-apollo-27371.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/creating-query-components-with-apollo.htm>)

Author: Khan Academy

Published: 2017-06-12T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [React](<https://devfeed.tech/topics/react.md>), [React Component](<https://devfeed.tech/topics/react-component.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [apollo](<https://devfeed.tech/tags/apollo.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [examples](<https://devfeed.tech/tags/examples.md>), [flow](<https://devfeed.tech/tags/flow.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [news](<https://devfeed.tech/tags/news.md>), [react](<https://devfeed.tech/tags/react.md>), [react-component](<https://devfeed.tech/tags/react-component.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

This tutorial explains a Query Components pattern for React applications using Apollo and GraphQL. The pattern separates data definitions from presentational components, allowing the presentational layer to remain independent of Apollo and GraphQL. Examples cover filtering by postal code, loading and error states, empty results, and Flow types.

### Source excerpt

By Brian Genisio Here at Khan Academy, we've been using GraphQL in several projects with great success. GraphQL ... Read more

## Add sign-in to an Android app with the WorkOS Android SDK

DevFeed: [Add sign-in to an Android app with the WorkOS Android SDK](<https://devfeed.tech/articles/add-sign-in-to-an-android-app-with-the-workos-android-sdk-16062.md>)

Original publisher: [Read original article](<https://workos.com/blog/sign-in-to-an-android-app-with-the-workos-android-sdk>)

Author: WorkOS

Published: 2026-08-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [pkce](<https://devfeed.tech/topics/pkce.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [API keys](<https://devfeed.tech/topics/api-keys.md>), [Security](<https://devfeed.tech/topics/security.md>), [Maven Central](<https://devfeed.tech/topics/maven-central.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [api-keys](<https://devfeed.tech/tags/api-keys.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [pkce](<https://devfeed.tech/tags/pkce.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [security](<https://devfeed.tech/tags/security.md>), [sign-in](<https://devfeed.tech/tags/sign-in.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial shows how to add WorkOS AuthKit sign-in to a Kotlin Android app using the WorkOS Android SDK. It covers the Gradle dependency, Chrome Custom Tab authentication, custom-scheme redirects, PKCE token exchange, session storage and refresh, and logout without embedding a client secret in the APK.

### Source excerpt

Build a complete AuthKit flow in Kotlin, from Gradle dependency to signed-out state, with no client secret in your APK.

## OpenAI cuts GPT-5.6 pricing and adds Fast mode to the API

DevFeed: [OpenAI cuts GPT-5.6 pricing and adds Fast mode to the API](<https://devfeed.tech/articles/openai-cuts-gpt-5-6-pricing-and-adds-fast-mode-to-the-api-16500.md>)

Original publisher: [Read original article](<https://appwrite.io/blog/post/openai-cuts-gpt-56-pricing-and-adds-fast-mode-to-the-api>)

Author: Aishwari Pahwa

Published: 2026-07-31T00:00:00Z

Content type: release

Language: en

Sources: [Appwrite Blog](<https://devfeed.tech/sources/appwrite-blog.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>)

Tags: [2](<https://devfeed.tech/tags/2.md>), [2026](<https://devfeed.tech/tags/2026.md>), [ai](<https://devfeed.tech/tags/ai.md>), [announcement](<https://devfeed.tech/tags/announcement.md>), [api](<https://devfeed.tech/tags/api.md>), [flow](<https://devfeed.tech/tags/flow.md>), [model](<https://devfeed.tech/tags/model.md>), [models](<https://devfeed.tech/tags/models.md>), [openai](<https://devfeed.tech/tags/openai.md>), [pricing](<https://devfeed.tech/tags/pricing.md>)

### AI overview

OpenAI reduced GPT-5.6 Luna API pricing by 80% and Terra pricing by 20% starting July 30, 2026, while keeping Sol pricing unchanged. It also replaced Priority Processing with Fast mode for Sol, which the article says can deliver up to 2.5 times faster latency-sensitive requests.

### Source excerpt

GPT-5.6 Luna is now 80 percent cheaper and Terra 20 percent cheaper from July 30. Here is the new API pricing plus what Fast mode replaces for Sol users.

## The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents

DevFeed: [The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents](<https://devfeed.tech/articles/the-microsoft-365-copilot-agent-s-playbook-a-practical-livestream-series-for-building-better-agents-23835.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/blog/the-microsoft-365-copilot-agents-playbook-a-practical-livestream-series-for-building-better-agents/>)

Author: Shavonna Jackson

Published: 2026-07-23T19:03:53Z

Content type: release

Language: en

Sources: [Developer Blogs](<https://devfeed.tech/sources/developer-blogs.md>)

Topics: [microsoft 365](<https://devfeed.tech/topics/microsoft-365.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [build](<https://devfeed.tech/tags/build.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [developers](<https://devfeed.tech/tags/developers.md>), [evals](<https://devfeed.tech/tags/evals.md>), [evaluation](<https://devfeed.tech/tags/evaluation.md>), [extend](<https://devfeed.tech/tags/extend.md>), [flow](<https://devfeed.tech/tags/flow.md>), [microsoft-365-copilot](<https://devfeed.tech/tags/microsoft-365-copilot.md>), [microsoft-for-developers](<https://devfeed.tech/tags/microsoft-for-developers.md>)

### AI overview

Microsoft is launching a four-part livestream series about building, extending, grounding, and evaluating declarative agents for Microsoft 365 Copilot. The sessions include presentations, demos, and live Q&A for developers, makers, architects, and technical teams.

### Source excerpt

Building on Microsoft 365 Copilot? Here's your playbook. Declarative agents are quickly becoming one of the most exciting ways to extend Microsoft 365 Copilot and bring organizational knowledge, workflows, and tools directly into the flow of work. But as agent capabilities grow, so does the need for practical guidance: How do you build agents that [...] The post The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents appeared first on Microsoft for Developers.

## Irreducible loops

DevFeed: [Irreducible loops](<https://devfeed.tech/articles/irreducible-loops-31129.md>)

Original publisher: [Read original article](<https://maskray.me/blog/irreducible-loops>)

Published: 2026-07-12T07:00:00Z

Content type: tutorial

Language: en

Sources: [MaskRay](<https://devfeed.tech/sources/maskray.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Code](<https://devfeed.tech/topics/code.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [code](<https://devfeed.tech/tags/code.md>), [entries](<https://devfeed.tech/tags/entries.md>), [flow](<https://devfeed.tech/tags/flow.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [loops](<https://devfeed.tech/tags/loops.md>), [static](<https://devfeed.tech/tags/static.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

This technical post explains why dominator-based natural-loop detection fails for irreducible control-flow graphs, which can have multiple entries. It describes reducibility, the irreducible three-node pattern, and a DFS-based loop-nesting forest using Havlak's convention.

### Source excerpt

The dominator tree lets us identify natural loops: a back edge T->H whose head H dominates its tail T defines a loop with the single entry H. This works only for reducible control flow graphs. Optimized machine code and decompiler output routinely contain irreducible loops, which have more than one entry and thus no dominating header, so the dominator-based method cannot see them. This post builds a loop-nesting forest for an arbitrary CFG with the single-pass depth-first search of 韦韬、毛剑、邹维、陈宇(Tao Wei, Jian Mao, Wei Zou & Yu Chen) A New Algorithm for Identifying Loops in Decompilation, SAS 2007 (The 14th International Static Analysis Symposium).

## Achieving Fast Inner Dev Loops with Gradle: Configuration Cache and Beyond

DevFeed: [Achieving Fast Inner Dev Loops with Gradle: Configuration Cache and Beyond](<https://devfeed.tech/articles/achieving-fast-inner-dev-loops-with-gradle-configuration-cache-and-beyond-24617.md>)

Original publisher: [Read original article](<https://blog.gradle.org/fast-inner-dev-loops-with-gradle>)

Author: Alex Semin

Published: 2026-05-20T04:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>), [build performance](<https://devfeed.tech/topics/build-performance.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [build-tool](<https://devfeed.tech/tags/build-tool.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [context](<https://devfeed.tech/tags/context.md>), [developer-productivity](<https://devfeed.tech/tags/developer-productivity.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [parallelism](<https://devfeed.tech/tags/parallelism.md>), [productivity](<https://devfeed.tech/tags/productivity.md>)

### AI overview

This article explains how Gradle is working to accelerate inner developer loops. It describes the shift from execution time to configuration time as the main build bottleneck in large codebases, while highlighting configuration cache, incremental builds, build cache, and parallelism as approaches to reduce waiting and preserve developer flow.

### Source excerpt

How many engineers in your organization have to sit idle for 10 or more minutes just to rebuild the app locally after a small change? If you're an engineering leader, build engineer, or part of a developer productivity team, you're not alone in facing this challenge. Building complex software is inherently demanding, but the time your developers spend waiting has a profound impact beyond just the literal minutes lost. It fundamentally disrupts their psychological flow. "There are like these time scales of psychological flow, right? So if something takes longer than a minute, you already start planning for it... you suffer from context switch as well. If it's 1 second, that's where we want to be right in that seamless state of flow. And if it's less than one second, then you feel it's like magic... productive developers are happy developers." -- Rodrigo Oliveira When developers have to wait, their attention drifts, and the cost of context switching destroys their momentum. Our goal as enablers of developer productivity should be to eliminate this friction, bringing that feedback loop as close as possible to the "magical one second". In a recent presentation at KotlinConf 2025, Gradle engineers Rodrigo Oliveira and Alex Semin detailed how Gradle Build Tool is evolving to keep developers in that productive, happy "flow state". By tackling the most significant bottlenecks in modern software builds, Gradle is paving the way for incredibly fast inner developer loops. If you prefer to watch the presentation recording, you can find it here. The shifting bottleneck: From execution to configuration On every invocation, Gradle goes through three distinct phases: initialization, configuration, and execution. Historically, when we optimized Gradle builds, we focused almost exclusively on the execution phase. This is when the majority of work expected by a developer happens: production sources compilation, test execution, etc. For years, execution was the longest phase. We tackled thi

## OAuth Clearly Explained

DevFeed: [OAuth Clearly Explained](<https://devfeed.tech/articles/oauth-clearly-explained-18034.md>)

Original publisher: [Read original article](<https://blog.levelupcoding.com/p/oauth-clearly-explained>)

Author: Nikki Siapno

Published: 2026-05-01T05:56:21Z

Content type: tutorial

Language: en

Sources: [Level Up Coding System Design Newsletter](<https://devfeed.tech/sources/level-up-coding-system-design-newsletter.md>)

Topics: [OAuth](<https://devfeed.tech/topics/oauth.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [API](<https://devfeed.tech/topics/api.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [flow](<https://devfeed.tech/tags/flow.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [resource](<https://devfeed.tech/tags/resource.md>), [security](<https://devfeed.tech/tags/security.md>), [tokens](<https://devfeed.tech/tags/tokens.md>)

### AI overview

An explanation of OAuth as a permission and delegated-access system rather than a login mechanism. It describes the roles in an OAuth transaction, the authorization-code flow, and the distinct purposes of access and refresh tokens, while highlighting security risks from poor token handling and confusing authorization with identity.

### Source excerpt

(4 min read) | OAuth flow, three different tokens, three different jobs, what OAuth actually solves, where OAuth systems usually break, and more

## Team Topologies

DevFeed: [Team Topologies](<https://devfeed.tech/articles/team-topologies-27878.md>)

Original publisher: [Read original article](<https://gagor.pro/book/2026/team-topologies/>)

Author: Tom

Published: 2026-04-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [DevOps](<https://devfeed.tech/topics/devops.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [business](<https://devfeed.tech/tags/business.md>), [cognitive-load](<https://devfeed.tech/tags/cognitive-load.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [conway-s-law](<https://devfeed.tech/tags/conway-s-law.md>), [flow](<https://devfeed.tech/tags/flow.md>), [leadership](<https://devfeed.tech/tags/leadership.md>), [management](<https://devfeed.tech/tags/management.md>), [platform](<https://devfeed.tech/tags/platform.md>), [team-topologies](<https://devfeed.tech/tags/team-topologies.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

This article summarizes Team Topologies by Matthew Skelton and Manuel Pais, focusing on organizational design for software teams. It explains the four team types, three interaction modes, cognitive load, Conway's Law, the Reverse Conway Maneuver, and the Thinnest Viable Platform.

### Source excerpt

Team Topologies Organizing Business and Technology Teams for Fast Flow Authors: Matthew Skelton, Manuel Pais Team Topologies is a must-read for anyone involved in building software at scale. It moves away from the "everyone should talk to everyone" fallacy and introduces a pragmatic, team-first approach to organizational design. By focusing on cognitive load and the flow of value, Skelton and Pais provide a clear vocabulary for discussing team structures and their interactions.

## An Interactive Study of Publish/Subscribe Messaging for Event-Driven Backend Systems

DevFeed: [An Interactive Study of Publish/Subscribe Messaging for Event-Driven Backend Systems](<https://devfeed.tech/articles/what-is-pub-sub-17831.md>)

Original publisher: [Read original article](<https://encore.dev/blog/pubsub>)

Author: Ivan Cernja

Published: 2026-04-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Encore Updates](<https://devfeed.tech/sources/encore-updates.md>)

Topics: [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [event driven](<https://devfeed.tech/topics/event-driven.md>)

Tags: [decoupling](<https://devfeed.tech/tags/decoupling.md>), [developers](<https://devfeed.tech/tags/developers.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [events](<https://devfeed.tech/tags/events.md>), [flow](<https://devfeed.tech/tags/flow.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [publisher](<https://devfeed.tech/tags/publisher.md>), [subscriber](<https://devfeed.tech/tags/subscriber.md>)

### AI overview

An interactive tutorial explains publish/subscribe messaging by contrasting it with direct service calls. It shows how topics decouple publishers from subscribers, support fan-out, and let subscribers process messages independently, including when downstream services are unavailable.

### Source excerpt

An interactive study of publish/subscribe messaging

## Resetting Mutt's terminal after OAuth2 / GPG

DevFeed: [Resetting Mutt's terminal after OAuth2 / GPG](<https://devfeed.tech/articles/resetting-mutt-s-terminal-after-oauth2-gpg-30216.md>)

Original publisher: [Read original article](<https://www.netmeister.org/blog/mutt-reset-terminal.html>)

Published: 2026-04-01T01:23:28Z

Content type: tutorial

Language: en

Sources: [Signs of Triviality](<https://devfeed.tech/sources/signs-of-triviality.md>)

Topics: [OAuth 2.0](<https://devfeed.tech/topics/oauth2.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [flow](<https://devfeed.tech/tags/flow.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [oauth2](<https://devfeed.tech/tags/oauth2.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A quick fix for resetting Mutt's terminal after shelling out to GPG during an OAuth2 flow.

### Source excerpt

A quick fix for how to get mutt's terminal reset after shelling out to GPG during the OAuth2 flow.

## Proving What's Possible

DevFeed: [Proving What's Possible](<https://devfeed.tech/articles/proving-what-s-possible-25503.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/proving-whats-possible/>)

Author: Hillel Wayne

Published: 2026-02-11T18:36:53Z

Content type: opinion

Language: en

Sources: [Newsletter feed for Hillel Wayne's Newsletter](<https://devfeed.tech/sources/newsletter-feed-for-hillel-wayne-s-newsletter.md>)

Topics: [Formal methods](<https://devfeed.tech/topics/formal-methods.md>), [Specifications](<https://devfeed.tech/topics/specifications.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [flow](<https://devfeed.tech/tags/flow.md>), [formal-methods](<https://devfeed.tech/tags/formal-methods.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [state](<https://devfeed.tech/tags/state.md>), [statement](<https://devfeed.tech/tags/statement.md>)

### AI overview

A formal methods consultant introduces possibility properties for reasoning about what can happen in a system, distinguishing them from safety and liveness properties. Using temporal-logic notation and examples involving databases and state machines, the article describes possibility and reachability properties and combinations such as always possible and eventually possible.

### Source excerpt

As a formal methods consultant I have to mathematically express properties of systems. I generally do this with two "temporal operators": A(x) means that x is always true. For example, a database table always satisfies all record-level constraints, and a state machine always makes valid transitions between states. If x is a statement about an individual state (as in the database but not state machine example), we further call it an invariant. E(x) means that x is "eventually" true, conventionally meaning "guaranteed true at some point in the future". A database transaction eventually completes or rolls back, a state machine eventually reaches the "done" state, etc. These come from linear temporal logic, which is the mainstream notation for expressing system properties. 1 We like these operators because they elegantly cover safety and liveness properties, and because we can combine them. A(E(x)) means x is true an infinite number of times, while A(x => E(y) means that x being true guarantees y true in the future. There's a third class of properties, that I will call possibility properties: P(x) is "can x happen in this model"? Is it possible for a table to have more than ten records? Can a state machine transition from "Done" to "Retry", even if it doesn't? Importantly, P(x) does not need to be possible immediately, just at some point in the future. It's possible to lose 100 dollars betting on slot machines, even if you only bet one dollar at a time. If x is a statement about an individual state, we can further call it a reachability property. I'm going to use the two interchangeably for flow. A(P(x)) says that x is always possible. No matter what we've done in our system, we can make x happen again. There's no way to do this with just A and E. Other meaningful combinations include: P(A(x)): there is a reachable state from which x is always true. A(x => P(y)): y is possible from any state where x is true. E(x && P(y)): There is always a future state where x is true a

## Scalable API Response Handling Across Multi-Layered Architectures with Sandwich

DevFeed: [Scalable API Response Handling Across Multi-Layered Architectures with Sandwich](<https://devfeed.tech/articles/scalable-api-response-handling-across-multi-layered-architectures-with-sandwich-25924.md>)

Original publisher: [Read original article](<https://proandroiddev.com/scalable-api-response-handling-across-multi-layered-architectures-with-sandwich-39ab02ae8c90?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2026-02-08T06:25:14Z

Content type: tutorial

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [API](<https://devfeed.tech/topics/api.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [code](<https://devfeed.tech/tags/code.md>), [communication](<https://devfeed.tech/tags/communication.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [flow](<https://devfeed.tech/tags/flow.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mvi](<https://devfeed.tech/tags/mvi.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [network](<https://devfeed.tech/tags/network.md>), [networking](<https://devfeed.tech/tags/networking.md>), [presentation](<https://devfeed.tech/tags/presentation.md>), [responses](<https://devfeed.tech/tags/responses.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial explains how to handle Retrofit API responses, errors, and exceptions across multi-layered Android architectures such as MVVM and MVI. It presents Sandwich as a type-safe, composable approach and covers response handling, composition, merging, global error mapping, and Flow integration.

### Source excerpt

Unsplash@picoftasty Modern Android applications commonly adopt multi-layered architectures such as MVVM or MVI, where data flows through distinct layers: a data source, a repository, and a ViewModel (or presentation layer). Each layer has a specific responsibility, and network responses must propagate through all of them before reaching the UI. While this separation produces clean, testable code, it introduces a real challenge: how do you handle API responses, including errors and exceptions, as they cross each layer boundary? Most developers solve this by wrapping API calls in try-catch blocks and returning fallback values. This works for small projects, but as the number of API calls grows, the approach creates ambiguous results, scattered boilerplate, and lost context that downstream layers need. You end up with ViewModels that cannot tell whether an empty list means "no data" or "network failure," repositories that swallow important error details, and data sources that repeat the same error handling pattern dozens of times. In this article, you'll explore the problems that emerge when handling Retrofit API calls across layered architectures, why conventional approaches break down at scale, and how Sandwich provides a type safe, composable solution that simplifies response handling from the network layer all the way to the UI. You'll also walk through the full set of Sandwich APIs, from basic response handling to advanced patterns like sequential composition, response merging, global error mapping, and Flow integration, each with real world use cases that show when and why you would reach for them. Retrofit API calls with coroutines Most Android projects use Retrofit with Kotlin coroutines for network communication. A typical service interface looks like this: https://medium.com/media/ebcba33386d664d1cf69a89234d2e22a/href The service returns a List<Poster> directly. Retrofit deserializes the JSON response body and gives you the data. This works perfectly when the

## Gemini 3 Pro is now available in Figma Make

DevFeed: [Gemini 3 Pro is now available in Figma Make](<https://devfeed.tech/articles/gemini-3-pro-is-now-available-in-figma-make-9736.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/gemini-3-pro-is-now-available-in-figma-make/>)

Author: Loredana Crisan

Published: 2025-11-18T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Code](<https://devfeed.tech/topics/code.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [code](<https://devfeed.tech/tags/code.md>), [design](<https://devfeed.tech/tags/design.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [figma](<https://devfeed.tech/tags/figma.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [generate](<https://devfeed.tech/tags/generate.md>), [performance](<https://devfeed.tech/tags/performance.md>), [physics](<https://devfeed.tech/tags/physics.md>), [typography](<https://devfeed.tech/tags/typography.md>)

### AI overview

The article evaluates Gemini 3 Pro in Figma Make through design exercises involving varied layouts, visual styles, interactive patterns, motion, and code-backed prototypes. It describes experiments with a Thanksgiving gratitude board using SVG leaves, on-screen physics, and Supabase, as well as a New Year's Eve RSVP page explored in Y2K and concrete-poetry styles. Gemini 3 Flash is also presented as a faster model for quick ideation and refinements.

### Source excerpt

We ran Gemini 3 Pro through a series of design exercises in Figma Make. Here's what stood out.

## Suspending functions vs. Flow: When to use which?

DevFeed: [Suspending functions vs. Flow: When to use which?](<https://devfeed.tech/articles/suspending-functions-vs-flow-when-to-use-which-39379.md>)

Original publisher: [Read original article](<https://kt.academy/article/suspend-vs-flow>)

Published: 2025-10-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>)

Tags: [coroutines](<https://devfeed.tech/tags/coroutines.md>), [flow](<https://devfeed.tech/tags/flow.md>), [guide](<https://devfeed.tech/tags/guide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A guide to the differences between suspending functions and Flow in Kotlin Coroutines, including when to use each.

### Source excerpt

A comprehensive guide to understanding the differences between suspending functions and Flow in Kotlin Coroutines, and when to use each.

## 8 essential tips for using Figma Make

DevFeed: [8 essential tips for using Figma Make](<https://devfeed.tech/articles/8-essential-tips-for-using-figma-make-9477.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/8-ways-to-build-with-figma-make/>)

Author: Alexia Danton

Published: 2025-06-10T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [App](<https://devfeed.tech/topics/app.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [ai-assistants](<https://devfeed.tech/tags/ai-assistants.md>), [app](<https://devfeed.tech/tags/app.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [design](<https://devfeed.tech/tags/design.md>), [figma](<https://devfeed.tech/tags/figma.md>), [flow](<https://devfeed.tech/tags/flow.md>), [generation](<https://devfeed.tech/tags/generation.md>), [v1](<https://devfeed.tech/tags/v1.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

This article presents eight practical tips for using Figma Make, Figma's prompt-to-app and prompt-to-code feature. It emphasizes detailed initial prompts that specify the task, context, design elements, expected behavior, and constraints, along with iterative reframing and starting fresh when necessary. It also discusses using AI assistants to refine prompts and provide code snippets.

### Source excerpt

Here, we share our team's favorite prompts, pro tips, and best practices for using Figma Make to help you get the most out of our recently launched prompt-to-code feature.

## How to add a directory to your PATH

DevFeed: [How to add a directory to your PATH](<https://devfeed.tech/articles/how-to-add-a-directory-to-your-path-21118.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2025/02/13/how-to-add-a-directory-to-your-path/>)

Author: Julia Evans

Published: 2025-02-13T12:27:56Z

Content type: tutorial

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [config](<https://devfeed.tech/tags/config.md>), [files](<https://devfeed.tech/tags/files.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [history](<https://devfeed.tech/tags/history.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac](<https://devfeed.tech/tags/mac.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A practical guide to adding a directory to PATH. It explains how to identify whether the shell is bash, zsh, or fish, find the relevant shell configuration file, determine which directory should be added, update the configuration, restart the shell, and troubleshoot common PATH-related problems.

### Source excerpt

I was talking to a friend about how to add a directory to your PATH today. It's something that feels "obvious" to me since I've been using the terminal for a long time, but when I searched for instructions for how to do it, I actually couldn't find something that explained all of the steps - a lot of them just said "add this to ~/.bashrc", but what if you're not using bash? What if your bash config is actually in a different file? And how are you supposed to figure out which directory to add anyway? So I wanted to try to write down some more complete directions and mention some of the gotchas I've run into over the years. Here's a table of contents: step 1: what shell are you using? step 2: find your shell's config file a note on bash's config file step 3: figure out which directory to add step 3.1: double check it's the right directory step 4: edit your shell config step 5: restart your shell problems: problem 1: it ran the wrong program problem 2: the program isn't being run from your shell problem 3: duplicate PATH entries making it harder to debug problem 4: losing your history after updating your PATH notes: a note on source a note on fish_add_path step 1: what shell are you using? If you're not sure what shell you're using, here's a way to find out. Run this: ps -p $$ -o pid,comm= if you're using bash, it'll print out 97295 bash if you're using zsh, it'll print out 97295 zsh if you're using fish, it'll print out an error like "In fish, please use $fish_pid" ($$ isn't valid syntax in fish, but in any case the error message tells you that you're using fish, which you probably already knew) Also bash is the default on Linux and zsh is the default on Mac OS (as of 2024). I'll only cover bash, zsh, and fish in these directions. step 2: find your shell's config file in zsh, it's probably ~/.zshrc in bash, it might be ~/.bashrc, but it's complicated, see the note in the next section in fish, it's probably ~/.config/fish/config.fish (you can run echo $__fish_config_di

## A Recommendation for "The Drunken Plagiarists" on Code Copilots

DevFeed: [A Recommendation for "The Drunken Plagiarists" on Code Copilots](<https://devfeed.tech/articles/worth-reading-drunken-plagiarists-11129.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/01/worth-reading-drunken-plagiarists/>)

Published: 2025-01-28T07:47:00Z

Content type: opinion

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [code](<https://devfeed.tech/tags/code.md>), [experience](<https://devfeed.tech/tags/experience.md>), [flow](<https://devfeed.tech/tags/flow.md>)

### AI overview

The author recommends George V. Neville-Neil's ACM Queue article "The Drunken Plagiarists," which summarizes the usefulness of various code copilots. The author says the article reflects their experience, including frustration with semi-relevant suggestions disrupting their flow.

### Source excerpt

George V. Neville-Neil published a fantastic, must-read summary of the various code copilots' usefulness on ACM Queue: The Drunken Plagiarists. It pretty much mirrors my experience (plus, I got annoyed when the semi-relevant suggestions kept kicking me out of the flow) and reminds me of the early days of OpenFlow, when nobody wanted to listen to old grunts like myself telling the world it was all hype and little substance.

## Coroutine Testing - Never ending tests & backgroundScope

DevFeed: [Coroutine Testing - Never ending tests & backgroundScope](<https://devfeed.tech/articles/coroutine-testing-never-ending-tests-backgroundscope-25236.md>)

Original publisher: [Read original article](<https://kau.sh/blog/coroutine-testing-backgroundscope/>)

Author: Kaushik Gopal

Published: 2024-08-30T07:00:45Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [channel](<https://devfeed.tech/tags/channel.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutine-testing](<https://devfeed.tech/tags/coroutine-testing.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [flow](<https://devfeed.tech/tags/flow.md>), [job](<https://devfeed.tech/tags/job.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial explains why coroutine tests can time out when they collect from non-terminating Channels, SharedFlow, StateFlow, or ViewModel jobs. It presents manual Job cancellation and backgroundScope, which cancels child coroutines when the test body completes.

### Source excerpt

series This is part of a series of posts on Coroutine Testing: Picking the right Dispatcher Never ending tests & backgroundscope <- Controlling time Helpful @Junit TestRule extension (coming soon) Full USF example for Android (coming soon) If you've spent some time testing Coroutines this exception should look familiar: After waiting for 1m, the test coroutine is not completing, there were active child jobs This tends to happen when you have a coroutine job in your test, that fails to complete on its own. Let's take a simple example. src on github We use a Channel here which is the proverbial event bus for Coroutines. source: kotlinlang.org Channels don't terminate on their own. So when you run a simple test checking the emission, while the items might get collected correctly per the assert statement in the test, the test itself fails like so: test on github The test here is waiting for that coroutine job to complete, which in turn requires the Channel to, but that never happens and the test times out. Where else would I run into this problem? # Channels aren't the only case you'll run into this problem. For example if you use a "hot" Flow like SharedFlow or StateFlow, they don't terminate on their own, so the onus is on you to complete or cancel their Job in tests. Android developers can frequently run into this problem too if you use ViewModels and have an internal StateFlow providing your "view level data" (what i personally like to call "view state"). You typically use the viewModelScope to launch internal coroutine jobs in a ViewModel. The OS then calls the lifecycle method onClear when the Activity or Fragment no longer needs the ViewModel where all jobs started in the viewModelScope are canceled. But when unit testing these ViewModels, you don't have access to the viewModelScope and shouldn't need it anyway. Solving this problem # There's two ways to solve this problem: 1. Manually cancel the Job ## If you have access to the Job that spawns the never-ending co

## How Does psql -h pg.neon.tech Work?

DevFeed: [How Does psql -h pg.neon.tech Work?](<https://devfeed.tech/articles/how-does-psql-h-pg-neon-tech-work-5357.md>)

Original publisher: [Read original article](<https://neon.com/blog/how-psql-pg-neon-tech-works>)

Author: David Gomes

Published: 2024-08-14T14:22:47Z

Content type: tutorial

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Database](<https://devfeed.tech/topics/database.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Server](<https://devfeed.tech/topics/server.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cli](<https://devfeed.tech/tags/cli.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [flow](<https://devfeed.tech/tags/flow.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [server](<https://devfeed.tech/tags/server.md>), [tech](<https://devfeed.tech/tags/tech.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This article explains how the psql -h pg.neon.tech command works. It describes the Link Proxy, which speaks the Postgres protocol, displays a welcome message through NoticeResponse, and generates a URL for authenticating to a Neon project or compute endpoint. The article also explains how this relates to Neon's control plane and data plane architecture.

### Source excerpt

One of the things that got me really excited and curious about Neon, long before I joined the company, was the psql -h pg.neon.tech command. I've recently come to find out that other employees here went through the same "wow" experience even before they joined the company. So, I'...

## Managing your resources in Terraform can be literally easy and actually fun

DevFeed: [Managing your resources in Terraform can be literally easy and actually fun](<https://devfeed.tech/articles/managing-your-resources-in-terraform-can-be-literally-easy-and-actually-fun-11872.md>)

Original publisher: [Read original article](<https://incident.io/blog/managing-resources-in-terraform>)

Author: Lisa Karlin Curtis

Published: 2024-06-25T16:10:04Z

Content type: tutorial

Language: en

Sources: [The incident.io Blog](<https://devfeed.tech/sources/the-incident-io-blog.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [flow](<https://devfeed.tech/tags/flow.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-channel](<https://devfeed.tech/tags/incident-channel.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [outage](<https://devfeed.tech/tags/outage.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [slack-incident](<https://devfeed.tech/tags/slack-incident.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

This article explains how to build a Terraform integration that works with an existing dashboard and visual builder. It describes generating readable, validated Terraform configuration from workflows and schedules, previewing changes, and managing both generated and hand-created resources to reduce drift and simplify updates.

### Source excerpt

How to build a Terraform integration that works alongside, not against, your dashboard user experience

## Increase Engineering Productivity by 50% Through Focus and Flow

DevFeed: [Increase Engineering Productivity by 50% Through Focus and Flow](<https://devfeed.tech/articles/increase-engineering-productivity-by-50-through-focus-and-flow-39920.md>)

Original publisher: [Read original article](<https://mende.io/blog/increase-engineering-productivity-by-50-through-focus-and-flow/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2024-06-01T05:00:00Z

Content type: opinion

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [developer-productivity](<https://devfeed.tech/topics/developer-productivity.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>), [pair\_programming](<https://devfeed.tech/topics/pair-programming.md>), [context](<https://devfeed.tech/topics/context.md>), [meetings](<https://devfeed.tech/topics/meetings.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [collaboration](<https://devfeed.tech/tags/collaboration.md>), [collaboration-communication-continuous-deployment-developer-experience-developer-productivity-e](<https://devfeed.tech/tags/collaboration-communication-continuous-deployment-developer-experience-developer-productivity-e.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [engineering-productivity](<https://devfeed.tech/tags/engineering-productivity.md>), [flow](<https://devfeed.tech/tags/flow.md>), [focus](<https://devfeed.tech/tags/focus.md>), [pair-programming](<https://devfeed.tech/tags/pair-programming.md>), [real-time](<https://devfeed.tech/tags/real-time.md>)

### AI overview

This article discusses how focus and flow affect developer productivity and presents practical organizational ideas for improving them. It emphasizes collaboration, team or pair programming, reducing distractions and context switching, real-time reviews, and useful documentation.

### Source excerpt

Increase Engineering Productivity by 50% Through Focus and Flow Creating an environment where developers can maintain focus and achieve flow can lead to a 50% increase in productivity, as research suggests. But how do we create such an environment?

## MLAG Deep Dive: LAG Member Failures in VXLAN Fabrics

DevFeed: [MLAG Deep Dive: LAG Member Failures in VXLAN Fabrics](<https://devfeed.tech/articles/mlag-deep-dive-lag-member-failures-in-vxlan-fabrics-11005.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2024/05/mlag-vxlan-rerouting/>)

Published: 2024-05-15T06:51:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [VXLAN](<https://devfeed.tech/topics/vxlan.md>), [evpn](<https://devfeed.tech/topics/evpn.md>)

Tags: [complexity](<https://devfeed.tech/tags/complexity.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [evpn](<https://devfeed.tech/tags/evpn.md>), [fabric](<https://devfeed.tech/tags/fabric.md>), [failover](<https://devfeed.tech/tags/failover.md>), [flow](<https://devfeed.tech/tags/flow.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [mac](<https://devfeed.tech/tags/mac.md>), [switching](<https://devfeed.tech/tags/switching.md>), [vxlan](<https://devfeed.tech/tags/vxlan.md>)

### AI overview

This article explains how MLAG handles LAG member failures in VXLAN fabrics, including behavior with EVPN. Traffic can fail over over the MLAG peer link without interrupting unicast forwarding, while EVPN convergence may require updated advertisements for an optimized path. The article notes that EVPN-only multihoming presents a less favorable situation.

### Source excerpt

In the Dealing with LAG Member Failures blog post, we figured out how easy it is to deal with a LAG member failure in a traditional MLAG cluster. The failover could happen in hardware, and even if it's software-driven, it does not depend on the control plane. Let's add a bit of complexity and replace a traditional layer-2 fabric with a VXLAN fabric. The MLAG cluster members still use an MLAG peer link and an anycast VTEP IP address (more details). Read more ...

## Value-Stream-Oriented Kanban

DevFeed: [Value-Stream-Oriented Kanban](<https://devfeed.tech/articles/value-stream-oriented-kanban-39952.md>)

Original publisher: [Read original article](<https://mende.io/blog/value-stream-oriented-kanban/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2024-04-20T05:00:00Z

Content type: opinion

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [Kanban](<https://devfeed.tech/topics/kanban.md>), [Agile](<https://devfeed.tech/topics/agile.md>), [Software as a service](<https://devfeed.tech/topics/saas.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [burnout](<https://devfeed.tech/tags/burnout.md>), [business-developer-productivity-engineering-leadership-kanban-product-management-engineering-ex](<https://devfeed.tech/tags/business-developer-productivity-engineering-leadership-kanban-product-management-engineering-ex.md>), [business-value](<https://devfeed.tech/tags/business-value.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [cycle-time](<https://devfeed.tech/tags/cycle-time.md>), [flow](<https://devfeed.tech/tags/flow.md>), [kanban](<https://devfeed.tech/tags/kanban.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [saas](<https://devfeed.tech/tags/saas.md>)

### AI overview

The article argues that Kanban should be oriented around customer-focused value streams rather than individual subtasks. It contends that measuring task-level flow can create an illusion of productivity while multiple initiatives delay meaningful delivery, and recommends prioritizing fast business value over maximizing utilization.

### Source excerpt

Value-Stream-Oriented Kanban Many teams, especially in the startup environment, move away from Scrum and use a leaner Kanban-based approach. This is a good thing. I don't think Scrum is a suitable framework for modern, fast, agile companies. - Especially not in the SaaS field (the reasoning behind this statement will become another article, eventually).

## How to plug in and power up your designer-developer handoff with Figma and Jira

DevFeed: [How to plug in and power up your designer-developer handoff with Figma and Jira](<https://devfeed.tech/articles/how-to-plug-in-and-power-up-your-designer-developer-handoff-with-figma-and-jira-9618.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/designer-developer-handoff-with-figma-and-jira/>)

Author: Herbert Lui

Published: 2024-02-07T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [designer developer handoff](<https://devfeed.tech/topics/designer-developer-handoff.md>), [Figma](<https://devfeed.tech/topics/figma.md>)

Tags: [design](<https://devfeed.tech/tags/design.md>), [designer-developer-handoff](<https://devfeed.tech/tags/designer-developer-handoff.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [feature](<https://devfeed.tech/tags/feature.md>), [figma](<https://devfeed.tech/tags/figma.md>), [flow](<https://devfeed.tech/tags/flow.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [product-development](<https://devfeed.tech/tags/product-development.md>), [tools](<https://devfeed.tech/tags/tools.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

Product development teams from Ingka Group, One.com, and Condé Nast share practices for improving designer-developer handoff and maintaining collaborative flow with Figma and Jira. The article discusses tools, processes, and rituals that help teams stay synchronized, iterate efficiently, and ship features as organizations scale.

### Source excerpt

Product development teams from Ingka Group, One.com, and Condé Nast share the tools and tips for achieving that elusive design-development flow state.

[Next page](<https://devfeed.tech/tags/flow.md?cursor=WyIyMDI0LTAyLTA3VDAwOjAwOjAwKzAwOjAwIiwgImUyZDc5YTNmLTMwYTEtNDViYi04ZGIyLTIyODRjY2EwZTliMCJd>)