# stateless

Published articles for stateless.

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

## MCP went stateless: What changed in the 2026-07-28 spec

DevFeed: [MCP went stateless: What changed in the 2026-07-28 spec](<https://devfeed.tech/articles/mcp-went-stateless-what-changed-in-the-2026-07-28-spec-31436.md>)

Original publisher: [Read original article](<https://workos.com/blog/mcp-stateless-spec-2026-07-28>)

Author: WorkOS

Published: 2026-09-16T00:00:00Z

Content type: article

Language: en

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

Topics: [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [migration](<https://devfeed.tech/topics/migration.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [servers](<https://devfeed.tech/topics/servers.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [client](<https://devfeed.tech/tags/client.md>), [http](<https://devfeed.tech/tags/http.md>), [load-balancer](<https://devfeed.tech/tags/load-balancer.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [replacement](<https://devfeed.tech/tags/replacement.md>), [request](<https://devfeed.tech/tags/request.md>), [routing](<https://devfeed.tech/tags/routing.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>), [sessions](<https://devfeed.tech/tags/sessions.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [stream](<https://devfeed.tech/tags/stream.md>)

### AI overview

The 2026-07-28 MCP specification removes protocol-level sessions, the initialize handshake, and stream resumability, making the protocol behave more like an ordinary HTTP API. Most migrations are mechanical, but lost stream requests can cause reliability regressions or duplicated side effects when retried, so side-effecting tools need application-level idempotency keys. The elicitation change also requires architectural rework.

### Source excerpt

Sessions, the initialize handshake, and stream resumability are all gone. Here is what replaced them, and what breaks if you ignore it.

## Is MCP Stateless or Stateful?

DevFeed: [Is MCP Stateless or Stateful?](<https://devfeed.tech/articles/is-mcp-stateless-or-stateful-30879.md>)

Original publisher: [Read original article](<https://www.rogerperkin.co.uk/faq/is-mcp-stateless-or-stateful/>)

Author: Roger Perkin

Published: 2026-08-14T06:51:31Z

Content type: article

Language: en

Sources: [Roger Perkin Network Automation Consultant](<https://devfeed.tech/sources/roger-perkin-network-automation-consultant.md>)

Topics: [Model Context Protocol (MCP)](<https://devfeed.tech/topics/model-context-protocol-mcp.md>), [Load Balancing](<https://devfeed.tech/topics/load-balancing.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [faq](<https://devfeed.tech/tags/faq.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [stateful](<https://devfeed.tech/tags/stateful.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

The article states that MCP became stateless in version 2026-07-28, whereas the original release was stateful. It says requests are self-describing and independent, eliminating the need for connection handshakes, session IDs, and sticky load balancing.

### Source excerpt

As of version 2026-07-28 the MCP protocol is now stateless. The original release was stateful. Every request is self-describing and independent, removing the need for connection handshakes, session IDs, or sticky load balancing. You can read all the important updates here: https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture

## Why stateless JWT logout is not immediate and how to revoke access

DevFeed: [Why stateless JWT logout is not immediate and how to revoke access](<https://devfeed.tech/articles/stateless-jwts-have-a-logout-problem-and-enterprise-customers-will-find-it-16063.md>)

Original publisher: [Read original article](<https://workos.com/blog/stateless-jwt-logout-problem>)

Author: WorkOS

Published: 2026-08-06T01:36:54Z

Content type: article

Language: en

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

Topics: [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [Security](<https://devfeed.tech/topics/security.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [jwt](<https://devfeed.tech/tags/jwt.md>), [public-key](<https://devfeed.tech/tags/public-key.md>), [rotation](<https://devfeed.tech/tags/rotation.md>), [security](<https://devfeed.tech/tags/security.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [token](<https://devfeed.tech/tags/token.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

The article explains that signed stateless JWTs remain valid until expiration, so logging out or deactivating a user cannot revoke an already-issued token immediately. It compares short-lived access tokens with refresh-token rotation against a server-side denylist as approaches to revocation.

### Source excerpt

Stateless JWTs stay valid until they expire, so logout isn't instant. Here's why enterprise SCIM makes that a compliance problem -- and how to really fix it.

## Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp)

DevFeed: [Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp)](<https://devfeed.tech/articles/stateless-mcp-has-recaptured-my-interest-and-inspired-mcp-explorer-and-datasette-mcp-30505.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Jul/31/stateless-mcp/>)

Author: Simon Willison

Published: 2026-07-31T23:13:22Z

Content type: article

Language: en

Sources: [Simon Willison](<https://devfeed.tech/sources/simon-willison.md>)

Topics: [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [anthropic](<https://devfeed.tech/topics/anthropic.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Python](<https://devfeed.tech/topics/python.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-2-235](<https://devfeed.tech/tags/ai-2-235.md>), [anthropic](<https://devfeed.tech/tags/anthropic.md>), [anthropic-336](<https://devfeed.tech/tags/anthropic-336.md>), [cli](<https://devfeed.tech/tags/cli.md>), [codex](<https://devfeed.tech/tags/codex.md>), [context](<https://devfeed.tech/tags/context.md>), [curl](<https://devfeed.tech/tags/curl.md>), [datasette](<https://devfeed.tech/tags/datasette.md>), [datasette-1-542](<https://devfeed.tech/tags/datasette-1-542.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [generative-ai-1-981](<https://devfeed.tech/tags/generative-ai-1-981.md>), [http](<https://devfeed.tech/tags/http.md>), [json](<https://devfeed.tech/tags/json.md>), [llm](<https://devfeed.tech/tags/llm.md>), [llm-631](<https://devfeed.tech/tags/llm-631.md>), [llms](<https://devfeed.tech/tags/llms.md>), [llms-1-947](<https://devfeed.tech/tags/llms-1-947.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mermaid](<https://devfeed.tech/tags/mermaid.md>), [mermaid-5](<https://devfeed.tech/tags/mermaid-5.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [model-context-protocol-35](<https://devfeed.tech/tags/model-context-protocol-35.md>), [projects](<https://devfeed.tech/tags/projects.md>), [projects-553](<https://devfeed.tech/tags/projects-553.md>), [shell](<https://devfeed.tech/tags/shell.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This commentary examines the 2026-07-28 stateless Model Context Protocol specification. It argues that stateless MCP simplifies client and server implementation, improves auditability and control compared with shell-based agent access, and better supports scalable web applications by removing session state and session-affinity requirements. The article also introduces the mcp-explorer CLI tool and mentions datasette-mcp.

### Source excerpt

Tuesday was Stateless MCP day - the rollout of MCP 2.0, or the 2026-07-28 Model Context Protocol specification to use the more formal but less memorable name. This is the most significant change to the MCP spec since it first launched, and has also served to reignite my personal interest in the protocol. For background: MCP is the Model Context Protocol, which describes a standard way to expose new tools to LLM-powered agent frameworks. It was introduced by Anthropic back in November 2024, had a huge spike of interest through much of 2025, and then became somewhat eclipsed by Skills (another Anthropic invention) when it became apparent that an agent harness with access to a terminal and curl could do most of what MCP did in a more flexible way. I wrote about that in my review of 2025. I'm coming back around to MCP now. Giving an agent a shell environment with the ability to access the internet is fraught with risk, and requires a strong model that is capable of effectively driving such an environment. MCP tools are easier to audit and control, and simple enough that smaller models that run on a laptop can still drive them reasonably well. The new stateless MCP specification also greatly decreases the complexity of implementing both clients and servers for the protocol. I built three of those this week! What's easier with stateless MCP The best demonstration of the difference between stateful and stateless MCP is in this May 21st blog post that introduced the RC for the new specification. It included a clear before-and-after example. The older stateful MCP (I'm going to call it "legacy MCP") required two HTTP requests - the first to initialize a session and obtain a Mcp-Session-Id, and the second to actually call the tool: POST /mcp HTTP/1.1 Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-11-25", "capabilities": { }, "clientInfo": { "name": "my-app", "version": "1.0" } } } POST /mcp HTTP/1.1 Mcp

## Custom Scopes in Koin: A Practical Example

DevFeed: [Custom Scopes in Koin: A Practical Example](<https://devfeed.tech/articles/custom-scopes-in-koin-a-practical-example-22968.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/custom-scopes-in-koin-a-practical-example-79cc1188810f?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-06-19T12:01:01Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [components](<https://devfeed.tech/tags/components.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [data](<https://devfeed.tech/tags/data.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [project](<https://devfeed.tech/tags/project.md>), [scopes](<https://devfeed.tech/tags/scopes.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

A practical tutorial on using custom scopes in Koin to keep a selected user profile image available across an application. It demonstrates a session scope, session data, and a stateless session manager using StreamPlayerApp as the example.

### Source excerpt

Hey friends 👋 Today, we are going to explore how we can create a custom scope, one of the powerful features provided by Koin. To make things practical 🔨, we'll walk through a real-world use case from the open-source project StreamPlayerApp (created by CodandoTV). Wireframes of a mobile app -- Unsplash by @alvarordesignWhat is the problem? StreamPlayerApp is an open-source project that aims to recreate the core experience of Netflix. One of its features allows users to select a profile, similar to the profile selection screen found in streaming platforms. The selected profile image needs to be accessible across the entire application, ensuring a consistent user experience on every screen. Whenever a user changes their profile, the updated image should be immediately reflected throughout the app, allowing all screens to stay synchronized with the current profile selection. Screenshots demonstrating the user profile selection feature.How we solve this problem using Custom Scopes? First, we create a class that represents the scope of a user session: class SessionScope Next, we create a lightweight data class containing only the information that needs to be kept in memory throughout the user session: data class UserSessionInfo( // represents the time user changed the profile val userTimestamp: Instant, // represents the selected picture url val profileImageUrl: String ) We then created a dedicated class responsible for managing the user's session lifecycle and state. class SessionManager { private val scopeId: String = "user_session" /** * Create custom scope and hold the user's session data */ fun openSession(imageUrl: String) { closeSession() val koin = KoinPlatform.getKoin() val scope = koin.createScope<SessionScope>( scopeId = scopeId, ) scope.declare( UserSessionInfo( userTimestamp = Clock.System.now(), profileImageUrl = imageUrl ) ) } /** * Retrieve the current user session */ fun userSessionInfo(): UserSessionInfo? { return KoinPlatform.getKoin() .getScopeOrNull(sc

## The future of Siri, or: why private inference isn't private enough

DevFeed: [The future of Siri, or: why private inference isn't private enough](<https://devfeed.tech/articles/the-future-of-siri-or-why-private-inference-isn-t-private-enough-29097.md>)

Original publisher: [Read original article](<https://blog.cryptographyengineering.com/2026/06/09/apples-siri-ai-or-more-shouting-into-the-void-about-private-agents/>)

Author: Matthew Green

Published: 2026-06-09T19:00:02Z

Content type: opinion

Language: en

Sources: [Matthew Green](<https://devfeed.tech/sources/matthew-green.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Google](<https://devfeed.tech/topics/google.md>), [data](<https://devfeed.tech/topics/data.md>), [context](<https://devfeed.tech/topics/context.md>), [private cloud](<https://devfeed.tech/topics/private-cloud.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [apple](<https://devfeed.tech/tags/apple.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [context](<https://devfeed.tech/tags/context.md>), [data](<https://devfeed.tech/tags/data.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [google](<https://devfeed.tech/tags/google.md>), [inference](<https://devfeed.tech/tags/inference.md>), [llm](<https://devfeed.tech/tags/llm.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [security](<https://devfeed.tech/tags/security.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

The article examines Apple's plans to add frontier-model capabilities to Siri using Google Gemini, Google Confidential Inference, and Apple's Private Cloud Compute. It explains the privacy rationale for using device context and describes PCC's stateless, hardware-protected design, while arguing that the expanded system's reliance on Google infrastructure remains technically vague.

### Source excerpt

Yesterday Apple announced a big step towards deploying real AI in their Siri ecosystem. In most ways this is good and inevitable: Siri is one of the world's most widely-used voice agents, and it would be good if it didn't suck. The idea that Apple would boost its capabilities with frontier models wasn't so much ... Continue reading The future of Siri, or: why private inference isn't private enough ->

## Prompts Are Guidelines. Code Is the Config.

DevFeed: [Prompts Are Guidelines. Code Is the Config.](<https://devfeed.tech/articles/prompts-are-guidelines-code-is-the-config-30872.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/prompt-vs-config/>)

Author: Brent Leekley

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

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [API](<https://devfeed.tech/topics/api.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [JSON](<https://devfeed.tech/topics/json.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [agent-reliability](<https://devfeed.tech/tags/agent-reliability.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [claude](<https://devfeed.tech/tags/claude.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [schema](<https://devfeed.tech/tags/schema.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [stop-reason](<https://devfeed.tech/tags/stop-reason.md>), [structured-output](<https://devfeed.tech/tags/structured-output.md>), [til](<https://devfeed.tech/tags/til.md>), [tool-use](<https://devfeed.tech/tags/tool-use.md>)

### AI overview

A Today I Learned field note about building more reliable AI agents by assigning probabilistic judgment to the model and deterministic guarantees to application code. It discusses using code-enforced gates and hooks for requirements that must always hold, branching on stop_reason rather than model text, handling turns that contain both chat and tool calls, and avoiding the assumption that a valid schema guarantees a correct answer.

### Source excerpt

Where the model's judgment ends and your code has to take over -- a Today I Learned field note on building AI agents that hold up in production: stop_reason, forced tool use, hooks, stateless history, and why a valid schema isn't a true answer.

## Resumable Remote Compaction

DevFeed: [Resumable Remote Compaction](<https://devfeed.tech/articles/resumable-remote-compaction-22399.md>)

Original publisher: [Read original article](<http://rocksdb.org/blog/2026/05/19/resumable-remote-compaction.html>)

Author: Hui Xiao

Published: 2026-05-19T00:00:00Z

Content type: article

Language: en

Sources: [RocksDB](<https://devfeed.tech/sources/rocksdb.md>)

Topics: [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [API](<https://devfeed.tech/topics/api.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [files](<https://devfeed.tech/tags/files.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>), [scale](<https://devfeed.tech/tags/scale.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

RocksDB's resumable remote compaction adds checkpointing so interrupted compaction jobs can continue from their latest completed output SST instead of restarting from scratch. The article explains checkpoint contents, delta encoding, safety constraints, resume behavior, and configuration requirements.

### Source excerpt

Background RocksDB can offload compaction work to remote workers through the CompactionService API. In this model, the primary RocksDB instance selects the input files and sends a serialized CompactionServiceInput to a worker; the remote worker runs DB::OpenAndCompact(), writes output SSTs to output_directory, and returns a serialized CompactionServiceResult that the primary RocksDB instance installs into its LSM tree. See the Remote Compaction wiki for the full architecture. This lets operators scale compaction throughput with stateless workers while keeping the primary RocksDB instance's CPU and I/O available for serving reads and writes. However, remote compaction jobs can be long-running--sometimes processing hundreds of gigabytes of input. When a worker crashes, gets preempted, or times out, the entire compaction must restart from scratch, wasting all output produced before the interruption and increasing compaction debt on the primary RocksDB instance. How Resumable Remote Compaction Works Resumable remote compaction introduces a checkpoint-and-resume mechanism. During a compaction, the worker periodically saves its progress to the output_directory. If the compaction is interrupted, a subsequent call to OpenAndCompact() with the same output directory can pick up from the last checkpoint rather than starting over. Checkpointing After each output SST file is completed, the worker persists a progress checkpoint to a compaction progress file in the output directory output_directory. The checkpoint records which internal key to resume from and the metadata of all completed output files. Progress records use delta encoding--each record only contains files completed since the last checkpoint--to keep serialization cost linear. The worker skips checkpointing at boundaries where resuming could be unsafe or requires complicated handling: when range deletions span the file boundary or when adjacent output files share the same user key. These constraints ensure that resuming

## The Future of Ethereum's State

DevFeed: [The Future of Ethereum's State](<https://devfeed.tech/articles/the-future-of-ethereum-s-state-17200.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2025/12/16/future-of-state>)

Author: Wei Han Ng; Carlos Pérez; the Stateless Consensus team

Published: 2025-12-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [data](<https://devfeed.tech/topics/data.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [consensus](<https://devfeed.tech/tags/consensus.md>), [database](<https://devfeed.tech/tags/database.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [network](<https://devfeed.tech/tags/network.md>), [research-development](<https://devfeed.tech/tags/research-development.md>), [smart-contract](<https://devfeed.tech/tags/smart-contract.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

A proposal from Ethereum's Stateless Consensus team examines the growing size of Ethereum's state, which includes accounts, contract storage, and bytecode. It explains how state growth increases storage, database, RPC, and syncing demands, potentially making the network more expensive and harder to decentralize.

### Source excerpt

Disclaimer: The following blog is a proposal from the Stateless Consensus team. Content may not imply consensus views, and the EF is a broad organization that includes a healthy diversity of opinion across Protocol and beyond that together strengthen Ethereum. Special thanks to Ladislaus von Daniels and Marius van der...

## Building a persistent conversational AI chatbot with Temporal

DevFeed: [Building a persistent conversational AI chatbot with Temporal](<https://devfeed.tech/articles/building-a-persistent-conversational-ai-chatbot-with-temporal-35740.md>)

Original publisher: [Read original article](<https://temporal.io/blog/building-a-persistent-conversational-ai-chatbot-with-temporal>)

Author: Pablo González Granados

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

Content type: tutorial

Language: en

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

Topics: [Conversational AI](<https://devfeed.tech/topics/conversational-ai.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [Chat Bot](<https://devfeed.tech/topics/chatbot.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Java](<https://devfeed.tech/topics/java.md>), [Quarkus](<https://devfeed.tech/topics/quarkus.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [conversational-ai](<https://devfeed.tech/tags/conversational-ai.md>), [history](<https://devfeed.tech/tags/history.md>), [java](<https://devfeed.tech/tags/java.md>), [quarkus](<https://devfeed.tech/tags/quarkus.md>), [retries](<https://devfeed.tech/tags/retries.md>), [stateful](<https://devfeed.tech/tags/stateful.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This tutorial explains how to build a persistent conversational AI chatbot with Temporal by modeling each conversation as a workflow. It describes maintaining conversation context across restarts, deployments, and scaling events, while supporting long-running interactions, summaries, and retrieval.

### Source excerpt

Build a persistent, infinitely scalable chatbot with Temporal Workflows -- stateless apps, full conversation history across restarts, and resilient retries in Java/Quarkus.

## Cost Optimisation in ECS: Integrating Spot Instances at Scale

DevFeed: [Cost Optimisation in ECS: Integrating Spot Instances at Scale](<https://devfeed.tech/articles/cost-optimisation-in-ecs-integrating-spot-instances-at-scale-19717.md>)

Original publisher: [Read original article](<https://deliveroo.engineering/2025/09/12/cost-optimisation-in-ecs.html>)

Author: Aakash Singhal

Published: 2025-09-12T00:00:00Z

Content type: article

Language: en

Sources: [Deliveroo](<https://devfeed.tech/sources/deliveroo.md>)

Topics: [Amazon Elastic Container Service](<https://devfeed.tech/topics/amazon-elastic-container-service.md>), [Amazon EC2](<https://devfeed.tech/topics/amazon-ec2.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [container](<https://devfeed.tech/topics/container.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [availability](<https://devfeed.tech/tags/availability.md>), [aws](<https://devfeed.tech/tags/aws.md>), [container](<https://devfeed.tech/tags/container.md>), [cost](<https://devfeed.tech/tags/cost.md>), [cost-optimisation](<https://devfeed.tech/tags/cost-optimisation.md>), [ec2](<https://devfeed.tech/tags/ec2.md>), [ecs](<https://devfeed.tech/tags/ecs.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [load-balancer](<https://devfeed.tech/tags/load-balancer.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [scale](<https://devfeed.tech/tags/scale.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

Deliveroo describes how it integrated EC2 Spot Instances into Amazon ECS to reduce compute costs while maintaining service stability. The approach routes only eligible workloads to Spot capacity and uses criteria such as fast shutdown, task redundancy, statelessness, and load balancer deregistration timing.

### Source excerpt

At Deliveroo, we're always refining how we scale - especially when it comes to managing compute costs in the cloud. After optimising our Amazon ECS workloads with Reserved Instances and Savings Plans, we saw an opportunity to push further using EC2 Spot Instances, which offer up to 90% savings compared to On-Demand prices. But Spot comes with challenges: Their availability can fluctuate, and they can be terminated with just a two-minute warning. To unlock these savings without compromising service stability, we had to engineer a robust solution across infrastructure, workload qualification, and automation. The Challenge: Balancing Cost and Reliability Our ECS infrastructure initially relied entirely on On-Demand EC2 instances, provisioned through Auto Scaling Groups (ASGs) connected to ECS Capacity Providers. While reliable, this approach didn't take advantage of AWS's surplus compute capacity. We aimed to layer Spot Instances into our clusters, but selectively. Our goal was clear: route only eligible workloads to Spot capacity while ensuring no service degradation during unexpected terminations. Spot Instances: Power and Pitfalls Spot Instances provide dramatic cost reductions but introduce several operational caveats: Ephemeral by nature: AWS can terminate them at any time with a two-minute warning. Capacity variability: Availability depends on AWS's excess capacity in each AZ and can shift unpredictably. Scaling limitations: Auto Scaling may fail if the desired instance types are not currently available. To avoid introducing fragility into our stack, we established technical eligibility criteria that workloads must meet before being scheduled on Spot. Defining Spot Eligibility We formalised the following criteria to assess whether a workload could safely tolerate Spot interruptions: Fast Shutdown Support Constraint: stopTimeout must be < 120 seconds in the container definition. Reason: Ensures ECS has time to gracefully shut down the task before AWS's 2-minute te

## No more disks: the architecture behind stateless compute in ClickHouse Cloud

DevFeed: [No more disks: the architecture behind stateless compute in ClickHouse Cloud](<https://devfeed.tech/articles/no-more-disks-the-architecture-behind-stateless-compute-in-clickhouse-cloud-5085.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/clickhouse-cloud-stateless-compute>)

Author: Tom Schreiber

Published: 2025-07-09T00:00:00Z

Content type: article

Language: en

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

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Apache Iceberg](<https://devfeed.tech/topics/apache-iceberg.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [atomic](<https://devfeed.tech/tags/atomic.md>), [building](<https://devfeed.tech/tags/building.md>), [catalog](<https://devfeed.tech/tags/catalog.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cloud-native](<https://devfeed.tech/tags/cloud-native.md>), [latency](<https://devfeed.tech/tags/latency.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [scale](<https://devfeed.tech/tags/scale.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

This post explains how ClickHouse Cloud achieved fully stateless compute by introducing an in-memory database engine powered by a Shared Catalog. Compute nodes no longer depend on local disks, enabling fast elastic provisioning, rapid wake-ups, and stateless processing across native and open data formats.

### Source excerpt

ClickHouse Cloud compute is now fully stateless. This post introduces the final piece that made it possible, a new in-memory database engine powered by a Shared Catalog, and walks through how we got there.

## Optimistic Locking Overview

DevFeed: [Optimistic Locking Overview](<https://devfeed.tech/articles/optimistic-locking-overview-26514.md>)

Original publisher: [Read original article](<https://medium.com/engineering-housing/optimistic-locking-overview-6b30315e759b?source=rss----3a69e32e2594---4>)

Author: somesh sharma

Published: 2025-06-19T09:02:40Z

Content type: tutorial

Language: en

Sources: [Housing.com](<https://devfeed.tech/sources/housing-com.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [concurrency-control](<https://devfeed.tech/tags/concurrency-control.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [isolation-level](<https://devfeed.tech/tags/isolation-level.md>), [locks](<https://devfeed.tech/tags/locks.md>), [optimistic-locking](<https://devfeed.tech/tags/optimistic-locking.md>), [retry](<https://devfeed.tech/tags/retry.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [transaction-management](<https://devfeed.tech/tags/transaction-management.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

An overview of optimistic locking as a concurrency-control mechanism for database transactions. It explains how version columns detect conflicting updates, when optimistic locking is suitable, and when transaction isolation may make it unnecessary.

### Source excerpt

Optimistic locking is a concurrency control mechanism where we assume that multiple transactions can safely access data without conflict, allowing them to proceed without locking the data upfront. Unlike pessimistic locking, where resources are locked to avoid conflicts, optimistic locking allows transactions to proceed without locks and checks for conflicts only when updating the data. If a conflict is detected (e.g., another transaction has already modified the data), the operation fails, and you can retry it. When Should You Use Optimistic Locking? Optimistic locking is ideal for use in scenarios where: Low contention exists: If it's unlikely that multiple users or processes will try to update the same data at the same time, optimistic locking is a good fit. This is especially true in systems where most operations involve reading data rather than writing it. High read-to-write ratio: If your application is mostly about reading data and writing happens less frequently, optimistic locking helps avoid the overhead of locking rows during reads. Non-critical updates: In cases where it's okay to retry a failed update without much impact, optimistic locking is a good choice. When conflicts arise, either the user or the system can simply retry. Stateless operations: Optimistic locking is suitable in stateless environments where holding onto locks across multiple requests or sessions isn't feasible. Long-running transactions: If your transactions take a long time to complete, holding locks during the entire process isn't feasible. Optimistic locking provides flexibility while still maintaining data integrity. How Optimistic Locking Works in Databases In databases, optimistic locking is usually implemented with a version column. Each row in the database has a version field (like a number or timestamp) that gets updated whenever the row is modified. When updating a record, the database checks if the version in the database matches the version the transaction originally read

## Database Freedom Day - Unlimited Databases Are Here

DevFeed: [Database Freedom Day - Unlimited Databases Are Here](<https://devfeed.tech/articles/database-freedom-day-unlimited-databases-are-here-6086.md>)

Original publisher: [Read original article](<https://turso.tech/blog/unlimited-databases-are-here>)

Author: Glauber Costa

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

Content type: release

Language: en

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

Topics: [Turso](<https://devfeed.tech/topics/turso.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [applications](<https://devfeed.tech/tags/applications.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [llms](<https://devfeed.tech/tags/llms.md>), [pricing](<https://devfeed.tech/tags/pricing.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [turso](<https://devfeed.tech/tags/turso.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Turso announces that users on any paid Turso Cloud plan will be able to create unlimited databases. Plans will instead limit the number of monthly active databases, with additional active databases billed beyond the allowance. The announcement positions this model as suitable for agentic workloads in which LLMs create applications and need separate, small databases.

### Source excerpt

The rise of agentic workloads, where LLMs write software for you, has changed the game on database design. Since LLMs are stateless, there's a growing need to create small and affordable databases on the fly. Each prompt can have its own database. Turso Cloud makes this possible. It gives users access to thousands of databases, making it the ideal database to build such applications.

## Can Snyk Detect JWT Security Issues?

DevFeed: [Can Snyk Detect JWT Security Issues?](<https://devfeed.tech/articles/can-snyk-detect-jwt-security-issues-7857.md>)

Original publisher: [Read original article](<https://snyk.io/blog/can-snyk-detect-jwt-security-issues/>)

Author: Liran Tal

Published: 2025-03-04T05:00:00Z

Content type: tutorial

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Security](<https://devfeed.tech/topics/security.md>), [API](<https://devfeed.tech/topics/api.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code-security](<https://devfeed.tech/tags/code-security.md>), [developer](<https://devfeed.tech/tags/developer.md>), [devrel](<https://devfeed.tech/tags/devrel.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [json](<https://devfeed.tech/tags/json.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [payload](<https://devfeed.tech/tags/payload.md>), [rsa](<https://devfeed.tech/tags/rsa.md>), [security](<https://devfeed.tech/tags/security.md>), [security-best-practices](<https://devfeed.tech/tags/security-best-practices.md>), [signing](<https://devfeed.tech/tags/signing.md>), [snyk](<https://devfeed.tech/tags/snyk.md>), [snyk-code](<https://devfeed.tech/tags/snyk-code.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [token](<https://devfeed.tech/tags/token.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [verify](<https://devfeed.tech/tags/verify.md>), [vulnerability](<https://devfeed.tech/tags/vulnerability.md>)

### AI overview

This article explains what JSON Web Tokens are, how their header, payload, and signature work, and how their stateless design supports authentication for APIs, microservices, and distributed systems. It focuses on detecting and preventing JWT security risks, including broken authentication vulnerabilities and the danger of storing sensitive data in unencrypted tokens.

### Source excerpt

How to detect and prevent JWT security risks? Follow Snyk's JWT security best practices for enhanced security.

## Fact Evaluation in Millions: Scalable Rule Executor Service

DevFeed: [Fact Evaluation in Millions: Scalable Rule Executor Service](<https://devfeed.tech/articles/fact-evaluation-in-millions-scalable-rule-executor-service-20136.md>)

Original publisher: [Read original article](<https://medium.com/myntra-engineering/fact-evaluation-in-millions-scalable-rule-executor-service-921a2a19068e?source=rss----7484818e9f88---4>)

Author: Nikhil Anand

Published: 2024-10-01T13:47:49Z

Content type: article

Language: en

Sources: [Myntra](<https://devfeed.tech/sources/myntra.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [frequent-rule-updates](<https://devfeed.tech/tags/frequent-rule-updates.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [latency](<https://devfeed.tech/tags/latency.md>), [performance](<https://devfeed.tech/tags/performance.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [rule-engine](<https://devfeed.tech/tags/rule-engine.md>), [rules-in-millions](<https://devfeed.tech/tags/rules-in-millions.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This engineering article describes Myntra's Rule Executor Service, designed to evaluate millions of facts against a similarly large set of rules for multiple tenants. It outlines requirements for scalability, reliability, availability, consistency, low-latency evaluation, dynamic rule management, immediate rule reflection, and fact assessment details.

### Source excerpt

Overview The Rule Executor Service at Myntra stands out as a pivotal tool in the domain of rule engine. While, at a glance, one might wonder what sets it apart from the myriad of rule engines available today, the difference is profound. In Myntra ecosystem, supporting numerous pricing use cases necessitated building a capability that is engineered to handle vast volumes of rules, processing millions of facts against similar scale in terms of rules for multiple tenants with high reliability, performance, availability and consistency. In order for the system to be performant and use as a broker for all Myntra systems preference was given to scalability, and ability to persist and evaluate large large number of rules with low latency evaluation window. Functional & Non-Functional Requirements Let's first delve into the functional and non-functional requirements that necessitate the creation of the Rule Executor Service. Functional Requirements Dynamic Rule Management: The rule engine should be designed with adaptability as a core principle, enabling administrators or users to effortlessly update, introduce, or dynamically remove rules through the user interface as the landscape evolves. Immediate Rule Reflection: Following any changes to the rule set, the rule engine should ensure that all future fact evaluations reflect the latest rule standards with high degree of consistency. Once the creation, updating, or deletion of a rule has been confirmed as successful for the user, no subsequent fact evaluations should be conducted with the outdated rules from that timestamp onwards. This necessitates the updates to be immediately reflected in the knowledge base of the rule engine. Fact Assessment Details: Each evaluated fact should be supplemented with essential details, including the associated rule's ID, name, and description against which it was evaluated. In the absence of configured rules for the provided fact, enrich the fact by incorporating pertinent details regardin

## Organize your Views: SwiftUI edition

DevFeed: [Organize your Views: SwiftUI edition](<https://devfeed.tech/articles/organize-your-views-swiftui-edition-25574.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2023/organize-view-swiftui-edition/>)

Author: Marco Gomiero

Published: 2023-03-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [readability](<https://devfeed.tech/tags/readability.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-components](<https://devfeed.tech/tags/ui-components.md>)

### AI overview

This tutorial explains how to organize SwiftUI views in a Kotlin Multiplatform money-management app. It recommends keeping each screen's entry-point view small, splitting UI into reusable components, hoisting state so views remain stateless, and isolating ViewModel and external-dependency connections. The author reports improved readability and maintainability.

### Source excerpt

One of the pros of SwiftUI, and generally of declarative UI frameworks, is the capability of defining the UI with the same programming language the application uses. With SwiftUI, it is not necessary anymore to bridge the UI definitions from somewhere else, resulting in a decrease of context switching between two different environments (Storyboards and Swift code, for example) But "with great power comes great responsibility", and a codebase can quickly become a nightmare without some structure and organization. Long files, large structs, and stateful UI components that hinder reusability are examples that can lead to a messed codebase.

## Composed modifiers in Jetpack Compose

DevFeed: [Composed modifiers in Jetpack Compose](<https://devfeed.tech/articles/composed-modifiers-in-jetpack-compose-27464.md>)

Original publisher: [Read original article](<https://jorgecastilloprz.github.io/composed-modifiers-in-jetpack-compose>)

Author: Jorge Castillo

Published: 2022-04-04T10:00:00Z

Content type: tutorial

Language: en

Sources: [👨💻 Jorge Castillo](<https://devfeed.tech/sources/jorge-castillo.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [context](<https://devfeed.tech/topics/context.md>), [factory function](<https://devfeed.tech/topics/factory-function.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [context](<https://devfeed.tech/tags/context.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [factory-function](<https://devfeed.tech/tags/factory-function.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [modifiers](<https://devfeed.tech/tags/modifiers.md>), [state](<https://devfeed.tech/tags/state.md>), [stateful](<https://devfeed.tech/tags/stateful.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

This tutorial explains the difference between standard and composed modifiers in Jetpack Compose. Standard modifiers use extension functions and are stateless, while composed modifiers support state and access to composition context by creating them within a Composition.

### Source excerpt

Learn about composed modifiers and compare those to standard ones.

## Managing State and Persistence with remember() in Jetpack Compose

DevFeed: [Managing State and Persistence with remember() in Jetpack Compose](<https://devfeed.tech/articles/remember-remember-jetpack-compose-37557.md>)

Original publisher: [Read original article](<https://colintheshots.com/writing/remember-remember-jetpack-compose/>)

Published: 2022-01-12T19:41:23Z

Content type: article

Language: en

Sources: [Colin The Shots](<https://devfeed.tech/sources/colin-the-shots.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [ui](<https://devfeed.tech/topics/ui.md>), [saving](<https://devfeed.tech/topics/saving.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [remembersaveable](<https://devfeed.tech/tags/remembersaveable.md>), [rotation](<https://devfeed.tech/tags/rotation.md>), [saving](<https://devfeed.tech/tags/saving.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

This article explains how to use remember() in Jetpack Compose and when to choose rememberSaveable() or persistent storage. It recommends remembering only essential data, using rememberSaveable() for state that must survive rotation, and persisting larger or longer-lived data through a ViewModel.

### Source excerpt

During the first Kotlinconf in 2017, I asked Google for some kind of declarative user interface (UI) framework for Android. Specifically, I approached Stephanie Cuthbertson and Yigit Boyar at that

## Apollo Router: our GraphQL Federation runtime in Rust

DevFeed: [Apollo Router: our GraphQL Federation runtime in Rust](<https://devfeed.tech/articles/apollo-router-our-graphql-federation-runtime-in-rust-23210.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/apollo-router-our-graphql-federation-runtime-in-rust>)

Author: Jesse Rosenberger

Published: 2021-11-10T11:15:00Z

Content type: release

Language: en

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

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Critical Infrastructure](<https://devfeed.tech/topics/critical-infrastructure.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [apollo-federation](<https://devfeed.tech/tags/apollo-federation.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [critical-infrastructure](<https://devfeed.tech/tags/critical-infrastructure.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [graphql-federation](<https://devfeed.tech/tags/graphql-federation.md>), [latency](<https://devfeed.tech/tags/latency.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [performance](<https://devfeed.tech/tags/performance.md>), [release](<https://devfeed.tech/tags/release.md>), [rust](<https://devfeed.tech/tags/rust.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

Apollo introduces the Apollo Router, a next-generation GraphQL Federation runtime written in Rust. The article describes its standalone, multithreaded design and reports early benchmarks showing less than 10 ms of added latency per operation and up to eight times the load capacity of the JavaScript Apollo Gateway.

### Source excerpt

At Apollo, we help developers power the world's most important applications with a graph. Whether you're shopping online, booking travel, or binge-watching your favorite movies, you're using the graph every day. These experiences are all built on Apollo Federation, an architecture for declaratively composing GraphQL APIs into a unified graph.

## EF-Supported Teams: Research & Development Roundup

DevFeed: [EF-Supported Teams: Research & Development Roundup](<https://devfeed.tech/articles/ef-supported-teams-research-development-roundup-16973.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2021/08/12/ef-supported-teams-research-and-development-update-2021-pt-2>)

Author: Ethereum Foundation

Published: 2021-08-12T00:00:00Z

Content type: article

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [devcon](<https://devfeed.tech/tags/devcon.md>), [development](<https://devfeed.tech/tags/development.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [network](<https://devfeed.tech/tags/network.md>), [organizational](<https://devfeed.tech/tags/organizational.md>), [research-development](<https://devfeed.tech/tags/research-development.md>), [security-research](<https://devfeed.tech/tags/security-research.md>), [sharding](<https://devfeed.tech/tags/sharding.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

This roundup reports on progress from EF-supported Ethereum teams, including community grants, research into statelessness, custody proofs, sharding, scaling and security, and ethereum.org roadmap work. It also describes Ethereum network activity around the London update, Altair and the Merge.

### Source excerpt

Welcome to London! This is an exciting time for the Ethereum ecosystem, and the pace will only pick up further as we approach Altair and the Merge in the months ahead. The Beacon Chain now has 6.5+ million Ether staked, and 200K+ active validators online across five clients, and...

## Welcome you are visitor number 12345

DevFeed: [Welcome you are visitor number 12345](<https://devfeed.tech/articles/welcome-you-are-visitor-number-12345-32085.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/welcome-you-are-visitor-number-12345/>)

Published: 2021-07-12T19:44:03Z

Content type: tutorial

Language: en

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

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

Tags: [90s-website](<https://devfeed.tech/tags/90s-website.md>), [animate](<https://devfeed.tech/tags/animate.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [snippet](<https://devfeed.tech/tags/snippet.md>), [state](<https://devfeed.tech/tags/state.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [ui](<https://devfeed.tech/tags/ui.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>), [visitor-counter](<https://devfeed.tech/tags/visitor-counter.md>)

### AI overview

A tutorial on building an animated visitor counter in a classic 1990s website style. It explains how to animate each digit independently, manage the counter and counting direction in a view model, keep composable UI components stateless and reusable, and connect the screen through navigation and Hilt.

### Source excerpt

Another step forward in recreating the icon 90s website look is the hit counter, visitor counter or web counter in classic squemorphic odometer style. I was inspired by a recent episode of Code with Italians where they animated a time field. I wanted to change the counter component to animate each number individually to get that odometer look. Before doing this though there was a question of state. I wanted to make a counter that would auto increment in a coroutine. It had to change direction up or down if you tapped it. To do this I decided to store the state and the counting direction in a view model. This allowed me to keep the components as stateless as possible. The components are re-usable because the logic that makes the numbers go up or down is held outside of the composable functions. The recommendation from Google is when you use a view model to hold state, keep it close to the root screen. I made a screen for my visitor counter and added it to my navigation code. Since I already had Hilt enabled in the project it was pretty easy to get hold of the viewmodel. The code snippet in the Navigation looks like this: NavHost(navController, startDestination = "overview") { //... other routes go here composable(route = "counter") { val viewModel: CounterViewModel = hiltViewModel() //<--- get the viewmodel from Hilt val count by viewModel.counter.collectAsState() //<--- the viewmodel exposes the counter as a StateFlow CounterScreen( count = count, onClick = { viewModel.onClick() } // <--- the viewmodel provides a method for when the element is clicked ) } } The CounterScreen is stateless and gets the value of the counter and the event handler as parameters. The CounterScreen has a Counter composable. The role of the Counter composable is to create a row of individual odometer numbers from the passed values. Also it should intercept a click and call the click handler. @Composable fun Counter( onClick: () -> Unit, count: Int, width: Int ) { val displayWidth = maxOf(3,

## The Stateless Tech Tree: reGenesis Edition

DevFeed: [The Stateless Tech Tree: reGenesis Edition](<https://devfeed.tech/articles/the-stateless-tech-tree-regenesis-edition-16922.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2020/08/24/the-1x-files-tech-tree-regenesis>)

Author: Griffin Ichiba Hotchkiss

Published: 2020-08-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [Network](<https://devfeed.tech/topics/network.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [dht](<https://devfeed.tech/tags/dht.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [network](<https://devfeed.tech/tags/network.md>), [re](<https://devfeed.tech/tags/re.md>), [research-development](<https://devfeed.tech/tags/research-development.md>), [smart-contract](<https://devfeed.tech/tags/smart-contract.md>), [snapshots](<https://devfeed.tech/tags/snapshots.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [structure](<https://devfeed.tech/tags/structure.md>), [switching](<https://devfeed.tech/tags/switching.md>)

### AI overview

The article revises Ethereum 1.x's Tech Tree around reGenesis and other milestones that could provide a more attainable mid-term step toward Stateless Ethereum. It also discusses static state networks, code merkleization, binary trie state representation, and the transition challenges involved.

### Source excerpt

This week we're revising the Tech Tree to reflect some new major milestones to Ethereum 1.x R&D that are not quite a complete realization of Stateless Ethereum, but much more reasonably attainable in the mid-term. The most significant addition to the tech tree is Alexey's reGenesis proposal. This is far...

## Eth2 Phase 0 update: v0.11.0 release, consensus research, and statelessness progress

DevFeed: [Eth2 Phase 0 update: v0.11.0 release, consensus research, and statelessness progress](<https://devfeed.tech/articles/eth2-quick-update-no-9-16893.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2020/03/17/eth2-quick-update-no-9>)

Author: Danny Ryan

Published: 2020-03-17T00:00:00Z

Content type: news

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [hardening](<https://devfeed.tech/tags/hardening.md>), [network](<https://devfeed.tech/tags/network.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [research](<https://devfeed.tech/tags/research.md>), [research-development](<https://devfeed.tech/tags/research-development.md>), [stateless](<https://devfeed.tech/tags/stateless.md>)

### AI overview

This update reports that Eth2 Phase 0 was stable, v0.11.0 was released as a target for multi-client testnets, and the Combining GHOST and Casper paper was published for public review. It also discusses progress on statelessness, BLS specification stability, client interoperability, and network-protocol refinements.

### Source excerpt

Strange times. I hope you are all well and continue to take care of yourselves, your families, and your communities. We're a bit overdue on a quick update. My apologies. I'll keep them coming at a regular clip after this one. Eth2 is looking good -- Phase 0 is...

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