# async

Asynchronous software design allows a program to perform tasks without stopping to wait for them to complete, enabling other work to continue while awaiting results.

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

## Async GRPO with LoRA across HF Jobs: a bucket, a proxy, and no NCCL

DevFeed: [Async GRPO with LoRA across HF Jobs: a bucket, a proxy, and no NCCL](<https://devfeed.tech/articles/async-grpo-with-lora-across-hf-jobs-a-bucket-a-proxy-and-no-nccl-17376.md>)

Original publisher: [Read original article](<https://huggingface.co/blog/asyncgrpo-lora-hfjobs>)

Author: Amine Dirhoussi; Quentin Gallouédec; Kashif Rasul; Sergio Paniego

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

Content type: article

Language: en

Sources: [Hugging Face - Blog](<https://devfeed.tech/sources/hugging-face-blog.md>)

Topics: [lora](<https://devfeed.tech/topics/lora.md>), [grpo](<https://devfeed.tech/topics/grpo.md>), [jobs](<https://devfeed.tech/topics/jobs.md>), [vllm](<https://devfeed.tech/topics/vllm.md>), [NCCL](<https://devfeed.tech/topics/nccl.md>), [async](<https://devfeed.tech/topics/async.md>), [hugging face](<https://devfeed.tech/topics/hugging-face.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [grpo](<https://devfeed.tech/tags/grpo.md>), [hub](<https://devfeed.tech/tags/hub.md>), [hugging-face](<https://devfeed.tech/tags/hugging-face.md>), [jobs](<https://devfeed.tech/tags/jobs.md>), [llm](<https://devfeed.tech/tags/llm.md>), [lora](<https://devfeed.tech/tags/lora.md>), [nccl](<https://devfeed.tech/tags/nccl.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rl](<https://devfeed.tech/tags/rl.md>), [storage](<https://devfeed.tech/tags/storage.md>), [trl](<https://devfeed.tech/tags/trl.md>), [vllm](<https://devfeed.tech/tags/vllm.md>)

### AI overview

This article describes asynchronous GRPO training with a LoRA adapter across separate Hugging Face Jobs. The adapter is synchronized to vLLM replicas through a shared Storage Bucket, while a proxy handles authentication, rollout routing, and adapter-load broadcasts. Five runs reduced the time for 500 steps from 3 hours 27 minutes to 53 minutes.

### Source excerpt

We're on a journey to advance and democratize artificial intelligence through open source and open science.

## Scrapli vs Nornir: What's the Difference

DevFeed: [Scrapli vs Nornir: What's the Difference](<https://devfeed.tech/articles/scrapli-vs-nornir-what-s-the-difference-30886.md>)

Original publisher: [Read original article](<https://www.rogerperkin.co.uk/network-automation/scrapli/scrapli-vs-nornir/>)

Author: Roger Perkin

Published: 2026-08-06T11:08:45Z

Content type: comparison

Language: en

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

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Network](<https://devfeed.tech/topics/network.md>), [async](<https://devfeed.tech/topics/async.md>), [NETCONF](<https://devfeed.tech/topics/netconf.md>), [ssh](<https://devfeed.tech/topics/ssh.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [netconf](<https://devfeed.tech/tags/netconf.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [python](<https://devfeed.tech/tags/python.md>), [scrapli](<https://devfeed.tech/tags/scrapli.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [vs](<https://devfeed.tech/tags/vs.md>)

### AI overview

This comparison explains that Scrapli and Nornir address different layers of Python network automation rather than directly competing. It describes Scrapli as a connection-focused library for communicating with individual network devices and notes its support for SSH, Telnet, NETCONF, synchronous and asynchronous operation, and structured output.

### Source excerpt

If you've spent any time in the Python network automation world, you'll have bumped into both Scrapli and Nornir. They come up in the same conversations, the same blog posts and the same job specs, so it's natural to line them up and ask: which one should I use? It's a fair question, but it's built on a slightly ...

## Community Comebacks, Angular 21.1 Features, and Smarter Signal Forms ⚡

DevFeed: [Community Comebacks, Angular 21.1 Features, and Smarter Signal Forms ⚡](<https://devfeed.tech/articles/community-comebacks-angular-21-1-features-and-smarter-signal-forms-18905.md>)

Original publisher: [Read original article](<https://blog.angular.dev/angular-community-weekly-14-25842ff36020?source=rss----447683c3d9a3---4>)

Author: Angular

Published: 2026-06-19T10:01:04Z

Content type: article

Language: en

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

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [async](<https://devfeed.tech/topics/async.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [angular-newsletter](<https://devfeed.tech/tags/angular-newsletter.md>), [angular-release](<https://devfeed.tech/tags/angular-release.md>), [angular-weekly](<https://devfeed.tech/tags/angular-weekly.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [forms](<https://devfeed.tech/tags/forms.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [migration](<https://devfeed.tech/tags/migration.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

This Angular community roundup covers podcast episodes about Angular 20 and developer career setbacks, a recap of Angular 21.1, Signal Forms techniques for asynchronous validators and debouncing, dynamic form lists, an interview about joining the Angular team, and migration to modern Control Flow syntax.

### Source excerpt

The Angular community is about much more than just code -- it's about the people building it, their career journeys, and how we collaborate. This week's roundup features inspiring community stories alongside technical deep dives into the Angular 21.1 features and advanced form tuning. Tune into this week's excellent community resources The Dev Life Podcast: Inside Angular 20 & Navigating Layoffs Brooke Avery @JediBravery and Matthew Christiansen back-to-back drop two must-listen episodes of The Dev Life podcast. First, they sit down with Minko Gechev @mgechev to go inside the engineering decisions of Angular 20. Then, they host GDE Chris Perko for an incredibly timely, candid conversation about bouncing back from tech layoffs and turning career setbacks into massive opportunities. Listen to Ep. 3 (Inside Angular 20): https://www.youtube.com/watch?v=QhfXXXzOD6g Listen to Ep. 4 (Navigating Layoffs): https://www.youtube.com/watch?v=laYzvyEDtw8 What was new in Angular 21.1? Alain Chautard @AlainChautard provides a fantastic, concise recap of the January Angular release. If you want to know what minor features, bug fixes, and performance polishes landed in Angular 21.1, this is your go-to guide. Read the release recap: https://blog.angulartraining.com/whats-new-in-angular-21-1-7454f699104f Stop Wasting API Calls! Async Validators & Debouncing Fanis Prodromou @prodromouf tackles a massive real-world performance issue in form handling. Learn how to combine asynchronous validators with debouncing in the Signal Forms API to keep your backend from being overwhelmed by unnecessary API requests. Watch the tutorial: https://youtu.be/R10dQ4zlWs0 Dynamic Lists & Joining the Angular Team (French) Modeste Assiongbon @rblmdst shares two incredible French-language videos this week. Dive into a technical walkthrough on handling dynamic field lists using Signal Forms. Then, catch an inspiring interview with Matthieu Riegler @Jean_Meche, tracking his journey from a casual open-source cont

## From FileUploadWorkflow to creative OS: How Layer scaled on Temporal

DevFeed: [From FileUploadWorkflow to creative OS: How Layer scaled on Temporal](<https://devfeed.tech/articles/from-fileuploadworkflow-to-creative-os-how-layer-scaled-on-temporal-35833.md>)

Original publisher: [Read original article](<https://temporal.io/blog/fileuploadworkflow-creative-os-layer-scaled-temporal>)

Author: Alex Engel

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

Content type: article

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [async](<https://devfeed.tech/topics/async.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [lora](<https://devfeed.tech/topics/lora.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [article](<https://devfeed.tech/tags/article.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [community](<https://devfeed.tech/tags/community.md>), [developer](<https://devfeed.tech/tags/developer.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [inference](<https://devfeed.tech/tags/inference.md>), [lora](<https://devfeed.tech/tags/lora.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [node](<https://devfeed.tech/tags/node.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [production](<https://devfeed.tech/tags/production.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

Layer describes how it expanded from a small set of Temporal workflows into about 50 workflow types running in production. The article covers the product and architecture changes behind its creative operating system, including image generation, LoRA fine-tuning, multimodal pipelines, billing synchronization, and large-scale parallel asset generation.

### Source excerpt

How Layer went from a handful of Temporal Workflows to 50 in production. The architecture, the lessons, and what broke along the way.

## Waiting for PostgreSQL 19 - Online enabling and disabling of data checksums

DevFeed: [Waiting for PostgreSQL 19 - Online enabling and disabling of data checksums](<https://devfeed.tech/articles/waiting-for-postgresql-19-online-enabling-and-disabling-of-data-checksums-33687.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/04/15/waiting-for-postgresql-19-online-enabling-and-disabling-of-data-checksums/>)

Author: depesz

Published: 2026-04-15T18:05:36Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [postgresql clusters](<https://devfeed.tech/topics/postgresql-clusters.md>), [async](<https://devfeed.tech/topics/async.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [background](<https://devfeed.tech/tags/background.md>), [background-work](<https://devfeed.tech/tags/background-work.md>), [checksums](<https://devfeed.tech/tags/checksums.md>), [data-checksum](<https://devfeed.tech/tags/data-checksum.md>), [io](<https://devfeed.tech/tags/io.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [vacuum](<https://devfeed.tech/tags/vacuum.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

This article examines a PostgreSQL 19 patch that allows data checksums to be enabled or disabled while a cluster is running. The command is immediate, but rewriting every table and index occurs in the background and can require substantial I/O. The article also discusses cost-delay options for controlling the background worker.

### Source excerpt

On 3rd of April 2026, Daniel Gustafsson committed patch: Online enabling and disabling of data checksums This allows data checksums to be enabled, or disabled, in a running cluster without restricting access to the cluster during processing. Data checksums could prior to this only be enabled during initdb or when the cluster is ... Continue reading "Waiting for PostgreSQL 19 - Online enabling and disabling of data checksums"

## System Migration: Minimize Downtime, Maximize Efficiency

DevFeed: [System Migration: Minimize Downtime, Maximize Efficiency](<https://devfeed.tech/articles/system-migration-minimize-downtime-maximize-efficiency-39555.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/03-system-migration/>)

Author: hello@ankit-rana.com

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

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>), [systems](<https://devfeed.tech/topics/systems.md>), [async](<https://devfeed.tech/topics/async.md>), [client](<https://devfeed.tech/topics/client.md>), [event driven](<https://devfeed.tech/topics/event-driven.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [apache-kafka](<https://devfeed.tech/tags/apache-kafka.md>), [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [async](<https://devfeed.tech/tags/async.md>), [bridge-layer](<https://devfeed.tech/tags/bridge-layer.md>), [data-pipelines](<https://devfeed.tech/tags/data-pipelines.md>), [downtime](<https://devfeed.tech/tags/downtime.md>), [event-driven-architecture](<https://devfeed.tech/tags/event-driven-architecture.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [migration](<https://devfeed.tech/tags/migration.md>), [observability](<https://devfeed.tech/tags/observability.md>), [production](<https://devfeed.tech/tags/production.md>), [reliability](<https://devfeed.tech/tags/reliability.md>), [rollback](<https://devfeed.tech/tags/rollback.md>), [system-migration](<https://devfeed.tech/tags/system-migration.md>), [traffic-leakage](<https://devfeed.tech/tags/traffic-leakage.md>)

### AI overview

A practical guide to migrating an existing system with minimal disruption. It recommends isolated-environment testing, load testing, adapters for incompatible contracts, synchronized asynchronous pipelines, a Kafka-based shared stream, a bridge layer, staged traffic switching, monitoring, and rollback preparation.

### Source excerpt

Migrate behind a bridge layer that routes all client traffic and supports three modes: old-only, dual, and new-only. Run dual mode to compare responses without user impact, keep a back-sync pipeline so the old system stays current for rollback, and shift traffic in stages while watching metrics at each step.

## One page of async Rust

DevFeed: [One page of async Rust](<https://devfeed.tech/articles/one-page-of-async-rust-36229.md>)

Original publisher: [Read original article](<https://dotat.at/@/2026-02-16-async.html>)

Published: 2026-02-17T19:34:20Z

Content type: tutorial

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [async](<https://devfeed.tech/topics/async.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

A practical exploration of implementing a fake-time task simulation with lower-level async Rust. It explains futures, polling, pinning, contexts, wakers, and the boilerplate involved.

### Source excerpt

I'm writing a simulation, or rather, I'm procrastinating, and this blog post is the result of me going off on a side-track from the main quest. The simulation involves a bunch of tasks that go through a series of steps with delays in between, and each step can affect some shared state. I want it to run in fake virtual time so that the delays are just administrative updates to variables without any real sleep()ing, and I want to ensure that the mutations happen in the right order. I thought about doing this by representing each task as an enum State with a big match state to handle each step. But then I thought, isn't async supposed to be able to write the enum State and match state for me? And then I wondered how much the simulation would be overwhelmed by boilerplate if I wrote it using async. Rather than digging around for a crate that solves my problem, I thought I would use this as an opportunity to learn a little about lower-level async Rust. Turns out, if I strip away as much as possible, the boilerplate can fit on one side of a sheet of paper if it is printed at a normal font size. Not too bad! But I have questions... async fn-damentals pin a task noop context primops, generally primops, minimally contexts and wakers primops, commandingly primops, yieldingly fake sleep in action questions async fn-damentals My starting point was to write: async fn deep_thought() -> u32 { 42 } fn main() { deep_thought(); } playground When I call deep_thought() I immediately get a Future<Output = u32>. As the compiler warns, none of the code in deep_thought() runs, it just constructs a value of an ineffable type which contains the initial state of deep_thought()'s state machine. To actually run it, I need to poll() it. The Future::poll() method has a signature that immediately presents a number of obstacles: fn poll( self: Pin<&mut Self>, ctx: &mut Context<'_>, ) -> Poll<Self::Output> pin a task Unlike normal Rust data structures, a Future can contain references to itself. (In a

## Don't Block Suspend Functions

DevFeed: [Don't Block Suspend Functions](<https://devfeed.tech/articles/don-t-block-suspend-functions-32247.md>)

Original publisher: [Read original article](<https://publicobject.com/2026/01/22/dont-block-suspend-functions/>)

Author: Jesse Wilson

Published: 2026-01-22T04:32:49Z

Content type: tutorial

Language: en

Sources: [Public Object](<https://devfeed.tech/sources/public-object.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [async](<https://devfeed.tech/topics/async.md>), [Job](<https://devfeed.tech/topics/job.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [blocking](<https://devfeed.tech/tags/blocking.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

This Kotlin tutorial explains why blocking calls inside suspend functions can prevent other coroutines from running. It contrasts preemptive thread concurrency with cooperative coroutine concurrency and recommends avoiding blocking functions in suspending code, using the I/O dispatcher when necessary, and avoiding runBlocking.

### Source excerpt

Here's a program that launches 3 jobs. The first runs forever and the other two exchange a value. @Test fun test() = runTest { val channel = Channel<String>() val deferredA = async { while (isActive) { delay(1_000) } } val deferredB = async { channel.send("hello") } val deferredC = async { channel.receive() } deferredB.await(

## @isolated(any)

DevFeed: [@isolated(any)](<https://devfeed.tech/articles/isolated-any-28998.md>)

Original publisher: [Read original article](<https://nshipster.com/isolated-any/>)

Author: Matt Massicotte

Published: 2025-08-04T07:00:00Z

Content type: article

Language: en

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

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

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [async](<https://devfeed.tech/tags/async.md>), [suspend](<https://devfeed.tech/tags/suspend.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains why @isolated(any) was introduced, using async functions to show how isolation can change when a task suspends. It also describes the tradeoff between flexible function types and the loss of statically inspectable isolation information.

### Source excerpt

There are cases where just a little more visibility and control over how to schedule asynchronous work can make all the difference.

## Scaling recommendations service at OLX

DevFeed: [Scaling recommendations service at OLX](<https://devfeed.tech/articles/scaling-recommendations-service-at-olx-20390.md>)

Original publisher: [Read original article](<https://tech.olx.com/scaling-recommendations-service-at-olx-db4548813e3a?source=rss----761b019b483f---4>)

Author: Jordi Esteve Sorribas

Published: 2025-07-08T15:03:23Z

Content type: article

Language: en

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

Topics: [FastAPI](<https://devfeed.tech/topics/fastapi.md>), [recommendation systems](<https://devfeed.tech/topics/recommendation-systems.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Python](<https://devfeed.tech/topics/python.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [async](<https://devfeed.tech/topics/async.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [backend](<https://devfeed.tech/tags/backend.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [fastapi](<https://devfeed.tech/tags/fastapi.md>), [latency](<https://devfeed.tech/tags/latency.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [python](<https://devfeed.tech/tags/python.md>), [recommendation-systems](<https://devfeed.tech/tags/recommendation-systems.md>), [recommendations](<https://devfeed.tech/tags/recommendations.md>), [scalability](<https://devfeed.tech/tags/scalability.md>)

### AI overview

This article describes how OLX scaled a Python FastAPI recommendations service to handle tens of thousands of requests per second with p99 latency below 10 ms. It discusses the service's ownership, data sources, and the use of asynchronous non-blocking I/O.

### Source excerpt

Optimizing FastAPI at Scale: Lessons from OLX's Recommendation PlatformPhoto by Rosy KoIn distributed systems, there is a motto that says 'you are as slow as your slowest tasks'. In Python, thanks to the notorious Global Interpreter Lock (GIL), this issue is amplified: 'your slowest task will make every other task slower'. In this article, I'll walk you through the optimizations we made to scale a FastAPI service that now handles tens of thousands of requests per second, achieving a p99 latency under 10ms.Introduction OLX is a global online marketplace that enables users to buy and sell goods and services, primarily through classified ads. We have a clear vision: to create leading marketplace ecosystems enabled by tech, powered by trust, and loved by customers. Every month, we engage 45 million app users and support over 73 million active listings. To help users seamlessly navigate this vast inventory, we've integrated recommendation systems across multiple touchpoints in all our platforms. These recommendations are powered by the recommendations platform, which is responsible for delivering personalized suggestions across various contexts. Most, if not all, of these are served through a dedicated recommendations service. Over the past few months, we've built and scaled this system within the data team, successfully shifting the ownership from a shared backend service to a service fully owned by the team to gain greater autonomy and flexibility. The team decided to build it with Python, as it is the go-to language for the data and machine learning team and is the most widely used language within both the team and the broader domain. While Python allows for rapid development and prototyping, working at scale has surfaced several challenges and trade-offs. It hasn't been an easy journey, but it's one that's taught us a lot and significantly matured our infrastructure and processes. To Async or Not Async The service consumes data from various sources: ScyllaDB, DynamoD

## Using Clojure channels to increase throughput

DevFeed: [Using Clojure channels to increase throughput](<https://devfeed.tech/articles/using-clojure-channels-to-increase-throughput-30521.md>)

Original publisher: [Read original article](<https://medium.com/helpshift-engineering/using-clojure-channels-to-increase-throughput-c051cc7f9893?source=rss----3229f31ca4f4---4>)

Author: Abhinav Dubey

Published: 2025-05-28T10:07:12Z

Content type: tutorial

Language: en

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

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [async](<https://devfeed.tech/topics/async.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>)

Tags: [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [channel](<https://devfeed.tech/tags/channel.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [core-async](<https://devfeed.tech/tags/core-async.md>), [grafana](<https://devfeed.tech/tags/grafana.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [multithreading](<https://devfeed.tech/tags/multithreading.md>), [parallelism](<https://devfeed.tech/tags/parallelism.md>)

### AI overview

This tutorial explains how to increase throughput in a Clojure-based Kafka consumer by using core.async channels and multiple worker threads. It compares a single-threaded baseline with configurations using three and ten workers, reporting shorter processing times for 1,000 events in the described benchmark.

### Source excerpt

When building systems that process large volumes of messages synchronously, performance bottlenecks can quickly become a challenge specially with single-threaded designs. In this post, we'll look at how leveraging worker threads in a Clojure-based Kafka consumer can significantly boost throughput & reduce total processing time. Using simple concurrency primitives, it's possible to achieve parallelism & scale gracefully, all while keeping the codebase clean & maintainable. We'll start with a baseline, introduce worker threads using Clojure's core.async & measure the impact. Setup & Context Kafka & Zookeeper For observability: Grafana Kafka producer: A simple script that sends messages to a Kafka topic at a configurable rate (messages per minute) for a fixed duration. After each event is pushed, a counter metric is emitted Kafka consumer: A simple script that listens to a topic & consumes messages & simulates processing time finding square-root of a number (henceforth, assume that it takes ~1 second to find the square root) . A counter metric is emitted after processing each message The Baseline: Single-Threaded Consumer If each message takes t seconds to process & there are n messages, total processing time becomes n x t seconds. This provides a clean baseline to evaluate the impact of using channel moving forward. Adding workers with core.asyncValues are conveyed on queue-like channels. By default channels require producer and consumer to rendezvous for the transfer of a value through the channel https://clojuredocs.org/clojure.core.async To improve throughput, we introduce parallelism using Clojure's core.async channels. Messages from Kafka are fed into a channel, & multiple worker threads read from this channel to process messages concurrently Here, we used >!! (blocking put) & <!! (blocking take) to communicate via channels & future to execute the business-logic on a separate thread Who gets blocked & when : The thread putting message into the channel will get bl

## Укрощаем асинхронный код с помощью async/await

DevFeed: [Укрощаем асинхронный код с помощью async/await](<https://devfeed.tech/articles/async-await-30683.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/hh/articles/904506/>)

Author: McDee (hh.ru)

Published: 2025-04-29T06:50:38Z

Content type: tutorial

Language: ru

Sources: [HeadHunter RU](<https://devfeed.tech/sources/headhunter-ru.md>)

Topics: [async/await](<https://devfeed.tech/topics/async-await.md>), [async](<https://devfeed.tech/topics/async.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-92ecabba3495](<https://devfeed.tech/tags/ios-92ecabba3495.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-218f4e01a540](<https://devfeed.tech/tags/tag-218f4e01a540.md>), [tag-7b7ea8dda2d4](<https://devfeed.tech/tags/tag-7b7ea8dda2d4.md>), [tag-ae979152fd5d](<https://devfeed.tech/tags/tag-ae979152fd5d.md>), [tag-f538878e20ff](<https://devfeed.tech/tags/tag-f538878e20ff.md>)

### AI overview

This Russian-language tutorial explains async/await for asynchronous and multithreaded programming in iOS applications with Swift. It introduces the core concepts and compares async/await with GCD, highlighting code readability and error handling.

### Source excerpt

Привет! Меня зовут Андрей Максимкин, я iOS-разработчик в hh. Мы в команде активно используем async/await подход при написании нового кода, а также активно применяем при переписывании старого. В процессе работы сталкивались с некоторыми интересными и не самыми очевидными моментами -- их и рассмотрим в статье. Работа с различными потоками -- очень важная часть разработки мобильных приложений под iOS. Грамотное распределение нагрузки положительно влияет на скорость работы приложения, а значит, и на пользовательский опыт. До Swift 5.5 для работы с многопоточностью в основном использовали фреймворки GCD и NSOperation. Начиная с версии Swift 5.5 стал доступен функционал async/await. В статье мы кратко расскажем о базовых принципах данного подхода и сделаем акцент на проблемах и особенностях, которые необходимо знать при написании кода. Информация будет полезна тем, кто уже знаком с функционалом async/await, а некоторые примеры могут быть интересны и более продвинутым разработчикам. Поехали!

## Announcing Lix 2.92 "Bombe glacée"

DevFeed: [Announcing Lix 2.92 "Bombe glacée"](<https://devfeed.tech/articles/announcing-lix-2-92-bombe-glacee-31372.md>)

Original publisher: [Read original article](<https://lix.systems/blog/2025-01-18-lix-2.92-release/>)

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

Content type: release

Language: en

Sources: [News on Lix](<https://devfeed.tech/sources/news-on-lix.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [async](<https://devfeed.tech/topics/async.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [deprecated](<https://devfeed.tech/topics/deprecated.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [async](<https://devfeed.tech/tags/async.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [release](<https://devfeed.tech/tags/release.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Lix 2.92 is a major release focused on evolving its evaluator and store, improving evaluator speed, and removing rarely used and troublesome Nix language features. It also reworks the daemon with asynchronous C++ code and begins deprecating problematic language features.

### Source excerpt

We at the Lix team are proud to announce our third major release, version 2.92 "Bombe glacée". This release focuses on evolution work of the evaluator and store in order to be able to replace the Nix store protocol, to make the evaluator faster, and to remove rarely-used and troublesome features of the Nix language.

## Announcing a new operation: Workflow Update

DevFeed: [Announcing a new operation: Workflow Update](<https://devfeed.tech/articles/announcing-a-new-operation-workflow-update-35710.md>)

Original publisher: [Read original article](<https://temporal.io/blog/announcing-a-new-operation-workflow-update>)

Author: Dan Davison

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

Content type: release

Language: en

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

Topics: [async](<https://devfeed.tech/topics/async.md>), [reliability](<https://devfeed.tech/topics/reliability.md>), [Low Latency](<https://devfeed.tech/topics/low-latency.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [error](<https://devfeed.tech/tags/error.md>), [product-news](<https://devfeed.tech/tags/product-news.md>), [reliability](<https://devfeed.tech/tags/reliability.md>), [update](<https://devfeed.tech/tags/update.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Temporal announces that Workflow Update is generally available. The operation lets clients send a message to a Workflow, wait for handling to complete, and receive a result or error. The article explains how Update differs from Queries and Signals, demonstrates executing Activities, and discusses validators and design patterns.

### Source excerpt

Discover the latest workflow update designed to simplify operations and boost reliability in Temporal.

## A Pattern for Composing Flow Operations

DevFeed: [A Pattern for Composing Flow Operations](<https://devfeed.tech/articles/a-pattern-for-composing-flow-operations-39359.md>)

Original publisher: [Read original article](<https://kt.academy/article/pattern_for_composing_flows>)

Published: 2024-04-15T00: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>), [Streams](<https://devfeed.tech/topics/streams.md>), [async](<https://devfeed.tech/topics/async.md>), [backpressure](<https://devfeed.tech/topics/backpressure.md>), [flux](<https://devfeed.tech/topics/flux.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [flux](<https://devfeed.tech/tags/flux.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [streams](<https://devfeed.tech/tags/streams.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains a pattern for composing Kotlin Flow operations by collecting one cold flow within another flow definition. It discusses sequential processing, asynchronous operations, and the limitations of using internal flow types when composing streams.

### Source excerpt

Extending and operating on top of your existing flows

## Community threads: Is it possible to create an event-based Workflow?

DevFeed: [Community threads: Is it possible to create an event-based Workflow?](<https://devfeed.tech/articles/community-threads-is-it-possible-to-create-an-event-based-workflow-35759.md>)

Original publisher: [Read original article](<https://temporal.io/blog/community-threads-is-it-possible-to-create-an-event-based-workflow>)

Author: Eric O'Rear

Published: 2023-11-27T05:00:00Z

Content type: tutorial

Language: en

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

Topics: [async](<https://devfeed.tech/topics/async.md>), [await](<https://devfeed.tech/topics/await.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [async](<https://devfeed.tech/tags/async.md>), [community](<https://devfeed.tech/tags/community.md>), [core](<https://devfeed.tech/tags/core.md>), [python](<https://devfeed.tech/tags/python.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This Community Threads article explains how to create event-based Workflows in Temporal. It describes using Signals, Awaitables, variables, and wait conditions, with a Python example for asynchronous Activities.

### Source excerpt

Handling event-based signals is one of the core components of Temporal Workflows. In this Community Threads post, a new Temporal user asks: "How do I create an event-based Workflow with Temporal?"

## Blog: Falco Weekly 47 - 2023

DevFeed: [Blog: Falco Weekly 47 - 2023](<https://devfeed.tech/articles/blog-falco-weekly-47-2023-32510.md>)

Original publisher: [Read original article](<https://falco.org/blog/falco-w-47-2023-weekly-recap/>)

Published: 2023-11-24T00:00:00Z

Content type: article

Language: en

Sources: [Falco - Falco](<https://devfeed.tech/sources/falco-falco.md>), [Falco - The Falco blog](<https://devfeed.tech/sources/falco-the-falco-blog.md>)

Topics: [Falco](<https://devfeed.tech/topics/falco.md>), [ci](<https://devfeed.tech/topics/ci.md>), [undefined\_behavior](<https://devfeed.tech/topics/undefined-behavior.md>), [async](<https://devfeed.tech/topics/async.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [changes](<https://devfeed.tech/tags/changes.md>), [ci](<https://devfeed.tech/tags/ci.md>), [falco](<https://devfeed.tech/tags/falco.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [undefined-behavior](<https://devfeed.tech/tags/undefined-behavior.md>), [weekly](<https://devfeed.tech/tags/weekly.md>)

### AI overview

A weekly Falco community recap covering cleanup and fixes across Falco libraries, including async event queue and statistics updates, planned tracer deprecation and architecture support, a new official adopter, Falcoctl driver-command work, and the Driverkit v0.16.0 release.

### Source excerpt

Another week, another load of improvements everywhere in the falcosecurity! What happened in Falco this week? Let's go through the major changes that happened in various repositories under the falcosecurity organization. Libs The anticipated 0.14.0 libs tag (and its driver counterpart) are a bit late, unfortunately. Anyway, spring cleaning went on this week! removed stopwatch implementation, now unused: https://github.com/falcosecurity/libs/pull/1493 removed unused sinsp_test.cpp file: https://github.com/falcosecurity/libs/pull/1499 removed jq dep: https://github.com/falcosecurity/libs/pull/1500 Moreover, some fixes on the recently introduced async event queue class happened: https://github.com/falcosecurity/libs/pull/1490, https://github.com/falcosecurity/libs/pull/1504. Finally, some fixes around the stats code: https://github.com/falcosecurity/libs/pull/1505, https://github.com/falcosecurity/libs/pull/1506. Rumors have it coming next week: New big cleanup: deprecation of tracers: https://github.com/falcosecurity/libs/pull/1503 ppc64le support for bpf and kmod + CI build jobs: https://github.com/falcosecurity/libs/pull/1497 remove old metaevents implementation: https://github.com/falcosecurity/libs/pull/1495 Small fix on top of ia32 work: https://github.com/falcosecurity/libs/pull/1501 Second part of an effort by Luca Guerra to clean up libsinsp from potential undefined behavior: https://github.com/falcosecurity/libs/pull/1502. This is so important that deserved to be left alone :) Falco We have a new official adopter! Welcome to Thought Machine: https://github.com/falcosecurity/falco/pull/2919 Small cleanup to avoid Falco configuratiom to be inited twice: https://github.com/falcosecurity/falco/pull/2917 Falcoctl The new driver command was merged! https://github.com/falcosecurity/falcoctl/pull/343 We are now in the process of adding tests and eventually fixing spotted bugs :) Also, the new asset artifact type PR is being reviewed: https://github.com/falcosecurity/

## How Async-Profiler's crash handler works

DevFeed: [How Async-Profiler's crash handler works](<https://devfeed.tech/articles/how-async-profiler-s-crash-handler-works-25637.md>)

Original publisher: [Read original article](<https://richardstartin.github.io/posts/async-profiler-crash-handler>)

Author: Richard Startin's Blog

Published: 2023-11-12T00:00:00Z

Content type: article

Language: en

Sources: [Richard Startin's Blog](<https://devfeed.tech/sources/richard-startin-s-blog.md>)

Topics: [async](<https://devfeed.tech/topics/async.md>), [c/c++](<https://devfeed.tech/topics/c-c-plus-plus.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Java](<https://devfeed.tech/topics/java.md>), [JIT](<https://devfeed.tech/topics/jit.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [crash](<https://devfeed.tech/tags/crash.md>), [handler](<https://devfeed.tech/tags/handler.md>), [jit](<https://devfeed.tech/tags/jit.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [run](<https://devfeed.tech/tags/run.md>), [safety](<https://devfeed.tech/tags/safety.md>), [signal](<https://devfeed.tech/tags/signal.md>)

### AI overview

This article explains how async-profiler uses Linux signals and signal handlers to inspect thread state and safely dereference arbitrary pointers without crashing the JVM. It introduces signal-based sampling and frame-pointer unwinding, including the role of JIT-compiled code.

### Source excerpt

Raw pointers in C/C++ open up entire classes of error that are practically unimaginable in higher level languages. So why does anybody use them at all? Unfortunately, it's impossible to write a profiler without getting close to some of the sharp edges of unsafe memory. The async-profiler code base contains a lot of low level tricks, and it's worth studying how some of them work.

## Glassdoor Decreases Latency Overhead and Improves Data Monitoring with WhyLabs

DevFeed: [Glassdoor Decreases Latency Overhead and Improves Data Monitoring with WhyLabs](<https://devfeed.tech/articles/glassdoor-decreases-latency-overhead-and-improves-data-monitoring-with-whylabs-22609.md>)

Original publisher: [Read original article](<https://medium.com/glassdoor-engineering/glassdoor-decreases-latency-overhead-and-improves-data-monitoring-with-whylabs-ad399576624d?source=rss----288d984af747---4>)

Author: Lanqi Fei

Published: 2023-09-06T21:57:52Z

Content type: article

Language: en

Sources: [Glassdoor Engineering](<https://devfeed.tech/sources/glassdoor-engineering.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Library](<https://devfeed.tech/topics/library.md>), [async](<https://devfeed.tech/topics/async.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [async](<https://devfeed.tech/tags/async.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [graph](<https://devfeed.tech/tags/graph.md>), [latency](<https://devfeed.tech/tags/latency.md>), [latency-optimization](<https://devfeed.tech/tags/latency-optimization.md>), [library](<https://devfeed.tech/tags/library.md>), [logging](<https://devfeed.tech/tags/logging.md>), [model-monitoring](<https://devfeed.tech/tags/model-monitoring.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

This article examines how Glassdoor and WhyLabs addressed latency when integrating data monitoring into a real-time service. It describes changes to whylogs, an open-source data logging library, and compares architectural options including asynchronous calls, DAG-based restructuring, and keeping work in a linear execution path.

### Source excerpt

Authors: Lanqi Fei, Jamie, Natalia This blog was written by Lanqi Fei, Senior ML Scientist at Glassdoor, Jamie Broomall, Senior Software Engineer at WhyLabs, and Natalia Skaczkowska-Drabczyk, Customer Success Data Scientist at WhyLabs. The challenge of integration latency Consider the scenario where we want to integrate a new tool into an existing service that potentially operates in real-time and involves some user interface. We need to make sure that the latency of the service in production is acceptable after the integration, while still keeping the overall maintenance costs low. In this scenario, there are trade-offs to be made and the right choice will depend on the individual characteristics of the service and the newly integrated function. Simplifying this function is a common path to gaining a significant advantage in this optimization game. This blog, written in collaboration between Glassdoor and WhyLabs, describes a real-world instance of an integration latency challenge and gives a detailed walk-through of the changes applied within whylogs (an open-source data logging library maintained by WhyLabs) to mitigate it. What are the best options for reducing latency? There are a couple of options for reducing latency when integrating a new function into an existing service. Restructuring your service or architecture to allow an early response to the caller before doing the additional work (this may be as simple as using an async call pattern with a log statement or as complex as a DAG framework). You can think of your service as a graph -- its nodes should be the latency-critical tasks and ideally those should be executed, instrumented and tested independently. Using a DAG can be a good way of scaling out a service to a large number of new features and integrations while maintaining latency requirements and managing the complexity of the critical path to generating a high quality user response. The downside of this approach is the additional complexity as well

## Kotlin Coroutines Best Practices

DevFeed: [Kotlin Coroutines Best Practices](<https://devfeed.tech/articles/best-practices-39232.md>)

Original publisher: [Read original article](<https://kt.academy/article/cc-best-practices>)

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

Content type: article

Language: en

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

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [async](<https://devfeed.tech/topics/async.md>), [await](<https://devfeed.tech/topics/await.md>), [Android](<https://devfeed.tech/topics/android.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Parallelism](<https://devfeed.tech/topics/parallelism.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [backend](<https://devfeed.tech/tags/backend.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [parallelism](<https://devfeed.tech/tags/parallelism.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A concise review of Kotlin coroutine practices, including avoiding unnecessary async/await usage, preferring awaitAll in suitable cases, keeping suspending functions safe across threads, selecting appropriate dispatchers, injecting dispatchers for unit testing, and using yield in CPU-intensive or blocking work.

### Source excerpt

Let's review the Kotlin Coroutines best practices.

## Temporal Python SDK: A durable, distributed asyncio event loop

DevFeed: [Temporal Python SDK: A durable, distributed asyncio event loop](<https://devfeed.tech/articles/temporal-python-sdk-a-durable-distributed-asyncio-event-loop-35816.md>)

Original publisher: [Read original article](<https://temporal.io/blog/durable-distributed-asyncio-event-loop>)

Author: Chad Retz

Published: 2023-03-09T17:00:00Z

Content type: release

Language: en

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

Topics: [SDKs](<https://devfeed.tech/topics/sdks.md>), [Python](<https://devfeed.tech/topics/python.md>), [async](<https://devfeed.tech/topics/async.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Temporian](<https://devfeed.tech/topics/temporian.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [release](<https://devfeed.tech/tags/release.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [temporal](<https://devfeed.tech/tags/temporal.md>)

### AI overview

Temporal announces the general availability of its Python SDK, which supports Python as a workflow language and uses native asyncio constructs to build durable workflows. The article explains Temporal's workflow model and demonstrates activities, durable timers, workers, signals, and client interactions.

### Source excerpt

Introduction to the Temporal Python SDK and how Temporal is a durable, distributed asyncio event loop

## What Can You Monitor with epoll on Linux?

DevFeed: [What Can You Monitor with epoll on Linux?](<https://devfeed.tech/articles/linux-what-can-you-epoll-35432.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/linux-what-can-you-epoll/>)

Author: Graham King

Published: 2022-10-20T07:00:00Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Network](<https://devfeed.tech/topics/network.md>), [async](<https://devfeed.tech/topics/async.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Streams](<https://devfeed.tech/topics/streams.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [epoll](<https://devfeed.tech/tags/epoll.md>), [file](<https://devfeed.tech/tags/file.md>), [go](<https://devfeed.tech/tags/go.md>), [linux](<https://devfeed.tech/tags/linux.md>), [logging](<https://devfeed.tech/tags/logging.md>), [network](<https://devfeed.tech/tags/network.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [process](<https://devfeed.tech/tags/process.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [tokio](<https://devfeed.tech/tags/tokio.md>), [udp](<https://devfeed.tech/tags/udp.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

This article surveys Linux file descriptors that can be monitored with epoll, including network sockets, timers, signals, filesystem events, child processes, terminals, page faults, and seccomp notifications. It explains how these sources can be integrated into an epoll event loop or an asynchronous engine such as Go or Rust's tokio.

### Source excerpt

On Linux what can you turn into a file descriptor and then monitor with epoll?

## Coroutines on Android

DevFeed: [Coroutines on Android](<https://devfeed.tech/articles/coroutines-on-android-23898.md>)

Original publisher: [Read original article](<https://medium.com/smg-real-estate/coroutines-on-android-d3e3413e6aa7?source=rss----2186e5b9bd8f---4>)

Author: Stevan Milovanovic

Published: 2022-05-20T12:36:23Z

Content type: tutorial

Language: en

Sources: [Homegate Engineering Blog - Medium](<https://devfeed.tech/sources/homegate-engineering-blog-medium.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Android](<https://devfeed.tech/topics/android.md>), [async](<https://devfeed.tech/topics/async.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [article](<https://devfeed.tech/tags/article.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutine-testing](<https://devfeed.tech/tags/coroutine-testing.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [programming](<https://devfeed.tech/tags/programming.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

This tutorial explains why Kotlin coroutines can be preferable to threads for asynchronous and background processing on Android. It introduces coroutine scopes, contexts, suspending functions, jobs, and dispatchers, and describes using coroutines for networking and background processing.

### Source excerpt

Coroutines on Android In this article I'll try to explain why coroutines are useful and why would you want to use them in your project. After we go through the most important concepts of coroutines, I'll show you how I used coroutines to implement networking and background processing in the example project. First of all, you might ask yourself, why we want to use coroutines over threads? Main problem with threads is that they are resource intensive, meaning it takes a lot of resources to start a thread, stop a thread. Meanwhile, coroutines are lightweight threads, since they use thread pools. Another benefit of coroutines is that they greatly simplify asynchronous code. Callbacks and synchronisation are very easy to use. In fact, they make parallel programming look very much like sequential programming. Coroutines can be paused and resumed at any time, on a number of threads. And lastly, since coroutines are based on a few fairly easy to grasp concepts, their syntax is simple and easy to use. Here are the main concepts we need to explain about coroutines: Scope Coroutine scope, as its name says, defines a scope for new coroutines. Every coroutine builder (like launch and async) is an extension on CoroutineScope and inherits its coroutineContext to automatically propagate all its elements and cancellation. Context Coroutine context represents the context of its scope. Context is encapsulated by the scope and used for implementation of coroutine builders that are extensions on the scope. Scope provides a context in which the coroutine runs (state of the coroutine which provides variables, functionality of the coroutine etc.). Suspending functions Suspending functions are functions that can be run in a coroutine. They make callbacks seamless. They can be run in a coroutine (can be suspended) and that is why they can provide functionalities which have to be run in parallel. Job Job is a handle on that coroutine (on the piece of code which runs in the background). A laun

## Kotlin's inline and suspend features

DevFeed: [Kotlin's inline and suspend features](<https://devfeed.tech/articles/my-favorite-kotlin-feature-25517.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/inline-and-suspend/>)

Author: Simon Vergauwen

Published: 2022-01-18T00:00:00Z

Content type: article

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [inlining](<https://devfeed.tech/topics/inlining.md>), [async](<https://devfeed.tech/topics/async.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [callback](<https://devfeed.tech/tags/callback.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [continuation](<https://devfeed.tech/tags/continuation.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [function](<https://devfeed.tech/tags/function.md>), [hof](<https://devfeed.tech/tags/hof.md>), [inlining](<https://devfeed.tech/tags/inlining.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [suspend](<https://devfeed.tech/tags/suspend.md>)

### AI overview

This article explains Kotlin's inline feature and suspend functions, focusing on how their combination supports efficient higher-order functions and imperative code for asynchronous workflows. It also describes compiler checks for suspending calls.

### Source excerpt

Over the last several years I've seen many discussions on Kotlin's features. Nullability is always a very high ranked one. I like it, but it's definitely not my favorite feature.

[Next page](<https://devfeed.tech/topics/async.md?cursor=WyIyMDIyLTAxLTE4VDAwOjAwOjAwKzAwOjAwIiwgImIwZTQzZjJkLTUwOWItNGUxMS04MDViLWM5MTNhZDQ2NmM2MyJd>)