# callback

Published articles for callback.

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

## How to add AuthKit to a Next.js app

DevFeed: [How to add AuthKit to a Next.js app](<https://devfeed.tech/articles/how-to-add-authkit-to-a-next-js-app-15980.md>)

Original publisher: [Read original article](<https://workos.com/blog/add-authkit-to-a-nextjs-app>)

Author: WorkOS

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

Content type: tutorial

Language: en

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

Topics: [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [auth](<https://devfeed.tech/tags/auth.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [callback](<https://devfeed.tech/tags/callback.md>), [cors](<https://devfeed.tech/tags/cors.md>), [email-verification](<https://devfeed.tech/tags/email-verification.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [mfa](<https://devfeed.tech/tags/mfa.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how to add WorkOS AuthKit to a Next.js app using either an AI-powered CLI installer or a manual integration. It covers hosted sign-in, session handling, redirect configuration, and validating the build.

### Source excerpt

Go from no auth to a full hosted sign-in flow, either in one command or step by step.

## Add Cross App Access to Your OIDC Requesting Application

DevFeed: [Add Cross App Access to Your OIDC Requesting Application](<https://devfeed.tech/articles/add-cross-app-access-to-your-oidc-requesting-application-15975.md>)

Original publisher: [Read original article](<https://developer.okta.com/blog/2026/08/21/xaa-oidc-requesting>)

Author: Sohail Pathan

Published: 2026-08-21T05:00:00Z

Content type: tutorial

Language: en

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

Topics: [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [OAuth 2.0](<https://devfeed.tech/topics/oauth2.md>), [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [API](<https://devfeed.tech/topics/api.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [api](<https://devfeed.tech/tags/api.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [callback](<https://devfeed.tech/tags/callback.md>), [claude](<https://devfeed.tech/tags/claude.md>), [cross-app-access](<https://devfeed.tech/tags/cross-app-access.md>), [identity](<https://devfeed.tech/tags/identity.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [oauth-2-0](<https://devfeed.tech/tags/oauth-2-0.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [sso](<https://devfeed.tech/tags/sso.md>), [third-party-applications](<https://devfeed.tech/tags/third-party-applications.md>), [token](<https://devfeed.tech/tags/token.md>), [xaa](<https://devfeed.tech/tags/xaa.md>)

### AI overview

This guide explains how an OIDC-federated application can use Cross App Access (XAA) to request resources from a third-party application. It describes exchanging a refresh token for an Identity Assertion Authorization Grant, exchanging that short-lived JWT for an OAuth access token, and using the access token for the resource API request.

### Source excerpt

If you currently federate enterprise customers using OpenID Connect (OIDC) and want to connect with third-party applications, this Cross App Access (XAA) guide is for you. The Identity Assertion Authorization Grant specification, the basis of XAA, was designed with OIDC in mind. Your app already holds an ID token after sign-in, but it's the refresh token from that same sign-in that you exchange to reach a third-party app. This guide details what you need to support and how to make resource requests to a third-party app using XAA. Table of Contents How XAA in OIDC works XAA implementation checklist for OIDC-federated applications Request the ID-JAG token Request the access token Call the resource API Handle token expiration Making cross-application requests from your OIDC app securely Configure your XAA OIDC requesting app in Okta Register the requesting app in Okta Register the test resource app in Okta Register your requesting app at xaa.dev Register and configure the AI Agent in Okta Validate the XAA connection end-to-end Learn more about Cross App Access, OIDC, and OAuth 2.0 How XAA in OIDC works When an agent (like one running in Claude) needs API access, it presents an Identity Assertion Authorization Grant (ID-JAG). The ID-JAG is a short-lived JSON Web Token (JWT) issued by the Identity Provider (IdP) for your app's user. You exchange the ID-JAG token for an access token to the resource application you're connecting with. The sequence diagram below describes the OIDC XAA flow and how your application fits into it. You'll handle the flow in two parts: where your application requests the ID-JAG from the IdP using the refresh token, and where your app requests the access token from the ID-JAG from the third-party resource app's authorization server. XAA implementation checklist for OIDC-federated applications Follow the guide in this section to support XAA in your OIDC application when your app connects to a third-party resource application. The XAA flow places t

## How to Stop or Skip Cypress Test Commands

DevFeed: [How to Stop or Skip Cypress Test Commands](<https://devfeed.tech/articles/can-t-stop-won-t-stop-28877.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/cant-stop-wont-stop/>)

Author: Gleb Bahmutov

Published: 2026-08-07T04:00:00Z

Content type: tutorial

Language: en

Sources: [Gleb Bahmutov](<https://devfeed.tech/sources/gleb-bahmutov.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [Mocha](<https://devfeed.tech/topics/mocha.md>), [test](<https://devfeed.tech/topics/test.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [condition](<https://devfeed.tech/tags/condition.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [object](<https://devfeed.tech/tags/object.md>), [products](<https://devfeed.tech/tags/products.md>), [skip](<https://devfeed.tech/tags/skip.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains three ways to stop or skip Cypress test execution: using Cypress.stop, skipping the current Mocha test, and skipping the remaining commands in the Cypress command queue. It describes the trade-offs of each approach, including whether later tests run and whether completed commands remain visible.

### Source excerpt

Let's say you have a long-ish Cypress test and you know a place where it might fail. You want to stop / skip the test commands.

## Introducing ESP-IDF button component

DevFeed: [Introducing ESP-IDF button component](<https://devfeed.tech/articles/introducing-esp-idf-button-component-13748.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2026/02/component-introduction-button/>)

Author: John Lee

Published: 2026-02-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP-IDF](<https://devfeed.tech/topics/esp-idf.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [ESP32](<https://devfeed.tech/topics/esp32.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [adc](<https://devfeed.tech/tags/adc.md>), [blog](<https://devfeed.tech/tags/blog.md>), [callback](<https://devfeed.tech/tags/callback.md>), [community-software](<https://devfeed.tech/tags/community-software.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp-idf-component](<https://devfeed.tech/tags/esp-idf-component.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [examples](<https://devfeed.tech/tags/examples.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [home-automation](<https://devfeed.tech/tags/home-automation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [iot](<https://devfeed.tech/tags/iot.md>), [practitioner](<https://devfeed.tech/tags/practitioner.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [wi-fi](<https://devfeed.tech/tags/wi-fi.md>)

### AI overview

This tutorial introduces the ESP-IDF button component and shows how to handle physical buttons in ESP32 projects. It covers GPIO buttons, ADC button matrices, event detection, software debouncing, callbacks, thread safety, low-power support, and a basic GPIO example.

### Source excerpt

Learn how to use the ESP-IDF button component to handle GPIO buttons with event detection, debouncing, and callbacks. A step-by-step guide with practical code examples.

## How To Type Function Mocha Context With Cypress Aliases

DevFeed: [How To Type Function Mocha Context With Cypress Aliases](<https://devfeed.tech/articles/how-to-type-function-mocha-context-with-cypress-aliases-28901.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/type-test-context/>)

Author: Gleb Bahmutov

Published: 2025-12-11T05:00:00Z

Content type: tutorial

Language: en

Sources: [Gleb Bahmutov](<https://devfeed.tech/sources/gleb-bahmutov.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [Mocha](<https://devfeed.tech/topics/mocha.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [linter](<https://devfeed.tech/tags/linter.md>), [products](<https://devfeed.tech/tags/products.md>), [test](<https://devfeed.tech/tags/test.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial explains how to add strong typing for the custom property Cypress aliases place on the Mocha test context. It shows how to extend the relevant callback context type when the bundled type is not directly exposed.

### Source excerpt

In Cypress you can save values under aliases which is pretty handy. You can get the aliased value

## Partial Function Application is coming in PHP 8.6

DevFeed: [Partial Function Application is coming in PHP 8.6](<https://devfeed.tech/articles/partial-function-application-is-coming-in-php-8-6-20473.md>)

Original publisher: [Read original article](<https://www.amitmerchant.com/partial-function-application-php-86/>)

Author: Amit Merchant

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

Content type: tutorial

Language: en

Sources: [Amit Merchant](<https://devfeed.tech/sources/amit-merchant.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [Code](<https://devfeed.tech/topics/code.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [callback](<https://devfeed.tech/tags/callback.md>), [closure](<https://devfeed.tech/tags/closure.md>), [function](<https://devfeed.tech/tags/function.md>), [http](<https://devfeed.tech/tags/http.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [request](<https://devfeed.tech/tags/request.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial introduces Partial Function Application in PHP 8.6. It explains how placeholders create pre-configured Closures, covers multiple holes, named and variadic arguments, and shows a practical example for adding an Authorization header to HTTP requests.

### Source excerpt

Ever reach for a simple callback and end up writing a tiny novella--an arrow function stuffed with types, reordered parameters, and boilerplate just to pass one value through?

## Kotlin Coroutines and JavaScript

DevFeed: [Kotlin Coroutines and JavaScript](<https://devfeed.tech/articles/kotlin-coroutines-and-javascript-39323.md>)

Original publisher: [Read original article](<https://kt.academy/article/interop-coroutines-js>)

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

Content type: tutorial

Language: en

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

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Promise](<https://devfeed.tech/topics/promise.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [callback](<https://devfeed.tech/tags/callback.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [react](<https://devfeed.tech/tags/react.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how to make Kotlin Coroutines APIs usable from JavaScript and TypeScript projects. It covers converting suspending functions to JavaScript async functions, exposing Flow values through callbacks or wrapper classes, and calling regular or promise-returning JavaScript functions from Kotlin Coroutines.

### Source excerpt

How to use Kotlin Coroutines in JavaScript projects, or JavaScript libraries from Kotlin Coroutines.

## Suspending functions or flows into callbacks

DevFeed: [Suspending functions or flows into callbacks](<https://devfeed.tech/articles/suspending-functions-or-flows-into-callbacks-39326.md>)

Original publisher: [Read original article](<https://kt.academy/article/interop-coroutines-to-callback>)

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

Content type: tutorial

Language: en

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

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

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

### AI overview

A practical guide to converting Kotlin suspending functions and flows into callback-based functions using Kotlin Coroutines.

### Source excerpt

A guide on how to correctly convert suspending functions or flows into callback-based functions in Kotlin Coroutines.

## How to turn callback functions into suspend functions or Flow

DevFeed: [How to turn callback functions into suspend functions or Flow](<https://devfeed.tech/articles/how-to-turn-callback-functions-into-suspend-functions-or-flow-39322.md>)

Original publisher: [Read original article](<https://kt.academy/article/interop-callbacks-to-coroutines>)

Published: 2025-07-14T00: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>), [callback](<https://devfeed.tech/topics/callback.md>), [functions](<https://devfeed.tech/topics/functions.md>), [Continuation](<https://devfeed.tech/topics/continuation.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [continuation](<https://devfeed.tech/tags/continuation.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [functions](<https://devfeed.tech/tags/functions.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [suspend](<https://devfeed.tech/tags/suspend.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A guide to adapting callback-based APIs for Kotlin Coroutines. It explains how to convert callbacks that return one value into suspending functions and how to adapt callbacks that emit multiple values into Flows, including handling cancellation and exceptions.

### Source excerpt

A guide on how to correctly convert callback-based functions into suspending functions or Flows in Kotlin Coroutines.

## 1000 Instances of flake-utils

DevFeed: [1000 Instances of flake-utils](<https://devfeed.tech/articles/1000-instances-of-flake-utils-32425.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/1000-instances-of-flake-utils/>)

Author: Marijan Petričević

Published: 2025-05-26T00:00:00Z

Content type: article

Language: en

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

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [function](<https://devfeed.tech/tags/function.md>), [guide](<https://devfeed.tech/tags/guide.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This article examines flake-utils as a dependency for reducing repetition when declaring Nix Flake outputs across systems. It discusses obscurity around default systems and argues that a simple custom function can often provide the needed behavior without flake-utils.

### Source excerpt

Let's look at flake-utils' hidden downsides! This guide quickly demystifies it through simple rewrite, offering insights you likely haven't encountered before.

## Server Actions with Toast (useEffect)

DevFeed: [Server Actions with Toast (useEffect)](<https://devfeed.tech/articles/server-actions-with-toast-useeffect-18978.md>)

Original publisher: [Read original article](<https://www.robinwieruch.de/react-server-actions-useactionstate-toast/>)

Author: Robin Wieruch

Published: 2025-03-10T06:52:46Z

Content type: tutorial

Language: en

Sources: [Robin Wieruch](<https://devfeed.tech/sources/robin-wieruch.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [component](<https://devfeed.tech/tags/component.md>), [function](<https://devfeed.tech/tags/function.md>), [react](<https://devfeed.tech/tags/react.md>), [react-server-action-toast-useeffect](<https://devfeed.tech/tags/react-server-action-toast-useeffect.md>), [state](<https://devfeed.tech/tags/state.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial on displaying toast notifications for React Server Actions using useActionState and useEffect. It explains returning a timestamped response, tracking server action state, and preventing duplicate or outdated toast messages.

### Source excerpt

Learn how to display toast notifications from React Server Actions in React (and Next.js) with useEffect and useActionState ...

## Server Actions with Toast (useActionState)

DevFeed: [Server Actions with Toast (useActionState)](<https://devfeed.tech/articles/server-actions-with-toast-useactionstate-18976.md>)

Original publisher: [Read original article](<https://www.robinwieruch.de/react-server-actions-toast-useactionstate/>)

Author: Robin Wieruch

Published: 2025-03-06T06:51:46Z

Content type: tutorial

Language: en

Sources: [Robin Wieruch](<https://devfeed.tech/sources/robin-wieruch.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>)

Tags: [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [callback](<https://devfeed.tech/tags/callback.md>), [function](<https://devfeed.tech/tags/function.md>), [github](<https://devfeed.tech/tags/github.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [react](<https://devfeed.tech/tags/react.md>), [react-server-action-toast-useactionstate](<https://devfeed.tech/tags/react-server-action-toast-useactionstate.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how to display toast notifications for React Server Actions using the useActionState Hook. It implements a higher-order function that adds success and error callbacks, producing reusable primitives for handling toast behavior.

### Source excerpt

Learn how to display toast notifications from React Server Actions in React (and Next.js) with useActionState ...

## Queueing Without a Queue: Enter fastq

DevFeed: [Queueing Without a Queue: Enter fastq](<https://devfeed.tech/articles/queueing-without-a-queue-enter-fastq-17871.md>)

Original publisher: [Read original article](<https://www.codemotion.com/magazine/backend/software-architecture/queueing-without-a-queue-enter-fastq/>)

Author: Puppo92

Published: 2025-02-10T10:08:09Z

Content type: tutorial

Language: en

Sources: [Backend Job: skill, salary and insights - Codemotion Magazine](<https://devfeed.tech/sources/backend-job-skill-salary-and-insights-codemotion-magazine.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Promise](<https://devfeed.tech/topics/promise.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [callback](<https://devfeed.tech/tags/callback.md>), [collina](<https://devfeed.tech/tags/collina.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [memory](<https://devfeed.tech/tags/memory.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [queue](<https://devfeed.tech/tags/queue.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>)

### AI overview

This tutorial introduces fastq, an npm package for Node.js that provides in-memory queues for decoupling processes when a conventional queue is unavailable or unnecessary. It explains installation, the package's data-loss limitation when a process stops, and worker functions using callback or promise-based error handling.

### Source excerpt

How often have you needed to decouple processes using a queue, only to find that you didn't have one due to limitations such as resource constraints or the inability to install additional software? In this series, I'll show you how to solve this problem by using different libraries of tools that help you resolve it... Read more The post Queueing Without a Queue: Enter fastq appeared first on Codemotion Magazine.

## How to force update (& test) your Android app using Google's in-app update library

DevFeed: [How to force update (& test) your Android app using Google's in-app update library](<https://devfeed.tech/articles/how-to-force-update-test-your-android-app-using-google-s-in-app-update-library-38571.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/googles-force-update-android-app-library/>)

Author: Jake Lee

Published: 2024-11-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Library](<https://devfeed.tech/topics/library.md>), [Google](<https://devfeed.tech/topics/google.md>), [callback](<https://devfeed.tech/topics/callback.md>), [Code](<https://devfeed.tech/topics/code.md>), [Users](<https://devfeed.tech/topics/users.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [google](<https://devfeed.tech/tags/google.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

A Kotlin-focused tutorial on using Google's Android in-app updates library to implement mandatory immediate updates, including Gradle setup, update checks, dialog handling, callbacks, and app closure when the user cancels.

### Source excerpt

Earlier this year, I needed to add the ability to force update users of an app. Whilst I've used custom solutions in the past, Google has a standardised "in-app updates" library that does all the essentials for you!

## Restartable functions from first principles

DevFeed: [Restartable functions from first principles](<https://devfeed.tech/articles/restartable-functions-from-first-principles-30533.md>)

Original publisher: [Read original article](<https://blog.zachklipp.com/restartable-functions-from-first-principles/>)

Author: Zach Klippenstein

Published: 2024-07-12T02:38:58Z

Content type: tutorial

Language: en

Sources: [Zach Klippenstein's Blog](<https://devfeed.tech/sources/zach-klippenstein-s-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Code](<https://devfeed.tech/topics/code.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [callback](<https://devfeed.tech/tags/callback.md>), [compose-state-series](<https://devfeed.tech/tags/compose-state-series.md>), [function](<https://devfeed.tech/tags/function.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [modifiers](<https://devfeed.tech/tags/modifiers.md>), [snapshot](<https://devfeed.tech/tags/snapshot.md>), [state](<https://devfeed.tech/tags/state.md>)

### AI overview

This tutorial explains how restartable functions work in Jetpack Compose. It describes how callers track state objects read by a function, observe changes, and re-execute or schedule the function when relevant state changes.

### Source excerpt

Often when thinking about Jetpack Compose state, we think in terms of what code will be re-executed when that state changes. We call functions

## Fixing the iterative damping interpolation in video games

DevFeed: [Fixing the iterative damping interpolation in video games](<https://devfeed.tech/articles/fixing-the-iterative-damping-interpolation-in-video-games-26115.md>)

Original publisher: [Read original article](<http://blog.pkh.me/p/41-fixing-the-iterative-damping-interpolation-in-video-games.html>)

Published: 2024-05-18T12:22:15Z

Content type: article

Language: en

Sources: [The Last Static Blog RSS](<https://devfeed.tech/sources/the-last-static-blog-rss.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [callback](<https://devfeed.tech/topics/callback.md>), [function](<https://devfeed.tech/topics/function.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [fps](<https://devfeed.tech/tags/fps.md>), [game](<https://devfeed.tech/tags/game.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [games](<https://devfeed.tech/tags/games.md>), [math](<https://devfeed.tech/tags/math.md>), [physics](<https://devfeed.tech/tags/physics.md>), [prog](<https://devfeed.tech/tags/prog.md>)

### AI overview

This article explains why repeatedly applying linear interpolation for damping can make game behavior depend on the refresh rate. Using Godot examples, it analyzes the iterative formula and motivates a frame-rate-independent solution.

### Source excerpt

As I'm exploring the fantastic world of indie game development lately, I end up watching a large number of video tutorials on the subject. Even though the quality of the content is pretty variable, I'm very grateful to the creators for it. That being said, I couldn't help noticing this particular bit times and times again: a = lerp(a, B, delta * RATE) Behind this apparent banal call hides a terrible curse, forever perpetrated by innocent souls on the Internet. In this article we will study what it's trying to achieve, how it works, why it's wrong, and then we'll come up with a good solution to the initial problem. The usual warning: I don't have a mathematics or academic background, so the article is addressed at other neanderthals like myself, who managed to understand that pressing keys on a keyboard make pixels turn on and off. What is it? Let's start from the beginning. We're in a game engine main loop callback called at a regular interval (roughly), passing down the time difference from the last call. In Godot engine, it looks like this: func _physics_process(delta: float): ... If the game is configured to refresh at 60 FPS, we can expect this function to be called around 60 times per second with delta = 1/60 = 0.01666.... As a game developer, we want some smooth animations for all kind of transformations. For example, we may want the speed of the player to go down to zero as they release the moving key. We could do that linearly, but to make the stop less brutal and robotic we want to slow down the speed progressively. Linear (top) versus smooth/exponential (bottom) animation Virtually every tutorial will suggest updating some random variable with something like that: velocity = lerp(velocity, 0, delta * RATE) At 60 FPS, a decay RATE defined to 3.5, and an initial velocity of 100, the velocity will go down to 0 following this curve: Example curve of a decaying variable Note velocity is just a variable name example, it can be found in many other contexts If you

## Accept payments with Square using Next.js App Router

DevFeed: [Accept payments with Square using Next.js App Router](<https://devfeed.tech/articles/accept-payments-with-square-using-next-js-app-router-15485.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/accept-payments-with-square-using-next-js-app-router>)

Author: Anthony Giuliano

Published: 2024-01-25T17:00:00Z

Content type: tutorial

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Next.js](<https://devfeed.tech/topics/next-js.md>), [App](<https://devfeed.tech/topics/app.md>), [React](<https://devfeed.tech/topics/react.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [build](<https://devfeed.tech/tags/build.md>), [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [components](<https://devfeed.tech/tags/components.md>), [flow](<https://devfeed.tech/tags/flow.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [payments](<https://devfeed.tech/tags/payments.md>), [router](<https://devfeed.tech/tags/router.md>), [token](<https://devfeed.tech/tags/token.md>)

### AI overview

A how-to guide for building an end-to-end Square payment flow in a Next.js application using the App Router and Server Actions. It covers configuring payment-form components, generating a payment token, and processing that token on the server side.

### Source excerpt

Build an end-to-end payment flow with Next.js Server Actions

## GitHub OAuth in your Python Flask app

DevFeed: [GitHub OAuth in your Python Flask app](<https://devfeed.tech/articles/github-oauth-in-your-python-flask-app-468.md>)

Original publisher: [Read original article](<https://supabase.com/blog/oauth2-login-python-flask-apps>)

Author: Andrew Smith

Published: 2023-11-21T07:00:00Z

Content type: tutorial

Language: en

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

Topics: [Flask](<https://devfeed.tech/topics/flask.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [OAuth 2.0](<https://devfeed.tech/topics/oauth2.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [CadQuery](<https://devfeed.tech/topics/cadquery.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [callback](<https://devfeed.tech/tags/callback.md>), [flask](<https://devfeed.tech/tags/flask.md>), [github](<https://devfeed.tech/tags/github.md>), [guide](<https://devfeed.tech/tags/guide.md>), [integration](<https://devfeed.tech/tags/integration.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [oauth2](<https://devfeed.tech/tags/oauth2.md>), [python](<https://devfeed.tech/tags/python.md>), [web-app](<https://devfeed.tech/tags/web-app.md>)

### AI overview

A step-by-step guide to adding GitHub OAuth2 login to a Python Flask web app using Supabase. It covers installing the library, configuring session storage for JWTs, initializing the Supabase client, creating sign-in and callback routes, and exchanging the authorization code for a session.

### Source excerpt

A step-by-step guide on building Login with GitHub into your Python apps.

## How to make expandable text with a button in Jetpack Compose

DevFeed: [How to make expandable text with a button in Jetpack Compose](<https://devfeed.tech/articles/how-to-make-expandable-text-with-a-button-in-jetpack-compose-37167.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-make-expandable-text-with-a-button-in-jetpack-compose/>)

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

Content type: tutorial

Language: en

Sources: [Arkadiusz Chmura](<https://devfeed.tech/sources/arkadiusz-chmura.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [animations](<https://devfeed.tech/tags/animations.md>), [callback](<https://devfeed.tech/tags/callback.md>), [compose](<https://devfeed.tech/tags/compose.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [layout](<https://devfeed.tech/tags/layout.md>)

### AI overview

A tutorial on building expandable text in Jetpack Compose. It shows how to toggle between collapsed and expanded text with a button, add animations and an ellipsis for overflow, and hide the button when the text fits within five lines.

### Source excerpt

In this post I will show you how to make an expandable text controlled by a button using Jetpack Compose.

## MutexProtected: A C++ Pattern for Easier Concurrency

DevFeed: [MutexProtected: A C++ Pattern for Easier Concurrency](<https://devfeed.tech/articles/mutexprotected-a-c-pattern-for-easier-concurrency-38361.md>)

Original publisher: [Read original article](<https://awesomekling.github.io/MutexProtected-A-C++-Pattern-for-Easier-Concurrency/>)

Author: Andreas Kling

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

Content type: tutorial

Language: en

Sources: [Andreas Kling](<https://devfeed.tech/sources/andreas-kling.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [callback](<https://devfeed.tech/tags/callback.md>), [class](<https://devfeed.tech/tags/class.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [cpp](<https://devfeed.tech/tags/cpp.md>), [locks](<https://devfeed.tech/tags/locks.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [programming](<https://devfeed.tech/tags/programming.md>), [serenityos](<https://devfeed.tech/tags/serenityos.md>), [technical](<https://devfeed.tech/tags/technical.md>), [type-system](<https://devfeed.tech/tags/type-system.md>)

### AI overview

This tutorial explains the MutexProtected pattern, which combines a mutex and protected data behind a callback-based C++ API. It compares manual locking in C with C++ RAII and the newer pattern, showing how the design reduces forgotten-lock errors and encodes the mutex-data relationship in the type system. It also notes that inconsistent ordering of multiple MutexProtected instances can still cause deadlocks.

### Source excerpt

In this post, we will discuss the challenges of programming with locks and how the C++ language offers some useful tools to make it easier. We will start with an example in C and then use C++ to improve upon it in steps. The example APIs are based on real-life APIs from the SerenityOS kernel.

## Testing functions with lambdas using MockK

DevFeed: [Testing functions with lambdas using MockK](<https://devfeed.tech/articles/testing-functions-with-lambdas-using-mockk-22666.md>)

Original publisher: [Read original article](<https://www.valueof.io/blog/testing-listener-lambda-mockk>)

Author: James Shvarts

Published: 2022-12-18T15:58:29Z

Content type: tutorial

Language: en

Sources: [Android Blog - Mobile Dev Notes](<https://devfeed.tech/sources/android-blog-mobile-dev-notes.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [function](<https://devfeed.tech/tags/function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

### AI overview

A Kotlin testing tutorial showing how to use MockK to test functions that accept success and failure lambda callbacks. It demonstrates mocking the engine, capturing or invoking callback arguments, and verifying the resulting instrument-panel behavior.

### Source excerpt

Testing Kotlin lambda invocations with MockK

## Kotlin Coroutines use cases for Data/Adapters Layer

DevFeed: [Kotlin Coroutines use cases for Data/Adapters Layer](<https://devfeed.tech/articles/kotlin-coroutines-use-cases-for-data-adapters-layer-39243.md>)

Original publisher: [Read original article](<https://kt.academy/article/cc-use-cases-data-layer>)

Published: 2022-11-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>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [callback](<https://devfeed.tech/topics/callback.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [blocking](<https://devfeed.tech/tags/blocking.md>), [callback](<https://devfeed.tech/tags/callback.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [databases](<https://devfeed.tech/tags/databases.md>), [functions](<https://devfeed.tech/tags/functions.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains common Kotlin Coroutines use cases in the Data/Adapters Layer, including repository and provider implementations, adapting callback-based APIs into suspending functions, and handling blocking calls with an appropriate dispatcher.

### Source excerpt

How do we use Kotlin Coroutines in the Data/Adapters Layer, how do we use callback or blocking functions.

## 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.

## Interpreting voice results for Android media apps in cars

DevFeed: [Interpreting voice results for Android media apps in cars](<https://devfeed.tech/articles/interpreting-voice-results-for-android-media-apps-in-cars-25891.md>)

Original publisher: [Read original article](<https://proandroiddev.com/interpreting-voice-results-for-android-media-apps-in-cars-f36d7bdb26e1?source=rss-1331e67af4e1------2>)

Author: Danny Preussler

Published: 2022-01-10T21:33:42Z

Content type: tutorial

Language: en

Sources: [Stories by Danny Preussler on Medium](<https://devfeed.tech/sources/stories-by-danny-preussler-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-auto](<https://devfeed.tech/tags/android-auto.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [apps](<https://devfeed.tech/tags/apps.md>), [audio](<https://devfeed.tech/tags/audio.md>), [callback](<https://devfeed.tech/tags/callback.md>), [car](<https://devfeed.tech/tags/car.md>), [code](<https://devfeed.tech/tags/code.md>), [google](<https://devfeed.tech/tags/google.md>), [google-assistant](<https://devfeed.tech/tags/google-assistant.md>), [integration](<https://devfeed.tech/tags/integration.md>), [manifest](<https://devfeed.tech/tags/manifest.md>), [voice](<https://devfeed.tech/tags/voice.md>)

### AI overview

This article explains how Android Auto voice searches are delivered to a music app such as SoundCloud. It compares the documented use of MediaStore.EXTRA_MEDIA_FOCUS with observed behavior, reporting that Assistant currently returns a focus value that is not defined as an SDK constant.

### Source excerpt

When working on the Android Auto integration for SoundCloud, I stumbled upon an interesting issue. When it comes to implementing voice actions, things you read in the documentation might differ a bit from reality. Voice commands are very critical while driving a car. You want the driver to keep looking at the street, keep his hands on the steering wheel, instead of interacting with any screen. This is why when building for Android Auto, Automotive OS, and Assistant Driving Mode you have to support basic voice searches. For a music app like ours, the idea is simple. A user can say something like: "Play Moderat on SoundCloud" Under the hood The Assistant will break down our sentence for interpretation: "<Play> <Moderat> <on SoundCloud>" The verb (Play) and the app (SoundCloud) in the above command were meant for the system. It will then wake up the app mentioned (if it declared auto support via manifest) and, as we asked for verb "Play", the method MediaSessionCompat.Callback.onPlayFromSearch() will be called with the remaining query ("Moderat") as the argument. This query of "what to play" can still mean different things though. How do you know if Moderat is a band or a song? Don't worry, the Assistant will help us also here. It already got some idea what our query could mean, if we asked for an artist, an album, or a specific track. But be aware, it behaves slightly differently than officially documented. According to documentation we are supposed to write code like this: val mediaFocus = extras?.getString(MediaStore.EXTRA_MEDIA_FOCUS) if (mediaFocus == MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) { isArtistFocus = true artist = extras.getString(MediaStore.EXTRA_MEDIA_ARTIST) We are suppose to check for a bundle entry with the key MediaStore.EXTRA_MEDIA_FOCUS . This will give us a hint on how best to interpret the query. The value of the constant MediaStore.EXTRA_MEDIA_ARTIST checked above is vnd.android.cursor.item/artist and there are similar constants related to

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