# Arkadiusz Chmura

Recent content on Arkadiusz Chmura

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

## Things I learned while building a yt-dlp wrapper

DevFeed: [Things I learned while building a yt-dlp wrapper](<https://devfeed.tech/articles/things-i-learned-while-building-a-yt-dlp-wrapper-37180.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/things-i-learned-while-building-a-yt-dlp-wrapper/>)

Published: 2024-10-10T00:00:00Z

Content type: opinion

Language: en

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

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [FFmpeg (Fast Forward Moving Picture Experts Group)](<https://devfeed.tech/topics/ffmpeg.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [ffmpeg](<https://devfeed.tech/tags/ffmpeg.md>), [gui](<https://devfeed.tech/tags/gui.md>), [macos](<https://devfeed.tech/tags/macos.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [side-project](<https://devfeed.tech/tags/side-project.md>)

### AI overview

The author describes lessons from building ClipSnag, a native macOS GUI wrapper for yt-dlp. The article discusses how open-source licenses affect bundling dependencies such as FFmpeg and explores downloading and executing executables on macOS.

### Source excerpt

An opportunity to learn new things is a great reason to pursue side project.

## Optimizing your workflow does matter in the long run

DevFeed: [Optimizing your workflow does matter in the long run](<https://devfeed.tech/articles/optimizing-your-workflow-does-matter-in-the-long-run-37177.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/optimizing-your-workflow-does-matter-in-the-long-run/>)

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

Content type: opinion

Language: en

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

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [keyboard](<https://devfeed.tech/topics/keyboard.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [context](<https://devfeed.tech/tags/context.md>), [keyboard-shortcuts](<https://devfeed.tech/tags/keyboard-shortcuts.md>), [optimizing](<https://devfeed.tech/tags/optimizing.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The article argues that tailoring a programming workflow, improving typing speed, and learning editor keyboard shortcuts can reduce context switching and wasted effort. It uses the author's marathon experience to illustrate how attention to small details and strategy can improve performance.

### Source excerpt

Having your environment tailored to you and the way you work can save you from context switching, losing focus, reaching for your mouse, or simply wasting time.

## Accessing cheatsheets from the command line

DevFeed: [Accessing cheatsheets from the command line](<https://devfeed.tech/articles/accessing-cheatsheets-from-the-command-line-37157.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/accessing-cheatsheets-from-the-command-line/>)

Published: 2023-10-08T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Script](<https://devfeed.tech/topics/script.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [installation](<https://devfeed.tech/tags/installation.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

This tutorial explains how to use cheat.sh, an open-source service providing community-driven cheatsheets for programming languages, database systems, and command-line tools. It covers terminal access without installation, the command-line client, tab completion, and a custom Bash function.

### Source excerpt

The cheat.sh utility allows you to access a lot of comprehensive, community-driven cheatsheets for many popular tools.

## Making the most of GitHub Code Search

DevFeed: [Making the most of GitHub Code Search](<https://devfeed.tech/articles/making-the-most-of-github-code-search-37174.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/making-the-most-of-github-code-search/>)

Published: 2023-09-30T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [code search](<https://devfeed.tech/topics/code-search.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Code](<https://devfeed.tech/topics/code.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [Sorting](<https://devfeed.tech/topics/sorting.md>)

Tags: [code-search](<https://devfeed.tech/tags/code-search.md>), [github](<https://devfeed.tech/tags/github.md>), [regular-expressions](<https://devfeed.tech/tags/regular-expressions.md>), [repositories](<https://devfeed.tech/tags/repositories.md>), [search](<https://devfeed.tech/tags/search.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

A practical guide to GitHub Code Search, covering exact-string searches, Boolean expressions, regular expressions, qualifiers, result limits, sorting behavior, and indexing limitations. It also presents the tool as useful for code exploration and learning.

### Source excerpt

The new search engine offers powerful code searching mechanisms we can leverage for quickly finding the code we need, as well as for exploration and learning.

## Switching between apps using shortcuts on macOS

DevFeed: [Switching between apps using shortcuts on macOS](<https://devfeed.tech/articles/switching-between-apps-using-shortcuts-on-macos-37179.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/switching-between-apps-using-shortcuts-on-macos/>)

Published: 2023-08-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [App](<https://devfeed.tech/topics/app.md>), [keyboard](<https://devfeed.tech/topics/keyboard.md>)

Tags: [keyboard](<https://devfeed.tech/tags/keyboard.md>), [macos](<https://devfeed.tech/tags/macos.md>), [shortcuts](<https://devfeed.tech/tags/shortcuts.md>), [spotlight](<https://devfeed.tech/tags/spotlight.md>), [switching](<https://devfeed.tech/tags/switching.md>)

### AI overview

A developer explains how to switch between frequently used apps on macOS with custom keyboard shortcuts. The approach remaps the right Command key as a Hyper key using Karabiner and assigns shortcuts in Raycast, with BetterTouchTool offered as an alternative.

### Source excerpt

This is one of the most common activities when working on a computer. To make it as seamless as possible, I assigned a custom shortcut for every app I commonly use.

## Stop perfecting your config

DevFeed: [Stop perfecting your config](<https://devfeed.tech/articles/stop-perfecting-your-config-37178.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/stop-perfecting-your-config/>)

Published: 2023-07-21T00:00:00Z

Content type: opinion

Language: en

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

Topics: [configuration](<https://devfeed.tech/topics/configuration.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [config](<https://devfeed.tech/tags/config.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [programming](<https://devfeed.tech/tags/programming.md>), [repository](<https://devfeed.tech/tags/repository.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This opinion piece argues that endlessly fine-tuning configurations for editors, IDEs, terminals, and other applications can become procrastination. It encourages developers to recognize when configuration becomes obsessive and accept "good enough" so they can focus on more meaningful work.

### Source excerpt

It's never going to be perfect anyway. Learn to accept the "good enough" and move on to more meaningful things.

## How to dynamically change UIStackView axis

DevFeed: [How to dynamically change UIStackView axis](<https://devfeed.tech/articles/how-to-dynamically-change-uistackview-axis-37165.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-dynamically-change-uistackview-axis/>)

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

Content type: tutorial

Language: en

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

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [interface](<https://devfeed.tech/topics/interface.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ui](<https://devfeed.tech/tags/ui.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

A tutorial explains how to dynamically switch a UIStackView from horizontal to vertical when its arranged label and button no longer fit without compression. It uses layout changes and the view's layout method to compare the elements' required width with the available width.

### Source excerpt

Let's see how we can change the axis from horizontal to vertical once the elements no longer fit the screen properly.

## How to setup comments on your static blog

DevFeed: [How to setup comments on your static blog](<https://devfeed.tech/articles/how-to-setup-comments-on-your-static-blog-37169.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-setup-comments-on-your-static-blog/>)

Published: 2023-05-30T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [GitHub Issues](<https://devfeed.tech/topics/github-issues.md>), [Website](<https://devfeed.tech/topics/website.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [github](<https://devfeed.tech/tags/github.md>), [github-issues](<https://devfeed.tech/tags/github-issues.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [setup](<https://devfeed.tech/tags/setup.md>), [static](<https://devfeed.tech/tags/static.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This tutorial explains how to add utterances comments to a static blog using GitHub Issues as comment storage. It covers repository setup, widget configuration, script integration, and handling the widget theme for dark mode.

### Source excerpt

With a tool called utterances, it's very easy to add comments to your website with minimal code and no need for a database.

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

## How to create factories for models with polymorphic relationships in Laravel

DevFeed: [How to create factories for models with polymorphic relationships in Laravel](<https://devfeed.tech/articles/how-to-create-factories-for-models-with-polymorphic-relationships-in-laravel-37162.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-create-factories-for-models-with-polymorphic-relationships-in-laravel/>)

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

Content type: tutorial

Language: en

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

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [Eloquent ORM](<https://devfeed.tech/topics/eloquent.md>), [Code](<https://devfeed.tech/topics/code.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [eloquent](<https://devfeed.tech/tags/eloquent.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [relationships](<https://devfeed.tech/tags/relationships.md>), [users](<https://devfeed.tech/tags/users.md>)

### AI overview

A Laravel tutorial explaining how to build model factories for polymorphic relationships, including custom morph aliases and factory states for associating different related models.

### Source excerpt

Factories for these models are a bit trickier to implement than the standard ones.

## Inline functions in Kotlin

DevFeed: [Inline functions in Kotlin](<https://devfeed.tech/articles/inline-functions-in-kotlin-37173.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/inline-functions-in-kotlin/>)

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

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [function](<https://devfeed.tech/topics/function.md>), [Code](<https://devfeed.tech/topics/code.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [examples](<https://devfeed.tech/tags/examples.md>), [function](<https://devfeed.tech/tags/function.md>), [guide](<https://devfeed.tech/tags/guide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [practical](<https://devfeed.tech/tags/practical.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

This tutorial explains Kotlin inline functions, including how the compiler expands them at call sites and how they can reduce the runtime overhead of lambdas and anonymous functions. It uses practical examples and decompiled bytecode to discuss when inline functions are appropriate or should be avoided.

### Source excerpt

A comprehensive guide to inline functions, covering their purpose, practical examples, and tips for when to use or avoid them.

## How to fix the invalid JDK problem on Electric Eel

DevFeed: [How to fix the invalid JDK problem on Electric Eel](<https://devfeed.tech/articles/how-to-fix-the-invalid-jdk-problem-on-electric-eel-37166.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-fix-the-invalid-jdk-problem-on-electric-eel/>)

Published: 2023-01-20T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android](<https://devfeed.tech/topics/android.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [location](<https://devfeed.tech/tags/location.md>), [other](<https://devfeed.tech/tags/other.md>), [problems](<https://devfeed.tech/tags/problems.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [updating](<https://devfeed.tech/tags/updating.md>)

### AI overview

This tutorial explains how to fix an invalid JDK configuration after updating Android Studio to Electric Eel. It recommends checking the project's Gradle JDK setting and updating the environment variable if it still points to the old embedded JDK location.

### Source excerpt

When updating Android Studio to Electric Eel, the location of the embedded JDK is changing.

## Be careful when converting Flow to LiveData

DevFeed: [Be careful when converting Flow to LiveData](<https://devfeed.tech/articles/be-careful-when-converting-flow-to-livedata-37158.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/be-careful-when-converting-flow-to-livedata/>)

Published: 2022-12-31T00:00:00Z

Content type: tutorial

Language: en

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

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

Tags: [clients](<https://devfeed.tech/tags/clients.md>), [code](<https://devfeed.tech/tags/code.md>), [flow](<https://devfeed.tech/tags/flow.md>), [function](<https://devfeed.tech/tags/function.md>), [livedata](<https://devfeed.tech/tags/livedata.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains a caveat when converting Kotlin Flow to LiveData: the resulting LiveData emits upstream updates only while it has an active observer. Without an observer, it remains inactive and may not receive the latest value.

### Source excerpt

LiveData created this way will only emit data when it has active observers.

## Managing dotfiles with GitHub

DevFeed: [Managing dotfiles with GitHub](<https://devfeed.tech/articles/managing-dotfiles-with-github-37175.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/managing-dotfiles-with-github/>)

Published: 2022-11-30T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Git](<https://devfeed.tech/topics/git.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Vim](<https://devfeed.tech/topics/vim.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [completion](<https://devfeed.tech/tags/completion.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [macos](<https://devfeed.tech/tags/macos.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [repository](<https://devfeed.tech/tags/repository.md>), [shell](<https://devfeed.tech/tags/shell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A practical guide to managing dotfiles and initialization scripts in a GitHub repository. It explains how to bootstrap a new machine, configure the terminal with Z shell and oh-my-zsh, link Vim and shell configuration files, and keep sensitive variables outside a public repository.

### Source excerpt

This post will describe how I store and manage my dotfiles in a repository on GitHub.

## How to draw content behind system bars in Jetpack Compose

DevFeed: [How to draw content behind system bars in Jetpack Compose](<https://devfeed.tech/articles/how-to-draw-content-behind-system-bars-in-jetpack-compose-37164.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-draw-content-behind-system-bars-in-jetpack-compose/>)

Published: 2022-10-31T00: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>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to draw app content behind the Android system bars in Jetpack Compose. It demonstrates using an edge-to-edge layout and changing system bar colors and transparency so the navigation and status bars integrate with the app bar and navigation bar design.

### Source excerpt

It's a typical use case, but it's hard to find a concrete example in the documentation.

## How to test intermediate steps in suspending functions

DevFeed: [How to test intermediate steps in suspending functions](<https://devfeed.tech/articles/how-to-test-intermediate-steps-in-suspending-functions-37170.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-test-intermediate-steps-in-suspending-functions/>)

Published: 2022-09-30T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [execution](<https://devfeed.tech/topics/execution.md>)

Tags: [code-testing](<https://devfeed.tech/tags/code-testing.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [testing](<https://devfeed.tech/tags/testing.md>), [virtual](<https://devfeed.tech/tags/virtual.md>)

### AI overview

This tutorial explains how to test intermediate state changes inside suspending functions. It shows how coroutine test dispatchers and virtual-time controls can verify behavior before and after a suspended network call without waiting through real delays.

### Source excerpt

Testing the final result of a suspending function is easy, but what about verifying what happens inside it during the execution?

## What is the difference between size and viewport size in vector drawables?

DevFeed: [What is the difference between size and viewport size in vector drawables?](<https://devfeed.tech/articles/what-is-the-difference-between-size-and-viewport-size-in-vector-drawables-37181.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/what-is-the-difference-between-size-and-viewport-size-in-vector-drawables/>)

Published: 2022-08-31T00: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>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [pixels](<https://devfeed.tech/tags/pixels.md>), [screen](<https://devfeed.tech/tags/screen.md>), [vector](<https://devfeed.tech/tags/vector.md>)

### AI overview

A tutorial explains the difference between a vector drawable's intrinsic size and viewport size. Using a Jetpack Compose example, it shows that size determines the drawable's displayed dimensions, while viewport size defines the coordinate space used to draw its paths.

### Source excerpt

It always puzzled me so I decided to find out how are these things different.

## How to change system bar colors using Jetpack Compose

DevFeed: [How to change system bar colors using Jetpack Compose](<https://devfeed.tech/articles/how-to-change-system-bar-colors-using-jetpack-compose-37161.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-change-system-bar-colors-in-compose/>)

Published: 2022-07-20T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [XML](<https://devfeed.tech/topics/xml.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [changes](<https://devfeed.tech/tags/changes.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This tutorial explains how to change Android status bar and navigation bar colors directly with Jetpack Compose, without modifying XML files. It shows how to use the activity's system bar properties and update icon appearance according to the dark theme.

### Source excerpt

System bar colors can be changed directly with Compose, without a need to modify any XML files.

## How Twitter handled personalized timelines for their users

DevFeed: [How Twitter handled personalized timelines for their users](<https://devfeed.tech/articles/how-twitter-handled-personalized-timelines-for-their-users-37171.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-twitter-handled-personalized-timelines-for-their-users/>)

Published: 2022-06-28T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [X (Twitter)](<https://devfeed.tech/topics/twitter.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Users](<https://devfeed.tech/topics/users.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [databases](<https://devfeed.tech/tags/databases.md>), [operations](<https://devfeed.tech/tags/operations.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [sql](<https://devfeed.tech/tags/sql.md>), [twitter](<https://devfeed.tech/tags/twitter.md>), [users](<https://devfeed.tech/tags/users.md>)

### AI overview

This article explains how Twitter addressed scalability challenges for personalized timelines, focusing on fan-out caused by delivering new posts to many followers. It introduces a traditional relational-database approach and discusses the resulting workload of assembling timelines on demand.

### Source excerpt

The approach described here might be useful to you if your application has some sort of a personalized feed for each user.

## How to display responsive images from Laravel-medialibrary in Vue.js

DevFeed: [How to display responsive images from Laravel-medialibrary in Vue.js](<https://devfeed.tech/articles/how-to-display-responsive-images-from-laravel-medialibrary-in-vue-js-37163.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-display-responsive-image-from-laravel-medialibrary-in-vue-js/>)

Published: 2022-05-29T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [Vue.js](<https://devfeed.tech/topics/vue.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [component](<https://devfeed.tech/tags/component.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [responsive](<https://devfeed.tech/tags/responsive.md>), [vue](<https://devfeed.tech/tags/vue.md>), [vue-js](<https://devfeed.tech/tags/vue-js.md>)

### AI overview

This tutorial explains how to display responsive images generated by a Laravel media library in a Vue.js component. It shows how a controller can return the library's generated HTML markup and how the Vue template can render it based on screen size.

### Source excerpt

It's easy to do in a Blade file, but what about a Vue component?

## How ViewModels survive configuration changes

DevFeed: [How ViewModels survive configuration changes](<https://devfeed.tech/articles/how-viewmodels-survive-configuration-changes-37172.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-viewmodels-survive-configuration-changes/>)

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

Content type: tutorial

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Development](<https://devfeed.tech/topics/development.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>)

### AI overview

This tutorial examines how Android ViewModels retain UI-related data across configuration changes. It explores the Android Architecture Components implementation and explains the Kotlin APIs used to create ViewModel instances, including delegated properties, lazy initialization, lambdas, and extension functions.

### Source excerpt

Let's explore their implementation details to see how they achieve this.

## My key takeaways from The Pragmatic Programmer

DevFeed: [My key takeaways from The Pragmatic Programmer](<https://devfeed.tech/articles/my-key-takeaways-from-the-pragmatic-programmer-37176.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/my-key-takeaways-from-the-pragmatic-programmer/>)

Published: 2022-03-20T00:00:00Z

Content type: opinion

Language: en

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

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

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [book](<https://devfeed.tech/tags/book.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [programming](<https://devfeed.tech/tags/programming.md>), [reading](<https://devfeed.tech/tags/reading.md>)

### AI overview

A personal summary of key ideas from The Pragmatic Programmer, focusing on pragmatic craftsmanship, adaptability, curiosity, responsibility, and continuous improvement in everyday programming work.

### Source excerpt

In this blog post, I list things that resonate with me most after reading this book.

## Do not change the package name or class name of your AppWidgetProvider

DevFeed: [Do not change the package name or class name of your AppWidgetProvider](<https://devfeed.tech/articles/do-not-change-the-package-name-or-class-name-of-your-appwidgetprovider-37160.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/do-not-change-the-package-name-or-class-name-of-your-app-widget-provider/>)

Published: 2022-02-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [code](<https://devfeed.tech/tags/code.md>), [need](<https://devfeed.tech/tags/need.md>)

### AI overview

The article explains why changing the package or class name of an Android AppWidgetProvider can cause users' home-screen widgets to disappear. It examines how Android's AppWidgetService identifies providers and tracks their associated widgets.

### Source excerpt

If you do this, widgets that were placed on the home screen by your users will simply disappear.

## How to reliably update widgets on Android

DevFeed: [How to reliably update widgets on Android](<https://devfeed.tech/articles/how-to-reliably-update-widgets-on-android-37168.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-reliably-update-widgets-on-android/>)

Published: 2022-02-12T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-jetpack](<https://devfeed.tech/tags/android-jetpack.md>), [background](<https://devfeed.tech/tags/background.md>), [battery](<https://devfeed.tech/tags/battery.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [setup](<https://devfeed.tech/tags/setup.md>), [widget](<https://devfeed.tech/tags/widget.md>), [workmanager](<https://devfeed.tech/tags/workmanager.md>)

### AI overview

This tutorial explains why Android widgets may not update reliably using android:updatePeriodMillis alone, particularly on devices whose vendors restrict background processing. It presents Android Jetpack WorkManager as a way to schedule periodic work that updates widget instances through AppWidgetManager.

### Source excerpt

The default solution with android:updatePeriodMillis doesn't always work.

[Next page](<https://devfeed.tech/sources/arkadiusz-chmura.md?cursor=WyIyMDIyLTAyLTEyVDAwOjAwOjAwKzAwOjAwIiwgImIyM2E0ZjU2LWQ2NTMtNGI4YS1iYjRjLWY5NDNjMmE1OWEwZiJd>)