# View

Published articles for View.

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

## A visual guide to troubleshooting search performance using Query Insights dashboards

DevFeed: [A visual guide to troubleshooting search performance using Query Insights dashboards](<https://devfeed.tech/articles/a-visual-guide-to-troubleshooting-search-performance-using-query-insights-dashboards-12783.md>)

Original publisher: [Read original article](<https://opensearch.org/blog/a-visual-guide-to-troubleshooting-search-performance-using-query-insights-dashboards/>)

Author: Chenyang Ji

Published: 2026-09-04T20:11:52Z

Content type: tutorial

Language: en

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

Topics: [Amazon OpenSearch Service](<https://devfeed.tech/topics/amazon-opensearch-service.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [cpu](<https://devfeed.tech/topics/cpu.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [dashboards](<https://devfeed.tech/tags/dashboards.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [index](<https://devfeed.tech/tags/index.md>), [latency](<https://devfeed.tech/tags/latency.md>), [memory](<https://devfeed.tech/tags/memory.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [opensearch](<https://devfeed.tech/tags/opensearch.md>), [performance](<https://devfeed.tech/tags/performance.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [technical](<https://devfeed.tech/tags/technical.md>), [troubleshooting](<https://devfeed.tech/tags/troubleshooting.md>), [view](<https://devfeed.tech/tags/view.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

A visual guide to using OpenSearch Query Insights dashboards to investigate slow searches and unexpected resource usage. It covers the Live Queries and Top N Queries views, interactive visualizations, configuration, and metrics such as latency, CPU, and memory.

### Source excerpt

OpenSearch Query Insights dashboards provide interactive visualizations for monitoring live queries, analyzing top N query performance, and viewing individual query details. This post explores each visualization and shows how to use visualizations to troubleshoot search performance issues. The post A visual guide to troubleshooting search performance using Query Insights dashboards appeared first on OpenSearch.

## Airflow Survey 2025

DevFeed: [Airflow Survey 2025](<https://devfeed.tech/articles/airflow-survey-2025-32548.md>)

Original publisher: [Read original article](<https://airflow.apache.org/blog/airflow-survey-2025/>)

Author: Apache Airflow

Published: 2026-01-22T00:00:00Z

Content type: article

Language: en

Sources: [Apache Airflow Blog](<https://devfeed.tech/sources/apache-airflow-blog.md>)

Topics: [airflow](<https://devfeed.tech/topics/airflow.md>), [data](<https://devfeed.tech/topics/data.md>), [CSV](<https://devfeed.tech/topics/csv.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [airflow](<https://devfeed.tech/tags/airflow.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [apache-airflow](<https://devfeed.tech/tags/apache-airflow.md>), [community](<https://devfeed.tech/tags/community.md>), [csv](<https://devfeed.tech/tags/csv.md>), [download](<https://devfeed.tech/tags/download.md>), [form](<https://devfeed.tech/tags/form.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [interactive](<https://devfeed.tech/tags/interactive.md>), [report](<https://devfeed.tech/tags/report.md>), [responses](<https://devfeed.tech/tags/responses.md>), [share](<https://devfeed.tech/tags/share.md>), [survey](<https://devfeed.tech/tags/survey.md>), [users](<https://devfeed.tech/tags/users.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This page presents the Airflow Survey 2025 interactive report, hosted by Astronomer and sponsored and supported by the Apache Airflow community. The supplied evidence does not include the survey findings.

### Source excerpt

The interactive report is hosted by Astronomer. The Apache Airflow community thanks Astronomer for running this survey, for sponsoring it and providing the report in this form, and for their effort in marketing, analysis, and preparing the graphics. View raw data Download survey responses (CSV)

## How to Fix Kafka to ClickHouse® Performance Bottlenecks

DevFeed: [How to Fix Kafka to ClickHouse® Performance Bottlenecks](<https://devfeed.tech/articles/how-to-fix-kafka-to-clickhouse-performance-bottlenecks-18516.md>)

Original publisher: [Read original article](<https://www.tinybird.co/blog/how-to-fix-kafka-to-clickhouse-performance-bottlenecks>)

Author: Alberto Romeu

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

Content type: tutorial

Language: en

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

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [partition](<https://devfeed.tech/tags/partition.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [scalable-analytics-architecture](<https://devfeed.tech/tags/scalable-analytics-architecture.md>), [schema](<https://devfeed.tech/tags/schema.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

A tutorial on optimizing performance in Kafka-to-ClickHouse pipelines through schema optimization, Materialized View tuning, partition distribution strategies, and throughput practices.

### Source excerpt

Learn how to optimize your Kafka to ClickHouse pipeline performance with schema optimization, Materialized View tuning, partition distribution strategies and throughput best practices.

## Multiple monitors support

DevFeed: [Multiple monitors support](<https://devfeed.tech/articles/multiple-monitors-support-22391.md>)

Original publisher: [Read original article](<https://www.red-lang.org/2025/04/multiple-monitors-support.html>)

Author: Nenad Rakocevic (noreply@blogger.com)

Published: 2025-04-15T09:08:00Z

Content type: release

Language: en

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

Topics: [Red](<https://devfeed.tech/topics/red.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Script](<https://devfeed.tech/topics/script.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [display](<https://devfeed.tech/tags/display.md>), [monitors](<https://devfeed.tech/tags/monitors.md>), [os](<https://devfeed.tech/tags/os.md>), [screen](<https://devfeed.tech/tags/screen.md>), [script](<https://devfeed.tech/tags/script.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This blog entry describes Red View engine support for multiple monitors. It explains screen faces, virtual coordinates, scaling factors, monitor changes, and launching Red consoles and apps on different displays. View adjusts windows for displays with different DPI values, while Windows 7 uses a fallback API and some window-coordinate and child-window limitations remain.

### Source excerpt

Here is a short blog entry just to explain the newly added multiple monitor support to View engine. Screen faces Each connected monitor gets associated with a screen face in system/view/screens list. You can check that all monitors have been detected correctly using (two monitors in this case): >> length? system/view/screens == 2 Each screen's /offset indicates the screen position using virtual screen coordinates. The main screen gets a (0, 0) offset. All other screens are positioned relatively to that, in the same virtual space. Screen sizes are also expressed in virtual coordinates. Screen's scaling factor is exposed in the /data facet as a float value. Monitors properties changes and adding/removing detection are also supported, updating the screens list. Windows present on removed monitors are automatically closed by the OS. A simple display-geometry.red script is provided to show how screen faces reflect the monitors topology in that virtual space: That script will also output the screen details in the console: >> do %tests/displays-geometry.red 1 - offset: (0, 0) size: (3840, 2160) scaling: 150% 2 - offset: (1165, 2160) size: (1480, 320) scaling: 100% NB: I am using a little 11.9inch screen below my main display for developing this specific feature, as it takes very little extra space on my desk. Red apps on multiple screens You can now launch Red consoles and apps on any display, the app will open on the screen it was launched from, using the specific scaling value of that screen. A get-current-screen function has been provided to return the current screen (where the mouse cursor is currently located). When displays have different scaling factor or DPI, View will adjust the window and its content to fit that scaling factor. This also works when dragging a View window between displays with different DPI, the window and its content will resize accordingly. On Windows, the API View requires, are not supported on pre-Windows8 platforms. So a new Windows7 compilat

## How to Use Discord's In-Game Overlay to Talk While Playing on PC

DevFeed: [How to Use Discord's In-Game Overlay to Talk While Playing on PC](<https://devfeed.tech/articles/how-to-use-discord-s-in-game-overlay-to-talk-while-playing-on-pc-254.md>)

Original publisher: [Read original article](<https://discord.com/blog/how-to-use-discords-in-game-overlay-to-talk-while-playing-on-pc>)

Author: Locke

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

Content type: article

Language: en

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

Topics: [Discord](<https://devfeed.tech/topics/discord.md>), [pc](<https://devfeed.tech/topics/pc.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>)

Tags: [desktop](<https://devfeed.tech/tags/desktop.md>), [discord](<https://devfeed.tech/tags/discord.md>), [display](<https://devfeed.tech/tags/display.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [invites](<https://devfeed.tech/tags/invites.md>), [layout](<https://devfeed.tech/tags/layout.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [pc](<https://devfeed.tech/tags/pc.md>), [screen](<https://devfeed.tech/tags/screen.md>), [talk](<https://devfeed.tech/tags/talk.md>), [video](<https://devfeed.tech/tags/video.md>), [view](<https://devfeed.tech/tags/view.md>), [voice](<https://devfeed.tech/tags/voice.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This guide explains how to use Discord's In-Game Overlay on Windows while playing on PC. It covers voice and video calls, screen sharing, gameplay streaming, notifications, and customizing the overlay layout with the default keyboard shortcut.

### Source excerpt

Discord's In-Game Overlay lets you join voice and video calls, see who's talkin', and stream your gameplay without ever having to alt-tab out of your current match! Learn how it works and how you can customize it to your liking.

## Optimizing Data Reliability: Heroku Connect & Drift Detection

DevFeed: [Optimizing Data Reliability: Heroku Connect & Drift Detection](<https://devfeed.tech/articles/optimizing-data-reliability-heroku-connect-drift-detection-26480.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/optimizing-data-reliability-heroku-connect-drift-detection/>)

Author: Siraj Ghaffar

Published: 2024-06-26T02:43:00Z

Content type: article

Language: en

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

Topics: [Heroku Postgres](<https://devfeed.tech/topics/heroku-postgres.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>), [Database](<https://devfeed.tech/topics/database.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [crm](<https://devfeed.tech/tags/crm.md>), [data](<https://devfeed.tech/tags/data.md>), [database](<https://devfeed.tech/tags/database.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [heroku-connect](<https://devfeed.tech/tags/heroku-connect.md>), [heroku-postgres](<https://devfeed.tech/tags/heroku-postgres.md>), [integration](<https://devfeed.tech/tags/integration.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [salesforce](<https://devfeed.tech/tags/salesforce.md>), [sync](<https://devfeed.tech/tags/sync.md>), [ui](<https://devfeed.tech/tags/ui.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This Heroku article explains improvements to Heroku Connect's drift detection. It describes how Salesforce data is polled into Heroku Postgres, why long-running transactions can cause missed changes, and how the updated feature detects and addresses drift more efficiently while maintaining eventual consistency.

### Source excerpt

Heroku Connect makes it easy to sync data at scale between Salesforce and Heroku Postgres. You can build Heroku apps that bidirectionally share data in your Postgres database with your contacts, accounts, and other custom objects in Salesforce. Easily configured with a point-and-click UI, you can get the integration up and running in minutes without [...] The post Optimizing Data Reliability: Heroku Connect & Drift Detection appeared first on Heroku.

## Building a Note-Taking App in Compose

DevFeed: [Building a Note-Taking App in Compose](<https://devfeed.tech/articles/building-a-note-taking-app-in-compose-20024.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/building-a-note-taking-app-in-compose>)

Author: Doximity

Published: 2023-07-05T19:47:00Z

Content type: tutorial

Language: en

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

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

Tags: [app](<https://devfeed.tech/tags/app.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [build](<https://devfeed.tech/tags/build.md>), [building](<https://devfeed.tech/tags/building.md>), [class](<https://devfeed.tech/tags/class.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [code](<https://devfeed.tech/tags/code.md>), [collect](<https://devfeed.tech/tags/collect.md>), [compose](<https://devfeed.tech/tags/compose.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [di](<https://devfeed.tech/tags/di.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [flow](<https://devfeed.tech/tags/flow.md>), [icons](<https://devfeed.tech/tags/icons.md>), [implement](<https://devfeed.tech/tags/implement.md>), [koin](<https://devfeed.tech/tags/koin.md>), [list](<https://devfeed.tech/tags/list.md>), [state](<https://devfeed.tech/tags/state.md>), [state-management](<https://devfeed.tech/tags/state-management.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

A case study showing how to build a note-taking app with Jetpack Compose. It models note state, renders the notes UI, collects note data through a presenter and Clean Architecture use cases, and plans events for adding, editing, checking, and deleting notes.

### Source excerpt

In this case study, we will build a note-taking app that lets the user add, edit and delete notes. It uses Compose for both the view and presentation layers! Note: This is a follow up to Part 1: Simplifying State Management with Compose and assumes the reader is already familiar with Jetpack Compose. The Template I find it useful to start with the model that represents the state of the screen we're building. It will have a list of notes, with each note containing properties for the text and checkbox: data class NotesUiModel(val notes: List<Note>) : UiModel { data class Note(val text: String, val isChecked: Boolean) : UiModel } It'll be the job of the presenter to produce this model. Initially, let's implement a stub to return an empty list of notes (we'll ignore parameters for now): class NotesListPresenter : Presenter<NotesUiModel, Unit> { @Composable override fun present(params: Unit): NotesUiModel { return NotesUiModel(notes = emptyList()) } } Then we can build our view to render the model that's returned by the presenter: @Composable fun NotesScreen() { val presenter: NotesListPresenter = koinInject() // we use koin for DI val uiModel = presenter.present(Unit) Column { TopAppBar(title = { Text("Notes") }) Notes(uiModel) } } } The View The views themselves are pretty self-explanatory if you're already familiar with building UIs in Compose. For the notes, we'll take in a NotesUiModel argument and create a LazyColumn with the notes property. A FAB button is used for adding new notes, although we'll skip the triggering of events and return to this part in a little bit: @Composable private fun Notes(uiModel: NotesUiModel) { Box { LazyColumn { items(uiModel.notes) { note -> Note(note) } } FloatingActionButton(onClick = { /* TODO */ }) { Icon(imageVector = Icons.Rounded.Add) } } } Then we can render each note with a checkbox, text field and delete button: @Composable private fun Note(uiModel: Note) { Row { Checkbox( checked = uiModel.isChecked, onCheckedChange = { /* T

## This Week at Zed Industries: #5

DevFeed: [This Week at Zed Industries: #5](<https://devfeed.tech/articles/this-week-at-zed-industries-5-13555.md>)

Original publisher: [Read original article](<https://zed.dev/blog/this-week-at-zed-5>)

Author: Max Brunsfeld

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

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [App](<https://devfeed.tech/topics/app.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [issue tracker](<https://devfeed.tech/topics/issue-tracker.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [features](<https://devfeed.tech/tags/features.md>), [issue-tracker](<https://devfeed.tech/tags/issue-tracker.md>), [layout](<https://devfeed.tech/tags/layout.md>), [os](<https://devfeed.tech/tags/os.md>), [screen](<https://devfeed.tech/tags/screen.md>), [set](<https://devfeed.tech/tags/set.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

Zed's weekly update covers the release of Zed 0.88, including a redesigned panel system and a zoom feature. It also describes crash problems after release, three patches issued to address them, new crash dashboards, and ongoing work on LSP server detection.

### Source excerpt

Panels, panels, and more panels...

## Understanding SwiftUI view lifecycles

DevFeed: [Understanding SwiftUI view lifecycles](<https://devfeed.tech/articles/understanding-swiftui-view-lifecycles-21716.md>)

Original publisher: [Read original article](<https://oleb.net/2022/swiftui-view-lifecycle/>)

Author: Ole Begemann

Published: 2022-12-15T20:52:46Z

Content type: tutorial

Language: en

Sources: [Ole Begemann](<https://devfeed.tech/sources/ole-begemann.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [macOS](<https://devfeed.tech/topics/macos.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [code](<https://devfeed.tech/tags/code.md>), [examples](<https://devfeed.tech/tags/examples.md>), [ios](<https://devfeed.tech/tags/ios.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [macos](<https://devfeed.tech/tags/macos.md>), [render](<https://devfeed.tech/tags/render.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [stateobject](<https://devfeed.tech/tags/stateobject.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This article explains how SwiftUI view and render trees affect view identity, lifecycle, and state. It describes how state changes can recreate view values while render-tree objects persist, and presents the SwiftUI View Lifecycle app as a way to observe lifecycle events.

### Source excerpt

I wrote an app called SwiftUI View Lifecycle. The app allows you to observe how different SwiftUI constructs and containers affect a view's lifecycle, including the lifetime of its state and when onAppear gets called. The code for the app is on GitHub. It can be built for iOS and macOS. The view tree and the render tree When we write SwiftUI code, we construct a view tree that consists of nested view values. Instances of the view tree are ephemeral: SwiftUI constantly destroys and recreates (parts of) the view tree as it processes state changes. The view tree serves as a blueprint from which SwiftUI creates a second tree, which represents the actual view "objects" that are "on screen" at any given time (the "objects" could be actual UIView or NSView objects, but also other representations; the exact meaning of "on screen" can vary depending on context). Chris Eidhof likes to call this second tree the render tree (the link points to a 3 minute video where Chris demonstrates this duality, highly recommended). The render tree persists across state changes and is used by SwiftUI to establish view identity. When a state change causes a change in a view's value, SwiftUI will find the corresponding view object in the render tree and update it in place, rather than recreating a new view object from scratch. This is of course key to making SwiftUI efficient, but the render tree has another important function: it controls the lifetimes of views and their state. View lifecycles and state We can define a view's lifetime as the timespan it exists in the render tree. The lifetime begins with the insertion into the render tree and ends with the removal. Importantly, the lifetime extends to view state defined with @State and @StateObject: when a view gets removed from the render tree, its state is lost; when the view gets inserted again later, the state will be recreated with its initial value. The SwiftUI View Lifecycle app tracks three lifecycle events for a view and displays the

## Using an Activity from a Hilt ViewModel

DevFeed: [Using an Activity from a Hilt ViewModel](<https://devfeed.tech/articles/using-an-activity-from-a-hilt-viewmodel-25634.md>)

Original publisher: [Read original article](<https://blog.p-y.wtf/using-an-activity-from-a-hilt-viewmodel>)

Author: Pierre-Yves Ricau

Published: 2022-09-07T21:59:49Z

Content type: tutorial

Language: en

Sources: [Py's blog](<https://devfeed.tech/sources/py-s-blog.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [dagger-hilt](<https://devfeed.tech/tags/dagger-hilt.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [state](<https://devfeed.tech/tags/state.md>), [view](<https://devfeed.tech/tags/view.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial presents a Hilt-based technique for accessing the current Android Activity from a Hilt ViewModel. It uses scoped activity storage, an activity-scoped entry point, and lifecycle callbacks to update the reference while accounting for configuration changes and multiple activities.

### Source excerpt

👋 Hi, this is P.Y., I work as an Android Engineer at Block. This blog shares a bit of hackery to be able to access an activity instance within a Hilt ViewModel. If you come up with other interesting

## Stateful Testing for Android App State Logic

DevFeed: [Stateful Testing for Android App State Logic](<https://devfeed.tech/articles/top-notch-stateful-testing-in-android-25693.md>)

Original publisher: [Read original article](<https://sergiosastre.hashnode.dev/top-notch-stateful-testing-in-android>)

Author: Sergio Sastre Florez

Published: 2022-08-31T05:59:40Z

Content type: tutorial

Language: en

Sources: [Sergio's little tech corner](<https://devfeed.tech/sources/sergio-s-little-tech-corner.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [test](<https://devfeed.tech/topics/test.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [java](<https://devfeed.tech/tags/java.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [state](<https://devfeed.tech/tags/state.md>), [stateful](<https://devfeed.tech/tags/stateful.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This tutorial explains stateful testing for Android applications by modeling app state, user actions, preconditions, and postconditions. It uses a text editor with text changes, undo, and redo as an example.

### Source excerpt

Broadly speaking, in an app, state is any value that can change over time. All Android apps display state to the user, e.g. an enabled/disabled button, the text displayed in a View, etc. We expect users to modify the state by performing actions throu...

## Announcing CodeRAD 2.0 Preview

DevFeed: [Announcing CodeRAD 2.0 Preview](<https://devfeed.tech/articles/announcing-coderad-2-0-preview-19195.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/announcing-coderad-2-0-preview/>)

Author: Steve Hannah

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

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Framework](<https://devfeed.tech/topics/framework.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [feature](<https://devfeed.tech/tags/feature.md>), [framework](<https://devfeed.tech/tags/framework.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [native](<https://devfeed.tech/tags/native.md>), [performance](<https://devfeed.tech/tags/performance.md>), [preview](<https://devfeed.tech/tags/preview.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>), [view](<https://devfeed.tech/tags/view.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

CodeRAD 2.0 is announced as a developer preview of an MVC framework for building native, mobile-first applications in Java and Kotlin. The release adds XML-based declarative views, property binding, and a simulator-based pseudo-hot-reload workflow with a stated 1-2 second update delay.

### Source excerpt

We are proud to announce the immediate availability of the CodeRAD 2.0 developer preview. CodeRAD is a modern MVC framework for building truly native, mobile-first, pixel-perfect applications in Java and Kotlin.

## A Simple Laravel Hello World

DevFeed: [A Simple Laravel Hello World](<https://devfeed.tech/articles/a-simple-laravel-hello-world-28186.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/laravel/2021/05/27/a-simple-laravel-hello-world.html>)

Author: Fuzzygroup

Published: 2021-05-27T13:02:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [Composer](<https://devfeed.tech/topics/composer.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Rails](<https://devfeed.tech/topics/rails.md>)

Tags: [how-to](<https://devfeed.tech/tags/how-to.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [make](<https://devfeed.tech/tags/make.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [php](<https://devfeed.tech/tags/php.md>), [route](<https://devfeed.tech/tags/route.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

A step-by-step Laravel tutorial that builds a minimal Hello World application using Composer, a controller, a route, a variable, and an HTML view. It explains that the example demonstrates parts of an MVC framework without covering models or database connectivity.

### Source excerpt

As of late I've been working in Laravel and figuring out how Laravel differs from Rails. And while I have a bigger blog post in the works, I thought there was learning value in a simple Hello World implemented in Laravel. Hello World is a simple program that just puts Hello World on the screen. Here's how I thought a Laravel version of this should work: Be a whole Laravel application Be a single controller Be a single route Define the text "Hello World" as a variable, $text, in the controller Display that on the screen via an HTML template While this doesn't illustrated models and database connectivity, this actually illustrates how to use a surprising amount of an overall MVC framework. Step 1: Creating an Application The first step is to use composer to generate the overall application with: composer create-project laravel/laravel hello_world The next step is to change into the directory with: cd hello_world and then open the code base with: mate . or if you use Sublime: subl . Step 2: Generating a Controller Back at your command line, you want to generate a controller with: php artisan make:controller HelloController This will create a file named HelloController in app/http/Controllers: ls -l app/Http/Controllers total 16 -rw-r--r-- 1 sjohnson staff 361 May 18 11:37 Controller.php -rw-r--r-- 1 sjohnson staff 122 May 27 09:12 HelloController.php Inside the controller you want to add the following code (some of which will already be there from the generator): public function index() { return view('hello_index'); } inside the "class HelloController extends Controller" block of code (it goes inside the {} braces). Step 3: Adding a Route Moving back to the code base, you want to edit the file routes/web.php and add this line: Route::get('/hello', 'App\Http\Controllers\HelloController@index'); This adds a single route, /hello, which is then handled by the Hello controller and the hello_index action. You can test that this route is available by running: php artisan rout

## Keeping Form Elements Visible in Hybrid iOS Apps

DevFeed: [Keeping Form Elements Visible in Hybrid iOS Apps](<https://devfeed.tech/articles/maintaining-focus-19121.md>)

Original publisher: [Read original article](<https://medium.com/rbi-tech/maintaining-focus-4d111697f79a?source=rss----904782439303---4>)

Author: Andy Weiss

Published: 2021-02-28T14:19:06Z

Content type: tutorial

Language: en

Sources: [RBI Tech](<https://devfeed.tech/sources/rbi-tech.md>)

Topics: [Forms](<https://devfeed.tech/topics/forms.md>), [Ionic](<https://devfeed.tech/topics/ionic.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [forms](<https://devfeed.tech/tags/forms.md>), [hybrid-app-development](<https://devfeed.tech/tags/hybrid-app-development.md>), [ionic](<https://devfeed.tech/tags/ionic.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This tutorial examines why form elements can be covered by the soft keyboard in hybrid iOS app web views, despite behaving correctly in mobile browsers. It demonstrates a Capacitor-based hybrid app and discusses using the Capacitor keyboard API to improve iOS behavior while leaving Android unchanged.

### Source excerpt

Keeping Form Elements Visible in Hybrid iOS Apps Today's mobile browsers provide a pretty great default user experience for forms. For a very simple example, visit the following url from any mobile browser: https://VisualViewport.andyweiss1982.repl.co. The user experience is great from mobile Safari. When you focus on an input field, the phone's soft keyboard animates up from the bottom of the screen. All of the content comes along for the ride, intelligently sliding up so you can see each input's value as you type. Close out the form and the viewport gracefully recedes from view. However, the same exact code can become far less elegant when consumed from a web view inside of a hybrid iOS app. Not so great inside of an iOS web view Not only do we lose the "Done" button that closes the keyboard without submitting the form; in many cases, the keyboard will pop up without displacing the form elements, covering them entirely and making the form appear completely useless! Well, It works in my web browser? 🤷♂ For reference, here is the full code for the original user experience as viewed from the mobile web: https://medium.com/media/7d7adf83c321357f9af250d2c90d1d4e/href To move this code inside of a web view, we can use Ionic's capacitor package to generate a bare-bones hybrid app that can be run in a simulator. Following the docs, you can create a new project, give it a name and assign it a directory, and then add the Android and iOS platforms. npx @capacitor/cli create? App name hybrid-forms-test ? App Package ID (in Java package format, no dashes) com.example.app ? Directory for new app hybrid-forms-test ? Which npm client would you like to use? yarnAdd platforms using "npx cap add":npx cap add android npx cap add ios For the purposes of this demo, you can just copy and paste the following code into www/index.html to generate a carbon copy of the original example into a boilerplate capacitor web view that can be run as either an iOS or Android application: https://me

## Introducing Bookings API Beta

DevFeed: [Introducing Bookings API Beta](<https://devfeed.tech/articles/introducing-bookings-api-beta-15700.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/introducing-bookings-api-beta>)

Author: Leher Pathak

Published: 2020-12-16T08:00:00Z

Content type: release

Language: en

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

Topics: [API](<https://devfeed.tech/topics/api.md>), [App](<https://devfeed.tech/topics/app.md>), [Website](<https://devfeed.tech/topics/website.md>), [Availability](<https://devfeed.tech/topics/availability.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [app](<https://devfeed.tech/tags/app.md>), [apps](<https://devfeed.tech/tags/apps.md>), [availability](<https://devfeed.tech/tags/availability.md>), [customer](<https://devfeed.tech/tags/customer.md>), [developers](<https://devfeed.tech/tags/developers.md>), [payment](<https://devfeed.tech/tags/payment.md>), [payments](<https://devfeed.tech/tags/payments.md>), [search](<https://devfeed.tech/tags/search.md>), [services](<https://devfeed.tech/tags/services.md>), [third-party](<https://devfeed.tech/tags/third-party.md>), [update](<https://devfeed.tech/tags/update.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

Square released the Bookings API in beta, enabling third-party booking apps and custom websites to integrate Square Appointments. Developers can manage booking availability, locations, customers, services, team members, reminders, calendars, and customer profiles, with bookings and payments visible in Square Dashboard.

### Source excerpt

Integrate Square Appointments with your booking app or custom website

## Postgres Views

DevFeed: [Postgres Views](<https://devfeed.tech/articles/postgres-views-516.md>)

Original publisher: [Read original article](<https://supabase.com/blog/postgresql-views>)

Author: Paul Copplestone

Published: 2020-11-18T07:00:00Z

Content type: article

Language: en

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

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [consistency](<https://devfeed.tech/tags/consistency.md>), [organization](<https://devfeed.tech/tags/organization.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [security](<https://devfeed.tech/tags/security.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

The article introduces PostgreSQL views and materialized views. It explains that a view is a named shortcut to an underlying query and outlines benefits including simplicity, consistency, logical organization, and security. Materialized views physically store query results to make subsequent reads faster.

### Source excerpt

Creating and using a view in PostgreSQL.

## When to Use a Helper Method in Rails

DevFeed: [When to Use a Helper Method in Rails](<https://devfeed.tech/articles/when-to-use-a-helper-method-in-rails-28265.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2020/03/04/when-to-use-a-helper-method-in-rails.html>)

Author: Fuzzygroup

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

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Code](<https://devfeed.tech/topics/code.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [function](<https://devfeed.tech/tags/function.md>), [html](<https://devfeed.tech/tags/html.md>), [netlabeler](<https://devfeed.tech/tags/netlabeler.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rake](<https://devfeed.tech/tags/rake.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This Rails tutorial explains when to use a helper method to transform stored hash data into HTML for display. It presents a testable display_labeled_data helper that builds paragraph output, converts newlines to HTML breaks, joins the result, and marks it html_safe. It also notes that Rails helpers share a global namespace.

### Source excerpt

One of the more interesting facilities in Rails helpers which reside in app/helpers/*.rb and are used, well, as helpers. Helpers are basically display level execution of Ruby code. I recently wrote what I thought was a great example of a helper so I thought I'd document it. What I had was a object, stored in the database which had a bunch of data that I needed to display: the object, called a label A serialized hash called labeled_data label0 label1 label2 label3 label4 label5 label6 label7 label8 label9 What I wanted to do was transform this, at display time, to an HTML structure like this: <p>label0: <b>The Data for Label 0</b> <p>label1: <b>The Data for Label 0</b> and, correctly, not show label2, etc if they were blank. And, naturally, do the right thing when there was no data in the labeled_data hash, etc. And while I could have done this with a view and code wrapped in evaluation / output tags: <% and %> or <%= or %> it is dramatically cleaner to write this type of thing as a helper and then call it as a function like display_labeled_data(label). Not only does this make the code much cleaner than evaluation / output tags, it also has the advantage of being testable. Now all that said, here is the code: def display_labeled_data(label) return if label.labeled_data.nil? return if label.labeled_data.keys.nil? output = [] label.labeled_data.keys.each do |key| output << "<p>" output << key output << ":" tmp = label.extracted_data[key] if tmp tmp = tmp.gsub(/\n/,'
') end output << tmp output << "</p>" end output.join("\n").html_safe end The key idea here is: create an output object, in this case an array or [] loop a data structure - label.labeled_data.keys as you loop the data structure, put things into the output object like a paragraph tag, the name of the key i.e. "label0", a ':' clean up the data by converting new lines to html line breaks add the data into the output element add a closing p tag add a line break onto every element of the output object (using

## SwiftUI: впечатления iOS-разработчика о реактивном UI-фреймворке и его синтаксисе

DevFeed: [SwiftUI: впечатления iOS-разработчика о реактивном UI-фреймворке и его синтаксисе](<https://devfeed.tech/articles/article-34264.md>)

Original publisher: [Read original article](<https://tonsky.livejournal.com/324649.html>)

Published: 2020-01-18T15:36:57Z

Content type: opinion

Language: ru

Sources: [Tonsky Стой под стрелой](<https://devfeed.tech/sources/tonsky.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [foreach](<https://devfeed.tech/tags/foreach.md>), [ios](<https://devfeed.tech/tags/ios.md>), [livejournal](<https://devfeed.tech/tags/livejournal.md>), [padding](<https://devfeed.tech/tags/padding.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [tag-5e1c061eda96](<https://devfeed.tech/tags/tag-5e1c061eda96.md>), [tag-c40b78a8c8a6](<https://devfeed.tech/tags/tag-c40b78a8c8a6.md>), [tag-d16a2c26554f](<https://devfeed.tech/tags/tag-d16a2c26554f.md>), [tag-e3028c5e0ab2](<https://devfeed.tech/tags/tag-e3028c5e0ab2.md>), [ui](<https://devfeed.tech/tags/ui.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

An experienced iOS developer shares impressions of SwiftUI after using it for roughly six months and releasing two production applications. The article praises its reactive, data-driven UI model and previews while criticizing its syntax, element-count limitation, opaque types, and inconsistent modifier and container design.

### Source excerpt

Если вдруг вы еще не знаете, примерно полгода назад Эппл анонсировало новый UI фреймворк -- SwiftUI. Событие очень серьезное, и как iOS разработчик со стажем я тут же переключился на него -- сначала попробовать, а потом уже и выпускать production приложения. Спустя полгода и два заапрувленных релиза, хочу поделиться с вами мыслями о SwiftUI. Во-первых, то, что Эппл выпустило нормальный реактивный data-driven UI фреймворк, заслуживает исключительно всяческих похвал. Правильный тренд, правильный подход, _почти_ интерактивное превью, все вовремя и к месту. Нам, iOS-программистам, чего-то такого сильно не хватало. Во-вторых (и тут уже о сомнительном), количество синтаксического сахара, которым они там обмазываются, вызывает, скажем так, удивление. Им пришлось серьезно расширить язык, чтобы вместо условно VStack( Image(uiImage: image), Text(title), Text(subtitle) ) можно было писать VStack { Image(uiImage: image) Text(title) Text(subtitle) } На что только люди не пойдут чтобы избежать споров о том где ставить запятую! Работает это благодаря вот такому вот прекрасному интерфейсу: То есть не только не очень понятно зачем так усложнять себе жизнь, но еще и больше 10 элементов не засунешь. Может быть создатели руководствовались правилом 7±2 и решили, что пользователи айфона не смогут всерьез осознать более 10 одновременных элеметов на экране. То что в этом интерфейсе пропилена специальная дырка для if напрягает если честно еще больше: Не самим фактом дырки, а вопросом, где же собственно дырки под все остальное? (на самом деле, если хочется больше 10 элементов, есть целый специальный компонент -- ForEach, который -- уберите детей от экрана! -- принимает список) (этот курьез и необходимость вводить opaque types заставляет задуматься, насколько сильно нам вообще нужна статическая типизация и какой ценой. Конечно, сторонники статической типизации скажут, что это просто типизация неправильная, вот была бы правильная и проблем бы не было -- что, в общем-то, универсальный аргумент, удобн

## Build complex screens faster on Android with Epoxy

DevFeed: [Build complex screens faster on Android with Epoxy](<https://devfeed.tech/articles/build-complex-screens-faster-on-android-with-epoxy-24563.md>)

Original publisher: [Read original article](<https://medium.com/bleeding-edge/build-complex-screens-faster-on-android-1773c5a64352?source=rss----d8ebe85cdc0f---4>)

Author: Akshay Chordiya

Published: 2019-12-30T13:31:50Z

Content type: tutorial

Language: en

Sources: [Bleeding Edge - Medium](<https://devfeed.tech/sources/bleeding-edge-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Library](<https://devfeed.tech/topics/library.md>), [ui](<https://devfeed.tech/topics/ui.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [class](<https://devfeed.tech/tags/class.md>), [component](<https://devfeed.tech/tags/component.md>), [components](<https://devfeed.tech/tags/components.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [epoxy](<https://devfeed.tech/tags/epoxy.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [layout](<https://devfeed.tech/tags/layout.md>), [library](<https://devfeed.tech/tags/library.md>), [mvi](<https://devfeed.tech/tags/mvi.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [recyclerview](<https://devfeed.tech/tags/recyclerview.md>), [ui](<https://devfeed.tech/tags/ui.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This tutorial explains how Clue adopted Airbnb's Epoxy library with RecyclerView to build complex Android screens. It covers Epoxy models, adapters and controllers, declarative layouts, and a unidirectional data-flow pattern related to MVVM and MVI.

### Source excerpt

Rowing the boat -- Illustration by Marta PucciBuild complex screens faster on Android⚡ -- Our journey with Epoxy RecyclerView is such an important UI component on Android. But using it can get complex and error prone--especially when dealing with different view types and pagination. Moreover, it's hard when working on the same screen within the team. In this article, I'm going to share basics of Epoxy and an overview of the problems it helped us solve. Here's our journey of how we adopted Epoxy at Clue to build our UIs faster in parallel within the team.⚡ Backstory It all started with our users, who wanted a more understandable and interactive view of their historical tracking data. ✨(For Clue users, this is generally their menstrual cycles & symptoms.) So our awesome design team came up with this beautiful intuitive design 😍: Enhanced Analysis screen in Clue app I know what you're thinking already: that's a lot of view types. And we were definitely concerned about the performance and responsiveness of the screen. That's when we decided to see if we could use any third-party library to help us with our goal. Epoxy Epoxy is a library from Airbnb which takes a declarative / composable approach to build the UI--typically, a list. It uses RecyclerView under the hood It simplifies creation of static and dynamic layouts Each item in the list is associated to an epoxy model which defines the item's layout and manages binding the data and releasing the view's resources when it's recycled. Item <-> Epoxy Model <-> Layout resource The order of the items shown on the UI is based on how you add the model to the adapter or controller. Philosophy Epoxy encourages a usage pattern similar to the popular MVVM and MVI architecture where the data flows in one direction (UDF - uni-directional data flow). Flow with Epoxy The data forms the state of the UI then goes to EpoxyModel and to the views on the RecyclerView . The Epoxy Model behaves like a ViewModel and provides the interface betwe

## Namespacing in Kotlin

DevFeed: [Namespacing in Kotlin](<https://devfeed.tech/articles/namespacing-in-kotlin-29368.md>)

Original publisher: [Read original article](<https://arturdryomov.dev/posts/namespacing-in-kotlin/>)

Author: Artur Dryomov

Published: 2019-07-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Artur Dryomov](<https://devfeed.tech/sources/artur-dryomov.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [development-process](<https://devfeed.tech/tags/development-process.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [php](<https://devfeed.tech/tags/php.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [view](<https://devfeed.tech/tags/view.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This article examines how to represent a fractal component structure in Kotlin, focusing on naming and namespace-like organization. It compares several implementation approaches, including their Java representations, compiler behavior, object creation, inheritance, semantics, and generated size.

### Source excerpt

The development process is a research. Find the state machine, organize mutations, wire it for consumers. The process repeats and leads to the meta-research. We investigate scenarios and search for reusable parts. Patterns arise, implementations follow. Ideally, the code resembles a fractal structure. An architecture is said to be fractal if subcomponents are structured in the same way as the whole is. -- André Staltz The Problem Let's say we have a fractal components structure. Each one has a View and a ViewModel.

## Handling Transient Events

DevFeed: [Handling Transient Events](<https://devfeed.tech/articles/handling-transient-events-30594.md>)

Original publisher: [Read original article](<https://ryanharter.com/blog/2019/07/handling-transient-events/>)

Published: 2019-07-26T15:00:00Z

Content type: tutorial

Language: en

Sources: [Blogs on Ryan Harter](<https://devfeed.tech/sources/blogs-on-ryan-harter.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [events](<https://devfeed.tech/tags/events.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [livedata](<https://devfeed.tech/tags/livedata.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This article explains why LiveData is well suited to persistent view state but less suited to transient view events. It distinguishes state that should be saved and restored from one-time events such as notifications, navigation, dialogs, and errors, using an Android app example.

### Source excerpt

LiveData has become an important part of many Android apps. With it's elegant handling of the complex lifecycle inherent in many Android components, its understandable that we would try to use them everywhere we can. LiveData, however, was designed with a very specific use case in mind. Its intended to hold data for use by views in an application, and make that data available in a lifecycle-safe fashion, while helping us reduce the need to reload data unnecessarily.

## Investigating Memory Leaks in Square POS on Android Q

DevFeed: [Investigating Memory Leaks in Square POS on Android Q](<https://devfeed.tech/articles/story-of-an-android-q-leak-attachment-crazy-town-15896.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/story-of-an-android-q-leak-attachment-crazy-town>)

Author: P-Y Ricau

Published: 2019-07-03T19:00:00Z

Content type: article

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Large Screen](<https://devfeed.tech/topics/large-screen.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [leak](<https://devfeed.tech/tags/leak.md>), [leakcanary](<https://devfeed.tech/tags/leakcanary.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

The article investigates unusually high memory leaks observed while testing Square POS on Android Q, focusing on leak traces involving an attached view and a destroyed activity. It also explains how LeakCanary 2 uses lifecycle heuristics when interpreting such traces.

### Source excerpt

Debugging leaks for Square POS in Android Q

## Button Lists

DevFeed: [Button Lists](<https://devfeed.tech/articles/button-lists-19233.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/button-lists/>)

Author: Shai Almog

Published: 2018-12-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [demo](<https://devfeed.tech/tags/demo.md>), [developers](<https://devfeed.tech/tags/developers.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [ios](<https://devfeed.tech/tags/ios.md>), [issue](<https://devfeed.tech/tags/issue.md>), [layout](<https://devfeed.tech/tags/layout.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [list](<https://devfeed.tech/tags/list.md>), [state](<https://devfeed.tech/tags/state.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This tutorial introduces ButtonList and its CheckBoxList, RadioButtonList, and SwitchList subclasses. It explains how they apply list-model concepts with a layout/container hierarchy, including sharing one model between lists and synchronizing checkbox and switch changes.

### Source excerpt

I wrote in the past about the problems in the List class, so I won't rehash them here. However, the ideas behind list are still valuable. One such idea is the list model which allows us to separate the state from the view. Unfortunately the renderer architecture makes this hard to implement for most developers and limits the flexibility of the API. To leverage this idea with the easier to use layout/container hierarchy we introduced ButtonList and its subclasses: CheckBoxList, RadioButtonList & SwitchList.

## Better Redirects in Angular Route Guards

DevFeed: [Better Redirects in Angular Route Guards](<https://devfeed.tech/articles/better-redirects-in-angular-route-guards-21335.md>)

Original publisher: [Read original article](<https://juri.dev/blog/2018/11/better-route-guard-redirects/>)

Published: 2018-11-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [async](<https://devfeed.tech/tags/async.md>), [blocking](<https://devfeed.tech/tags/blocking.md>), [bugfixes](<https://devfeed.tech/tags/bugfixes.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [features](<https://devfeed.tech/tags/features.md>), [guards](<https://devfeed.tech/tags/guards.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [object](<https://devfeed.tech/tags/object.md>), [route](<https://devfeed.tech/tags/route.md>), [router](<https://devfeed.tech/tags/router.md>), [state](<https://devfeed.tech/tags/state.md>), [view](<https://devfeed.tech/tags/view.md>)

### AI overview

This tutorial explains Angular 7.1 route guard improvements, focusing on returning an UrlTree to redirect users when a route cannot be activated. It also distinguishes client-side route guards as a UX feature from server-side security checks.

### Source excerpt

Lorem ipsum dolor sit amet

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