# change

Published articles for change.

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

## Sunsetting netlab Vagrant/libvirt provider

DevFeed: [Sunsetting netlab Vagrant/libvirt provider](<https://devfeed.tech/articles/sunsetting-netlab-vagrant-libvirt-provider-34925.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/09/sunsetting-vagrant-libvirt/>)

Published: 2026-09-17T05:51:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Vagrant](<https://devfeed.tech/topics/vagrant.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [Containerlab topology](<https://devfeed.tech/topics/clab-topo.md>), [Oracle-VM-VirtualBox](<https://devfeed.tech/topics/vm-box.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [containers](<https://devfeed.tech/tags/containers.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [vagrant](<https://devfeed.tech/tags/vagrant.md>), [virtualbox](<https://devfeed.tech/tags/virtualbox.md>)

### AI overview

The netlab project is sunsetting its Vagrant/libvirt provider after the vagrant-libvirt plugin became effectively unmaintained and HashiCorp announced the closure of Vagrant Cloud by the end of 2026. Existing support and tests will remain for now, but no new libvirt features or device integration tests are planned; containerlab will become the primary orchestration path.

### Source excerpt

When I started the netlab project, Vagrant was the go-to tool if you wanted to build a virtual environment described in a text configuration file (an idea popularized as infrastructure-as-code). It wasn't ideal for what we were doing, but a tool rarely does a great job when used far away from its intended use case. netlab initially supported Vagrant with VirtualBox, quickly adding support for KVM/libvirt through the vagrant-libvirt plugin. Life was good... until it wasn't. Read more ...

## Our Transition to React Native

DevFeed: [Our Transition to React Native](<https://devfeed.tech/articles/our-transition-to-react-native-27402.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/react-native-at-khan.htm>)

Author: Khan Academy

Published: 2020-07-09T22:00:00Z

Content type: opinion

Language: en

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

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bridge](<https://devfeed.tech/tags/bridge.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

Khan Academy describes completing its transition to React Native for its iOS and Android apps. The article explains why the team moved away from separate platform codebases and outlines the transition's exploration, straddling, and extinction phases.

### Source excerpt

In 2017, Khan Academy started using React Native in our iOS and Android apps. As of this year, we've reached a big milestone: our transition to React Native is complete! Every screen in the app is rendered in React Native.

## Khan Academy Uses Local Storage and Request Queues to Handle Offline Actions

DevFeed: [Khan Academy Uses Local Storage and Request Queues to Handle Offline Actions](<https://devfeed.tech/articles/no-cheating-allowed-27397.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/no-cheating-allowed.htm>)

Author: Khan Academy

Published: 2015-08-17T22:00:00Z

Content type: article

Language: en

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

Topics: [LocalStorage](<https://devfeed.tech/topics/localstorage.md>), [client](<https://devfeed.tech/topics/client.md>), [Code](<https://devfeed.tech/topics/code.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [function](<https://devfeed.tech/tags/function.md>), [hints](<https://devfeed.tech/tags/hints.md>), [linear](<https://devfeed.tech/tags/linear.md>), [local](<https://devfeed.tech/tags/local.md>), [news](<https://devfeed.tech/tags/news.md>), [offline](<https://devfeed.tech/tags/offline.md>), [queue](<https://devfeed.tech/tags/queue.md>), [request](<https://devfeed.tech/tags/request.md>), [server](<https://devfeed.tech/tags/server.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

This article explains how Khan Academy addressed offline hint cheating by changing the client's request architecture. Actions are stored in local storage and placed in a queue for retry when connectivity returns, with linear backoff to avoid repeated requests during outages.

### Source excerpt

By Phillip Lemons The problem Recently, a number of students on Khan Academy found a way to cheat ... Read more

## \[$\] Stabilizing Rust's never type

DevFeed: [\[$\] Stabilizing Rust's never type](<https://devfeed.tech/articles/stabilizing-rust-s-never-type-8491.md>)

Original publisher: [Read original article](<https://lwn.net/Articles/1091015/>)

Author: daroc

Published: 2026-09-08T13:34:38Z

Content type: article

Language: en

Sources: [LWN.net](<https://devfeed.tech/sources/lwn-net.md>)

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

Tags: [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [error](<https://devfeed.tech/tags/error.md>), [function](<https://devfeed.tech/tags/function.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article explains Rust's never type, denoted by "!", and reports that it was stabilized after more than two years of work. It discusses the feature's practical benefits for optimizing generic code and its role in type inference, while noting a small breaking change to previous Rust editions.

### Source excerpt

A function's return type is supposed to indicate the kind of data that it produces. Rust's "never" type, which is denoted by an exclamation mark ("!"), is the type the language uses to mark a function that never returns and other places where a value can never occur. For a long time, the never type was used internally by the compiler, but was considered an unstable feature. On August 24, after more than two years of work, Rust-compiler-contributor "waffle" finally managed to stabilize the type. It took so long, in part, because it involved a small breaking change to previous Rust editions, which the compiler maintainers needed to ensure did not impact much real code.

## Refactoring Should NOT Touch Your Acceptance Tests

DevFeed: [Refactoring Should NOT Touch Your Acceptance Tests](<https://devfeed.tech/articles/refactoring-should-not-touch-your-acceptance-tests-26189.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/refactoring-should-not-touch-your-acceptance-tests>)

Author: Valentina Jemuović

Published: 2026-09-03T06:00:37Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article argues that a refactoring pull request should not change acceptance tests or their DSL, because doing so changes behavior rather than merely restructuring code.

### Source excerpt

A "refactor" PR that changes the acceptance test or the DSL isn't a refactor -- it's a behavioral change

## When to Reject Change in Software Development: Shannon's Demon and Volatility

DevFeed: [When to Reject Change in Software Development: Shannon's Demon and Volatility](<https://devfeed.tech/articles/reject-change-sometimes-39979.md>)

Original publisher: [Read original article](<https://newsletter.kentbeck.com/p/reject-change-sometimes>)

Author: Kent Beck

Published: 2026-09-02T13:29:36Z

Content type: opinion

Language: en

Sources: [Software Design: Tidy First?](<https://devfeed.tech/sources/software-design-tidy-first.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [product-development](<https://devfeed.tech/tags/product-development.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

The article uses Shannon's Demon--a strategy that repeatedly rebalances between a stable asset and a volatile one--to explain how software development can create value by managing volatility. It discusses the exception to always embracing change and applies the metaphor to software product development.

### Source excerpt

Volatility, Shannon's Demon, & Free Money

## How INTEGER and INT Produced Different Schemas in Debezium

DevFeed: [How INTEGER and INT Produced Different Schemas in Debezium](<https://devfeed.tech/articles/how-integer-and-int-produced-different-schemas-in-debezium-20086.md>)

Original publisher: [Read original article](<https://lambda.blinkit.com/how-integer-and-int-produced-different-schemas-in-debezium-9c98e8a80aa2?source=rss----42df4a1e8725---4>)

Author: Prathit Malik

Published: 2026-09-02T07:02:02Z

Content type: article

Language: en

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

Topics: [MySQL](<https://devfeed.tech/topics/mysql.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [big-data](<https://devfeed.tech/tags/big-data.md>), [blinkit](<https://devfeed.tech/tags/blinkit.md>), [change](<https://devfeed.tech/tags/change.md>), [database](<https://devfeed.tech/tags/database.md>), [debezium](<https://devfeed.tech/tags/debezium.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This article investigates a Debezium CDC pipeline failure caused by MySQL INT and INTEGER synonyms being treated as different types. The resulting schema mismatch produced an Integer where a downstream consumer expected a Long, causing a ClassCastException on every batch. It explains how streaming and snapshot schema handling differ and how routine migrations exposed the problem.

### Source excerpt

A Debezium investigation: how MySQL synonyms INT and INTEGER were treated as different types. One of our CDC pipelines started failing with a ClassCastException on every batch. java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long The pipeline was producing an Integer, but the downstream consumer expected a Long. Every run failed in the same way, which pointed us toward a schema mismatch rather than an issue with individual records. Background: how CDC works To see why a mismatch like that can hide for years, it helps to know how CDC actually works. Most companies replicate their transactional database (MySQL, Postgres, something similar) into a separate data lake for analytics, rather than querying the source directly, and Change Data Capture (CDC) is what keeps that copy in sync: it tails the database's transaction log and replays every insert, update, and delete downstream. Debezium is the most widely used open-source CDC tool for MySQL, and it builds a table's schema in one of two ways that are supposed to agree but do not always. Streaming mode: the first time it sees a CREATE TABLE or ALTER TABLE in the binlog, it parses the raw SQL text and writes the result to its own internal Kafka topic, database.history.kafka.topic. Every restart after that rebuilds the in-memory schema by replaying that topic, not by re-reading the binlog. Snapshot mode: reads the table definition fresh through MySQL's JDBC metadata interface, which normalizes types, every time it runs. Schema Registry sits downstream of both: each connector writes whatever schema it built into the registry, but neither connector reads its own schema back from it. Keep that in mind; it matters later. The trigger: a routine migration With that in mind, here's what actually happened to us. Rewind two years: one of our upstream service teams added a few columns to a source table as part of a standard schema change. ALTER TABLE <source_table> ADD COLUMN length double NU

## Incident Report: July 22, 2026

DevFeed: [Incident Report: July 22, 2026](<https://devfeed.tech/articles/incident-report-july-22-2026-29107.md>)

Original publisher: [Read original article](<https://product.hubspot.com/blog/incident-report-july-22-2026>)

Author: Karina Devadoss

Published: 2026-08-14T17:06:07Z

Content type: news

Language: en

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

Topics: [incident](<https://devfeed.tech/topics/incident.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [bug](<https://devfeed.tech/topics/bug.md>), [health checks](<https://devfeed.tech/topics/health-checks.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [bug](<https://devfeed.tech/tags/bug.md>), [change](<https://devfeed.tech/tags/change.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [customers](<https://devfeed.tech/tags/customers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [errors](<https://devfeed.tech/tags/errors.md>), [europe](<https://devfeed.tech/tags/europe.md>), [health-checks](<https://devfeed.tech/tags/health-checks.md>), [hubspot](<https://devfeed.tech/tags/hubspot.md>), [incident](<https://devfeed.tech/tags/incident.md>), [memory](<https://devfeed.tech/tags/memory.md>), [network](<https://devfeed.tech/tags/network.md>), [performance](<https://devfeed.tech/tags/performance.md>), [report](<https://devfeed.tech/tags/report.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

HubSpot reports that a configuration change triggered a latent defect in a core CRM service, causing European customers to experience CRM access disruptions for approximately 55 minutes on July 22, 2026. No data was lost, and non-European regions operated without interruption.

### Source excerpt

Customers in Europe faced CRM access issues on July 22 due to a configuration change. Learn about the incident, its impact, and our commitment to improved reliability.

## One year with Codeberg

DevFeed: [One year with Codeberg](<https://devfeed.tech/articles/one-year-with-codeberg-34150.md>)

Original publisher: [Read original article](<https://guix.gnu.org/blog/2026/one-year-with-codeberg//>)

Author: Ludovic Courtès

Published: 2026-06-22T14:00:00Z

Content type: article

Language: en

Sources: [GNU Guix -- Blog](<https://devfeed.tech/sources/gnu-guix-blog.md>)

Topics: [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [issue tracking](<https://devfeed.tech/topics/issue-tracking.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>), [Git](<https://devfeed.tech/topics/git.md>), [forgejo](<https://devfeed.tech/topics/forgejo.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [change](<https://devfeed.tech/tags/change.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [community](<https://devfeed.tech/tags/community.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [forgejo](<https://devfeed.tech/tags/forgejo.md>), [issue-tracking](<https://devfeed.tech/tags/issue-tracking.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

Guix describes its migration to Codeberg for source code hosting, issue tracking, and pull requests after more than a decade using Savannah, email-based bug reports, patches, and Debbugs. The article discusses the reasons for the change, the project's collective decision-making process, and early takeaways after one year.

### Source excerpt

A year ago, Guix migrated to Codeberg for source code hosting, issue tracking, and pull requests. This is a significant change for a project with more than 400 people contributing code each year, after more than decade hosting code at Savannah and dealing with bug reports and patches by email, tracked by a Debbugs instance . This article discusses the process that led to this change and lists some takeaways, a year later. The non-obvious choice For years before, the question of our choice of source code hosting and collaboration tools would regularly come up. However, with...

## Inside Jetpack ViewModel: Internal Mechanisms and Multiplatform Design

DevFeed: [Inside Jetpack ViewModel: Internal Mechanisms and Multiplatform Design](<https://devfeed.tech/articles/inside-jetpack-viewmodel-internal-mechanisms-and-multiplatform-design-25922.md>)

Original publisher: [Read original article](<https://proandroiddev.com/inside-jetpack-viewmodel-internal-mechanisms-and-multiplatform-design-2625671eaef8?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2025-12-07T02:29:08Z

Content type: tutorial

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [caching](<https://devfeed.tech/tags/caching.md>), [change](<https://devfeed.tech/tags/change.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [interface](<https://devfeed.tech/tags/interface.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [key-value-store](<https://devfeed.tech/tags/key-value-store.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A technical tutorial explaining Jetpack ViewModel's internal mechanisms, including retention across configuration changes, ViewModelStore key-value caching, ViewModelProvider creation, factory-based instantiation, resource cleanup, and coroutine integration.

### Source excerpt

Unsplash@davidvig Jetpack's ViewModel has become an essential component of modern Android development, providing a lifecycle-aware container for UI-related data that survives configuration changes. While the API appears simple on the surface, the internal machinery reveals design decisions around lifecycle management, multiplatform abstraction, resource cleanup, and thread-safe caching. Understanding how ViewModel works under the hood helps you make better architectural decisions and avoid subtle bugs. In this article, you'll dive deep into how Jetpack ViewModel works internally, exploring how the ViewModelStore retains instances across configuration changes, how ViewModelProvider orchestrates creation and caching, how the factory pattern enables flexible instantiation, how CreationExtras enables stateless factories, how resource cleanup is managed through the Closeable pattern, and how viewModelScope integrates coroutines with the ViewModel lifecycle. The fundamental problem: Surviving configuration changes Configuration changes present a fundamental challenge for Android development. When a user rotates their device, changes language settings, or triggers any configuration change, the system destroys and recreates the Activity. Any data stored in the Activity is lost: https://medium.com/media/82ee86f042e31a1ede3f551f919b4429/href The naive approach is to use onSaveInstanceState(): https://medium.com/media/74f2c1da669e831b1488b3f297d55997/href This works for small, serializable data. But what about large datasets, network connections, or objects that can't be serialized? What about ongoing operations like network requests? The Bundle approach fails for these cases, both because of size limitations and because serialization/deserialization is expensive. ViewModel solves this by providing a lifecycle-aware container that survives configuration changes through a retained object pattern, not serialization. The ViewModelStore: The retention mechanism At the heart of Vie

## Improving the prompt to the AI to get better code

DevFeed: [Improving the prompt to the AI to get better code](<https://devfeed.tech/articles/improving-the-prompt-to-the-ai-to-get-better-code-30758.md>)

Original publisher: [Read original article](<http://blog.vanillajava.blog/2025/07/improving-prompt-to-ai-to-get-better.html>)

Author: Peter Lawrey (noreply@blogger.com)

Published: 2025-07-17T15:56:00Z

Content type: opinion

Language: en

Sources: [Vanilla Java](<https://devfeed.tech/sources/vanilla-java.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Code](<https://devfeed.tech/topics/code.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [exercise](<https://devfeed.tech/tags/exercise.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [latency](<https://devfeed.tech/tags/latency.md>), [library](<https://devfeed.tech/tags/library.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [performance](<https://devfeed.tech/tags/performance.md>), [prompt](<https://devfeed.tech/tags/prompt.md>)

### AI overview

The article compares how several AI systems improve a Java code-optimization task when given a more detailed prompt. It concludes that prompt refinement improved weaker results, but the systems generally missed the same byte-array optimization and did not consistently reduce duplication, while longer processing did not produce a significantly better answer in this case.

### Source excerpt

In a previous article I looked at one-shoting a solution to optimise code to show the variation in different AI. Thsi is the not the best way to get what you want however. More often you need to either refine the prompt or give feedback. After one-shoting the same prompt on multiple AI, I have created a refined prompt based on the various concerns with previous results. The prompt Based on the results in a previous run Asking multiple AI to optimise the same code Suggest how to implement this more optimally using low latency techniques to minimize any objects created. ## Use - a ThreadLocal for temporary data. - simple maths rather than a library, add comments for clarity if needed. - offset in the form ±hh, ±hhmm, or ±hhmmss, using the shortest form that does not lose information, where hh, mm, and ss are the hours, minutes, and seconds east (+) or west (-) of UT - return a `intern()` String. ## Don't use - String.format - String operations that create objects. - any colons, they aren't required - reduce code duplication ## The code private static String formatOffset(int millis) { String sign = millis < 0 ? "-" : "+"; int saveSecs = Math.abs(millis) / 1000; int hours = saveSecs / 3600; int mins = ((saveSecs / 60) % 60); int secs = (saveSecs % 60); if (secs == 0) { if (mins == 0) { return sign + twoDigitString(hours); } return sign + twoDigitString(hours) + twoDigitString(mins); } return sign + twoDigitString(hours) + twoDigitString(mins) + twoDigitString(secs); } private static String twoDigitString(int value) { return Integer.toString(value + 100).substring(1); } I typically use asciidoc rather than markdown, but trying to keep this example simple. None of the AI considered using a byte[] event though String now uses a byte[] as an underlying store. I asked each one to change the implementation to use a byte[] to create an ISO_8859_1 encoded string which they were able to do, but none suggested it. Gemini 2.5 pro This result is signifciantly improved. Use use of S

## Teleport's Evolution: Today's Name Changes Reflect a Strategic Shift in Infrastructure Security

DevFeed: [Teleport's Evolution: Today's Name Changes Reflect a Strategic Shift in Infrastructure Security](<https://devfeed.tech/articles/teleport-s-evolution-today-s-name-changes-reflect-a-strategic-shift-in-infrastructure-security-29919.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/teleport-evolution-shift-in-infrastructure-security/>)

Author: diana.jovin@goteleport.com (Diana Jovin)

Published: 2025-02-25T00:00:00Z

Content type: release

Language: en

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

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Zero Trust](<https://devfeed.tech/topics/zero-trust.md>), [zero trust networking](<https://devfeed.tech/topics/zero-trust-networking.md>), [zero trust security](<https://devfeed.tech/topics/zero-trust-security.md>), [trust](<https://devfeed.tech/topics/trust.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [evolution](<https://devfeed.tech/tags/evolution.md>), [platform](<https://devfeed.tech/tags/platform.md>), [product](<https://devfeed.tech/tags/product.md>), [rebranding](<https://devfeed.tech/tags/rebranding.md>), [security](<https://devfeed.tech/tags/security.md>), [zero-trust](<https://devfeed.tech/tags/zero-trust.md>), [zero-trust-networking](<https://devfeed.tech/tags/zero-trust-networking.md>), [zero-trust-security](<https://devfeed.tech/tags/zero-trust-security.md>)

### AI overview

Teleport announces new names for its product suite, including Teleport Infrastructure Identity Platform, Teleport Zero Trust Access, Teleport Identity Governance, and Teleport Identity Security. The article says the changes emphasize infrastructure identity, zero trust, governance, and security operations.

### Source excerpt

Teleport is evolving to better align with our mission and help customers understand the full potential of our platform with new names for our product suite.

## Life Long Learning: Dealing With New Things

DevFeed: [Life Long Learning: Dealing With New Things](<https://devfeed.tech/articles/life-long-learning-dealing-with-new-things-36470.md>)

Original publisher: [Read original article](<https://berthub.eu/articles/posts/life-long-learning-dealing-with-new-things/>)

Published: 2024-10-28T17:20:00Z

Content type: opinion

Language: en

Sources: [Bert Hubert's writings](<https://devfeed.tech/sources/bert-hubert-s-writings.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [personal-development](<https://devfeed.tech/tags/personal-development.md>), [talks](<https://devfeed.tech/tags/talks.md>), [technologies](<https://devfeed.tech/tags/technologies.md>), [technology](<https://devfeed.tech/tags/technology.md>), [useful](<https://devfeed.tech/tags/useful.md>)

### AI overview

The author discusses a presentation at the NLNOG conference about lifelong learning and dealing with new technologies and change. The article considers how to distinguish hype and nonsense from genuinely useful technologies while avoiding both constant pursuit of novelty and excessive attachment to familiar tools.

### Source excerpt

On the 22nd of October, I presented at the annual conference of my beloved NLNOG, the community of Dutch network operators. NLNOG is a national treasure, an international treasure even, since we do everything in English. NLNOG holds several events every year, where we entertain and educate each other with talks on new and old technologies. We also have food and drink afterwards, sometimes even several drinks. It is a true community, with many of us anxiously looking forward to our next meetup.

## Organizational Tension Processing - Driving Change in Self-Organizing Companies

DevFeed: [Organizational Tension Processing - Driving Change in Self-Organizing Companies](<https://devfeed.tech/articles/organizational-tension-processing-driving-change-in-self-organizing-companies-39933.md>)

Original publisher: [Read original article](<https://mende.io/blog/organizational-tension-processing-driving-change-in-self-organizing-companies/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2024-10-05T05:00:00Z

Content type: opinion

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [structure](<https://devfeed.tech/topics/structure.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [business-culture-employee-happiness-high-purpose-environments-leadership-developer-productivity](<https://devfeed.tech/tags/business-culture-employee-happiness-high-purpose-environments-leadership-developer-productivity.md>), [change](<https://devfeed.tech/tags/change.md>), [hierarchy](<https://devfeed.tech/tags/hierarchy.md>), [organizational](<https://devfeed.tech/tags/organizational.md>), [organizations](<https://devfeed.tech/tags/organizations.md>), [processes](<https://devfeed.tech/tags/processes.md>), [product-development](<https://devfeed.tech/tags/product-development.md>), [self-organizing](<https://devfeed.tech/tags/self-organizing.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

The article explains that self-organizing companies are not structureless or chaotic despite having no traditional people hierarchy. It discusses using a tension-based proposal process to adjust structures, processes, and goals while enabling employees to surface and implement ideas and support faster organizational change.

### Source excerpt

Organizational Tension Processing - Driving Change in Self-Organizing Companies Newcomers to self-organization often mistake the lack of a people-hierarchy for complete chaos. The term "flat" can be misleading, as it suggests that self-organizing companies lack any structure. In reality, this is far from the case.

## How the engineering market changed since 2006

DevFeed: [How the engineering market changed since 2006](<https://devfeed.tech/articles/how-the-engineering-market-changed-since-2006-39838.md>)

Original publisher: [Read original article](<https://www.thinkingintech.com/p/how-the-engineering-market-changed>)

Author: Dariusz Sadowski

Published: 2024-08-27T10:49:26Z

Content type: article

Language: en

Sources: [Thinking in Tech](<https://devfeed.tech/sources/thinking-in-tech.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Development](<https://devfeed.tech/topics/development.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Java](<https://devfeed.tech/topics/java.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [career](<https://devfeed.tech/tags/career.md>), [change](<https://devfeed.tech/tags/change.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [java](<https://devfeed.tech/tags/java.md>), [php](<https://devfeed.tech/tags/php.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

An account of how the software engineering market changed from the early 2000s through the pandemic, combining personal career experiences with observations about shifts in technology, employment, and the future of the field.

### Source excerpt

and how to prepare for the future

## Teleport Community Edition license change, Kubecon EU and Teleport Product Updates

DevFeed: [Teleport Community Edition license change, Kubecon EU and Teleport Product Updates](<https://devfeed.tech/articles/teleport-community-edition-license-change-kubecon-eu-and-teleport-product-updates-29760.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/march-newsletter-2024/>)

Author: ben@goteleport.com (Ben Arent)

Published: 2024-03-15T00:00:00Z

Content type: news

Language: en

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

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Kubernetes clusters](<https://devfeed.tech/topics/kubernetes-clusters.md>), [MFA](<https://devfeed.tech/topics/mfa.md>), [Amazon Elastic Kubernetes Service](<https://devfeed.tech/topics/amazon-elastic-kubernetes-service.md>), [Azure](<https://devfeed.tech/topics/azure.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [aws](<https://devfeed.tech/tags/aws.md>), [azure](<https://devfeed.tech/tags/azure.md>), [change](<https://devfeed.tech/tags/change.md>), [gke](<https://devfeed.tech/tags/gke.md>), [google-cloud](<https://devfeed.tech/tags/google-cloud.md>), [kubecon](<https://devfeed.tech/tags/kubecon.md>), [kubecon-eu](<https://devfeed.tech/tags/kubecon-eu.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [kubernetes-clusters](<https://devfeed.tech/tags/kubernetes-clusters.md>), [mfa](<https://devfeed.tech/tags/mfa.md>), [product-updates](<https://devfeed.tech/tags/product-updates.md>)

### AI overview

The March newsletter announces that Teleport Community Edition will move to a new commercial license with Teleport 16, including restrictions based on company size, revenue, and resale or embedding. It also covers KubeCon EU plans and recent Kubernetes-related product updates.

### Source excerpt

March Newsletter

## How to Change Habitual Behavior Using the Transtheoretical Model

DevFeed: [How to Change Habitual Behavior Using the Transtheoretical Model](<https://devfeed.tech/articles/howto-change-your-behavior-35237.md>)

Original publisher: [Read original article](<http://matt.might.net/articles/how-to-change-your-behavior/>)

Published: 2024-01-14T18:14:05Z

Content type: tutorial

Language: en

Sources: [Matt Might](<https://devfeed.tech/sources/matt-might.md>)

Topics: [Processes](<https://devfeed.tech/topics/processes.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>)

Tags: [behavior](<https://devfeed.tech/tags/behavior.md>), [change](<https://devfeed.tech/tags/change.md>), [howto](<https://devfeed.tech/tags/howto.md>)

### AI overview

This tutorial explains the transtheoretical model of behavior change, which describes six stages: precontemplation, contemplation, preparation, action, maintenance, and relapse. It recommends tailoring interventions to the stage of change when introducing desired behaviors or eliminating undesired ones.

### Source excerpt

In theory, behavior change should be easy. At first glance, it seems like you control your behavior. So, if you desire different behavior, why doesn't your behavior change as instantly as your desire to change it? In short, lasting change of habitual behaviors is a multi-stage process. In 1977, as psychologists James Prochaska and Carlo DiClemente were studying the behavior of smokers, they identified these stages. Their transtheoretical model of behavior change captures the process of behavior change in six different stages: (1) precontemplation; (2) contemplation; (3) preparation; (4) action; (5) maintenance; and (6) relapse. DALL-E's depiction of behavior change in the transtheoretical model. In the years since, this landmark model has been found to be applicable to many habitual human behaviors. The key takeaway is that the odds of successful long-term behavior change improve if you calibrate your strategy to the stage of change you're in. The goal of this article is to provide an actionable summary of this model and interventions for each stage, so that you can more effectively change your behavior in the long-term. Understanding the model may also help you to understand why you may have struggled with behavior change in the past. Disclaimer: This article is based on my survey of the scientific literature and my own lived experience. I am not a mental health professional, and if you are struggling with behavior change or any other mental health condition, please immediately consult a qualified professional. Click here to read the rest of the article

## Teleport OSS will relicense to AGPLv3

DevFeed: [Teleport OSS will relicense to AGPLv3](<https://devfeed.tech/articles/teleport-oss-will-relicense-to-agplv3-29924.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/teleport-oss-switches-to-agpl-v3/>)

Author: sasha@goteleport.com (Alexander Klizhentas)

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

Content type: release

Language: en

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

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>), [Code](<https://devfeed.tech/topics/code.md>), [client library](<https://devfeed.tech/topics/client-library.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [change](<https://devfeed.tech/tags/change.md>), [client-library](<https://devfeed.tech/tags/client-library.md>), [container](<https://devfeed.tech/tags/container.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [oss](<https://devfeed.tech/tags/oss.md>), [software](<https://devfeed.tech/tags/software.md>), [software-license](<https://devfeed.tech/tags/software-license.md>)

### AI overview

Teleport announced that its core repository source code would switch from the Apache 2.0 license to AGPLv3 on December 1, 2023. Documentation, company-compiled OSS binaries, and client libraries would remain under Apache 2.0, while enterprise binaries would continue under a commercial license.

### Source excerpt

A detailed explanation, schedule, and FAQ on why we have switched Teleport OSS to AGPLv3 software license.

## My journey from Disqus to Remark42

DevFeed: [My journey from Disqus to Remark42](<https://devfeed.tech/articles/my-journey-from-disqus-to-remark42-27116.md>)

Original publisher: [Read original article](<https://andrea.corbellini.name/2023/09/05/disqus-to-remark42/>)

Author: andreacorbellini

Published: 2023-09-05T08:30:00Z

Content type: opinion

Language: en

Sources: [Andrea Corbellini](<https://devfeed.tech/sources/andrea-corbellini.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [data](<https://devfeed.tech/topics/data.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>)

Tags: [ads](<https://devfeed.tech/tags/ads.md>), [articles](<https://devfeed.tech/tags/articles.md>), [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [change](<https://devfeed.tech/tags/change.md>), [data](<https://devfeed.tech/tags/data.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [third-party](<https://devfeed.tech/tags/third-party.md>), [website](<https://devfeed.tech/tags/website.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

The author explains replacing Disqus with Remark42 on a static blog after discovering that Disqus displayed unwanted ads and raised concerns about tracking, data collection, and possible third-party data sharing.

### Source excerpt

Readers of this blog might have noticed a few changes recently. For example, I've been working on improving the look of the blog (maybe with questionable results), as well as improving the experience on mobile. But one of the biggest changes that perhaps some have noticed is that all of the comments on all of my articles have suddenly disappeared since February 2023 ...

## The Swedbank Outage shows that Change Controls don't work

DevFeed: [The Swedbank Outage shows that Change Controls don't work](<https://devfeed.tech/articles/the-swedbank-outage-shows-that-change-controls-don-t-work-27908.md>)

Original publisher: [Read original article](<http://highscalability.com/blog/2023/8/16/the-swedbank-outage-shows-that-change-controls-dont-work.html>)

Author: Bruce Johnston

Published: 2023-08-16T17:05:12Z

Content type: opinion

Language: en

Sources: [High Scalability](<https://devfeed.tech/sources/high-scalability.md>), [High Scalability](<https://devfeed.tech/sources/high-scalability-2.md>)

Topics: [incident](<https://devfeed.tech/topics/incident.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [banking](<https://devfeed.tech/tags/banking.md>), [change](<https://devfeed.tech/tags/change.md>), [incident](<https://devfeed.tech/tags/incident.md>), [management](<https://devfeed.tech/tags/management.md>), [outage](<https://devfeed.tech/tags/outage.md>), [payments](<https://devfeed.tech/tags/payments.md>), [risk-management](<https://devfeed.tech/tags/risk-management.md>)

### AI overview

The article examines the Swedbank outage caused by an unapproved IT change and the Swedish FSA's findings that the bank's internal controls and change management process failed. It argues that manual approvals and change meetings do not by themselves mitigate risk in modern technology organizations.

### Source excerpt

This week I've been reading through the recent judgment from the Swedish FSA on the Swedbank outage. If you're unfamiliar with this story, Swedbank had a major outage in April 2022 that was caused by an unapproved change to their IT systems. It temporarily left nearly a million customers with incorrect balances, many of whom were unable to meet payments. After investigation, the regulator found that Swedbank had not followed their change management process and issued a SEK850M (~85M USD) fine. That's a lot of money to you and me, but probably didn't impact their bottom line very much. Either way I'm sure the whole episode will have been a big wake up call for the people at the bank whose job it is to ensure adequate risk and change controls. So, what went wrong and how could it have been avoided? How did the Swedbank incident happen? The judgment doesn't describe the technical details behind the incident, but it does provide glimpses into how they assessed what went wrong: "The deficiencies that were present in Swedbank's internal control made it possible to make changes to one of the bank's most central IT systems without following the process in place at the bank to ensure continuity and reliable operations. This violation is therefore neither minor nor excusable." "none of the bank's control mechanisms were able to capture the deviation and ensure that the process was followed" "one of the main causes underlying the IT incident was non-compliance with the change management process and that it is probable that this also resulted in a slower analysis of the incident and a greater impact on the operations." "good internal control is a prerequisite for a bank to be able to fulfill the requirements on risk management" Even if you think $85M isn't much of a fine - simply the cost of doing business - the full range of options open to the regulator included removing Swedbank's banking license: "It is therefore not relevant to withdraw Swedbank's authorisation or issue th

## First Month as an Accessibility Specialist at Oura

DevFeed: [First Month as an Accessibility Specialist at Oura](<https://devfeed.tech/articles/first-month-as-an-accessibility-specialist-at-oura-38439.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2021-11-22/first-month-as-an-accessibility-specialist-at-oura/>)

Author: Eevis Panula

Published: 2023-01-03T08:57:45.598000Z

Content type: opinion

Language: en

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

Topics: [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [change](<https://devfeed.tech/tags/change.md>), [company](<https://devfeed.tech/tags/company.md>), [feelings](<https://devfeed.tech/tags/feelings.md>), [front-end](<https://devfeed.tech/tags/front-end.md>)

### AI overview

A personal reflection on the author's first month as an accessibility specialist at Oura Health. The author describes being the company's first person in that role, the organization's willingness to improve accessibility, and the relief of being able to focus on accessibility work without having to repeatedly justify or sell it.

### Source excerpt

So, I joined Oura Health in October, and it's been a little bit over a month now. My role is an accessibility specialist, and I'm the first person to be hired in the company in such a role. During the past month, we've had busy times. We launched the new Gen3 ring, and it has brought a bustle. On the other hand, it's been super cool to join the company during such a time. From an accessibility perspective, I know that we aren't there yet. We have a long road to go to change things, but one thing I'm excited about is that there is a will to do that. In this blog post, I'll share some initial thoughts and feelings from the past month. I'm super thrilled about what is coming, and I'm feeling happy that I made this change. I Don't Have to Sell Myself or Accessibility One of the best things has been realizing that I don't need to sell myself to do accessibility-related work anymore. It has been given due to my role. It might sound obvious, but it is not for me. You see, I've been in a position before where I've expressed that I want to do more accessibility-related work. I've been very vocal about that. In the end, I've still been the front-end dev first and foremost, who doesn't have time to look into making the results of my work accessible. If accessibility didn't take too much time, it was ok to think about, but there were never actual resources for that. Those situations happened when I was working in a consultancy. I was sold as a front-end developer, and that was what the customer was paying for. They didn't have accessibility in their roadmaps, so they didn't want to spend money on that. And myself being a consultant, well, I cost money. So I've been super happy that whenever I'm talking about changing things due to accessibility reasons, just saying that is enough. I don't have to justify to people how they benefit from it. That means a lot. It has allowed me to use my skills and energy to actually do something without having to spend a long time selling the ide

## Upcoming Changes to GitHub SAML SSO with Teleport

DevFeed: [Upcoming Changes to GitHub SAML SSO with Teleport](<https://devfeed.tech/articles/upcoming-changes-to-github-saml-sso-with-teleport-29609.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/community-github-saml-sso/>)

Author: info@goteleport.com (Drew Nielsen)

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

Content type: article

Language: en

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

Topics: [saml](<https://devfeed.tech/topics/saml.md>), [Single sign-on (SSO)](<https://devfeed.tech/topics/sso.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [change](<https://devfeed.tech/tags/change.md>), [enterprise](<https://devfeed.tech/tags/enterprise.md>), [github](<https://devfeed.tech/tags/github.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

Teleport will make GitHub SAML SSO available only in its Enterprise Edition starting with Teleport 11.0. Community Edition users can continue using GitHub SSO without SAML, while users needing SAML-enabled GitHub Enterprise organizations can upgrade or remain on Teleport 10 and earlier.

### Source excerpt

An update about an upcoming Changes to GitHub SAML SSO in Teleport Community Edition.

## When Compose remember cannot forget

DevFeed: [When Compose remember cannot forget](<https://devfeed.tech/articles/when-compose-remember-cannot-forget-38653.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2022_07_23_when_compose_remember_cannot_forget/>)

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

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [compose-for-web](<https://devfeed.tech/topics/compose-for-web.md>), [ui](<https://devfeed.tech/topics/ui.md>), [color](<https://devfeed.tech/topics/color.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-for-web](<https://devfeed.tech/tags/compose-for-web.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

This tutorial explains why a Compose composable continued displaying an old value after recomposition in a Compose for Web color utility app. The issue occurred because remember preserves values across recompositions; supplying the changing color value as a key caused the remembered value to update.

### Source excerpt

Чытаць на беларускай мове Introduction When developing color-utils app using Compose for Web I faced an issue that remember didn't want to forget the state. It was quite annoying experience as it felt stupid: composable function is recomposed with the new value provided but remember still kept old value. As usual, there is no magic there and the answer is quite simple therefore this article won't be that long. Compose is all about state. In the app I had two levels of state:

## Jetpack Compose Animations Beyond the State Change - Gustavo Fão Valvassori

DevFeed: [Jetpack Compose Animations Beyond the State Change - Gustavo Fão Valvassori](<https://devfeed.tech/articles/jetpack-compose-animations-beyond-the-state-change-gustavo-fao-valvassori-38228.md>)

Original publisher: [Read original article](<https://touchlab.co/jetpack-compose-animations-state-change>)

Published: 2021-08-24T04:39:22Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [animation](<https://devfeed.tech/tags/animation.md>), [api](<https://devfeed.tech/tags/api.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [examples](<https://devfeed.tech/tags/examples.md>), [guide](<https://devfeed.tech/tags/guide.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [repository](<https://devfeed.tech/tags/repository.md>), [state](<https://devfeed.tech/tags/state.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial on implementing increasingly complex loading animations in Jetpack Compose, including state-driven animation, side effects, infinite transitions, and synchronized animations.

### Source excerpt

Jetpack Compose 1.0 came with a wonderful and robust animations API. This article will explore more complex scenarios and help you achieve your goal.

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