# properties

C# properties are members implemented with accessors that read, write, or compute data-field values.

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

## Implicit Assertions Are More Readable

DevFeed: [Implicit Assertions Are More Readable](<https://devfeed.tech/articles/implicit-assertions-are-more-readable-28890.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/implicit-assertions-are-more-readable/>)

Author: Gleb Bahmutov

Published: 2026-09-01T04:00:00Z

Content type: tutorial

Language: en

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

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [test](<https://devfeed.tech/topics/test.md>), [API](<https://devfeed.tech/topics/api.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [products](<https://devfeed.tech/tags/products.md>), [properties](<https://devfeed.tech/tags/properties.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

A tutorial on making Cypress API tests more readable by using descriptive assertions, precise value ranges, implicit assertions, and cy-spok for validating nested response objects.

### Source excerpt

Recently I saw a Linkedin post that shows "b

## Enterprise Architecture Quietly Depended on Humans in Far More Places Than We Realised

DevFeed: [Enterprise Architecture Quietly Depended on Humans in Far More Places Than We Realised](<https://devfeed.tech/articles/enterprise-architecture-quietly-depended-on-humans-in-far-more-places-than-we-realised-34130.md>)

Original publisher: [Read original article](<https://flashdba.com/2026/06/08/enterprise-architecture-quietly-depended-on-humans-in-far-more-places-than-we-realised/>)

Author: flashdba

Published: 2026-06-08T14:19:07Z

Content type: opinion

Language: en

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

Topics: [Enterprise Architecture](<https://devfeed.tech/topics/enterprise-architecture.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Actor](<https://devfeed.tech/topics/actor.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [databases](<https://devfeed.tech/tags/databases.md>), [databases-and-agentic-ai](<https://devfeed.tech/tags/databases-and-agentic-ai.md>), [enterprise-architecture](<https://devfeed.tech/tags/enterprise-architecture.md>), [inferencing](<https://devfeed.tech/tags/inferencing.md>), [performance](<https://devfeed.tech/tags/performance.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

This article argues that enterprise architecture depended on implicit properties supplied by human participants, including predictable workload, intent, accountability, feedback, and limited capacity. It concludes that agentic AI exposes pressure across multiple technical and organisational domains by removing those assumptions simultaneously.

### Source excerpt

Enterprise architecture was built around a human actor whose presence provided properties nobody designed and nobody priced. Agentic AI is the first technology to remove those properties simultaneously - and the absence is now visible across every domain.

## Beyond Positions: Kotlin's New Name-Based Destructuring

DevFeed: [Beyond Positions: Kotlin's New Name-Based Destructuring](<https://devfeed.tech/articles/beyond-positions-kotlin-s-new-name-based-destructuring-25979.md>)

Original publisher: [Read original article](<https://proandroiddev.com/beyond-positions-kotlins-new-name-based-destructuring-eee347d1bb5c?source=rss-711ab22c5c77------2>)

Author: Nav Singh

Published: 2026-03-18T01:24:50Z

Content type: tutorial

Language: en

Sources: [Stories by Nav Singh 🇨🇦 on Medium](<https://devfeed.tech/sources/stories-by-nav-singh-on-medium.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-2](<https://devfeed.tech/tags/kotlin-2.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

This tutorial explains Kotlin 2.3.20's experimental name-based destructuring declarations, which match variables to properties instead of relying on componentN() position. It also covers the compiler option and supported modes.

### Source excerpt

Image generated using Perplexity Name-based destructuring declarations were introduced in Kotlin 2.3.20 and match variables to properties rather than relying on position-based componentN(). Previously, destructive declarations used position-based destruction: data class User(var firstName: String, var lastName: String) val user = User("Alice", "Husseini") // componentN() val(firstName,lastName) = user println(firstName) println(lastName)Drawback of the componentN() based approach Destructuring relies on the order of componentN() functions, lastName receives the value of firstName, and firstName receives the value of lastName 👇 data class User(var firstName: String, var lastName: String) val user = User("Alice", "Husseini") // componentN() val(lastName,firstName) = user println(firstName) -> Husseini println(lastName) -> AliceName-based destructuring ✨ It's an Experimental feature. We can control how the compiler interprets destructuring declarations with the -Xname-based-destructuring compiler option. kotlin { // .. compilerOptions { freeCompilerArgs.add("-Xname-based-destructuring=only-syntax") } }Each variable refers to a property by name.val user = User("Alice", "Husseini") // Name-based destructuring (val firstName = firstName, val lastName = lastName) = userModeshttps://kotlinlang.org/docs/whatsnew2320.html#languageMode -- Name-Mismatch⚠ Warning ⚠Name-Mismatch warningMode -- Complete Position-based destructuring using square brackets []: data class User(var firstName: String, var lastName: String) val user = User("Alice", "Husseini") // componentN() val [firstName,lastName] = userReferences What's new in Kotlin 2.3.20 | Kotlin Stay in touch https://www.linkedin.com/in/navczydev/ JavaScript is not available. navczydev - Overview navczydev.bsky.social Beyond Positions: Kotlin's New Name-Based Destructuring was originally published in ProAndroidDev on Medium, where people are continuing the conversation by highlighting and responding to this story.

## IPTC export changed in Photos for macOS 26 Tahoe

DevFeed: [IPTC export changed in Photos for macOS 26 Tahoe](<https://devfeed.tech/articles/iptc-export-changed-in-photos-for-macos-26-tahoe-39469.md>)

Original publisher: [Read original article](<https://akrabat.com/iptc-export-changed-in-photos-for-macos-26-tahoe/>)

Author: Rob

Published: 2025-11-11T11:00:00Z

Content type: article

Language: en

Sources: [Rob Allen](<https://devfeed.tech/sources/rob-allen.md>)

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [data](<https://devfeed.tech/topics/data.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [exiftool](<https://devfeed.tech/tags/exiftool.md>), [export](<https://devfeed.tech/tags/export.md>), [mac](<https://devfeed.tech/tags/mac.md>), [macos](<https://devfeed.tech/tags/macos.md>), [photography](<https://devfeed.tech/tags/photography.md>), [rodeo-flickr-uploader](<https://devfeed.tech/tags/rodeo-flickr-uploader.md>)

### AI overview

Photos for macOS 26 Tahoe changed JPEG IPTC export behavior: Object Name, Caption-Abstract, and Keywords properties are no longer populated as they were in macOS 15 Sequoia. The export still provides the data through Title, Description, and Subject, and Rodeo version 0.5 was updated to resolve the issue.

### Source excerpt

I've recently upgraded my MacBook Air to macOS 26 Tahoe and one thing I noticed was that Rodeo's rules were no longer working. With the help of exiftool, I worked out that when exporting to JPEG from Photos for macOS 26 Tahoe, the Object Name, Caption-Abstract and Keywords IPRC properties were no longer being populated. This is a regression from macOS 15 Sequoia. This is the data from exiftool. Output from macOS 15 Sequoia: $... continue reading.

## Designing a hierarchical Authorisation system

DevFeed: [Designing a hierarchical Authorisation system](<https://devfeed.tech/articles/designing-a-hierarchical-authorisation-system-39640.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2025-09-20_designing-a-hiearchical-authorisation-system>)

Author: Authorisation

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

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Actor](<https://devfeed.tech/topics/actor.md>), [object](<https://devfeed.tech/topics/object.md>), [structure](<https://devfeed.tech/topics/structure.md>), [service](<https://devfeed.tech/topics/service.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [apis](<https://devfeed.tech/tags/apis.md>), [billing](<https://devfeed.tech/tags/billing.md>), [finance](<https://devfeed.tech/tags/finance.md>), [object](<https://devfeed.tech/tags/object.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [service](<https://devfeed.tech/tags/service.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

This article explains how to design a hierarchical authorization system for Goiter. It contrasts a flat mapping of users, objects, and actions with a hierarchical model in which groups can have multiple parents and inherit rules. The article notes that recursive parent lookup can reduce rule bloat, while assuming a maximum recursion depth of 10.

### Source excerpt

. [Designing a Hierarchical Authorisation System](designing-a-hierarchical-authorisation-system-cover...

## Gradle Footguns: Don't add potentially-empty providers to collection properties

DevFeed: [Gradle Footguns: Don't add potentially-empty providers to collection properties](<https://devfeed.tech/articles/gradle-footguns-don-t-add-potentially-empty-providers-to-collection-properties-39034.md>)

Original publisher: [Read original article](<https://www.zacsweers.dev/gradle-footgun-adding-empty-providers-to-collection-properties/>)

Author: Zac Sweers

Published: 2024-09-11T17:33:13Z

Content type: tutorial

Language: en

Sources: [Zac Sweers](<https://devfeed.tech/sources/zac-sweers.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [bug](<https://devfeed.tech/topics/bug.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

The article explains a Gradle bug involving potentially empty providers added to collection properties. An absent provider can clear the property value rather than only its elements, causing exceptions or leaving the property unusable.

### Source excerpt

After pairing with Tony Robalik on a recent weird behavior I was seeing in Gradle, we encountered a deliciously evil bug in Gradle. It's documented a little in Gradle 8.7's release notes (see Better API for updating collection properties), but the basic premise is

## Gradle Properties - Tadeas Kriz

DevFeed: [Gradle Properties - Tadeas Kriz](<https://devfeed.tech/articles/gradle-properties-tadeas-kriz-38214.md>)

Original publisher: [Read original article](<https://touchlab.co/gradle-properties>)

Published: 2024-06-17T19:34:40Z

Content type: tutorial

Language: en

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

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [properties](<https://devfeed.tech/topics/properties.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [priority](<https://devfeed.tech/tags/priority.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

This post explains where Gradle properties come from, how different property types are passed into and used by build scripts, and how their priorities affect configuration. It highlights behaviors that may differ from Gradle documentation, including system properties loaded from multiple locations and project properties created from system properties.

### Source excerpt

Understanding how Gradle properties work can save you a lot of time debugging. This post explains how to set properties and what their priorities are.

## Item 29: Minimize elements' visibility

DevFeed: [Item 29: Minimize elements' visibility](<https://devfeed.tech/articles/item-29-minimize-elements-visibility-39277.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-element-visibility>)

Published: 2024-05-06T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [interface](<https://devfeed.tech/topics/interface.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [class](<https://devfeed.tech/topics/class.md>), [properties](<https://devfeed.tech/topics/properties.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [properties](<https://devfeed.tech/tags/properties.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The article explains why APIs should minimize visible elements: smaller interfaces are easier to learn, maintain, test, and change. It also shows how restricting visibility in Kotlin helps protect class invariants by encapsulating internal state, including making property setters private.

### Source excerpt

Why we should minimize elements' visibility and how to do it.

## Computed Properties for Haskell Records

DevFeed: [Computed Properties for Haskell Records](<https://devfeed.tech/articles/computed-properties-for-haskell-records-27914.md>)

Original publisher: [Read original article](<http://alt-romes.github.io/posts/2023-11-30-computed-properties-for-haskell-records.html>)

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

Content type: article

Language: en

Sources: [Romes' Musings](<https://devfeed.tech/sources/romes-musings.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [properties](<https://devfeed.tech/topics/properties.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [C](<https://devfeed.tech/topics/c.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [extension](<https://devfeed.tech/tags/extension.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [properties](<https://devfeed.tech/tags/properties.md>), [rust](<https://devfeed.tech/tags/rust.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains Haskell record types and related syntax extensions, including OverloadedRecordDot and NamedFieldPuns. It then introduces computed properties by comparing Haskell records with properties in Swift, C#, and Java.

### Source excerpt

Contents 1 Records in Haskell 1.1 Overloaded Record Dot 1.2 Named Field Puns 2 Computed Properties 3 Conclusion 1 Records in Haskell Haskell has so-called record types, which are also commonly known as structs, for instance, in C, Swift, and Rust. To define a square, one would write: data Point = Point { x :: Int , y :: Int } data Square = Square { topLeft :: Point , bottomRight :: Point } mySquare = Square{ topLeft = Point{x = 0, y = 0} , bottomRight = Point{x = 2, y = 2} } mySquareWidth = x (bottomRight mySquare) - x (topLeft mySquare) In Haskell record types are just syntactic sugar for ordinary product types paired with functions that get and set these fields. In essence, the above is not fundamentally different from having the following standard product types and functions: data Point = Point Int Int data Square = Square Point Point x, y :: Point -> Int x (Point px _) = px y (Point _ py) = py topLeft, bottomRight :: Square -> Point topLeft (Square tl _) = tl bottomRight (Square _ br) = br -- And setters... 1.1 Overloaded Record Dot However, by turning on the OverloadedRecordDot syntax extension, you can use more syntactic sugar to project the fields of a record instead of using the field name as a standard function: {-# LANGUAGE OverloadedRecordDot #-} mySquareWidth = mySquare.bottomRight.x - mySquare.topLeft.x which is neat! I like OverloadedRecordDot. It looks clean and feels more like using proper property of the record data type. It is also less ambiguous for an LSP to suggest the record properties of a data type by typing after the ., than it is to suggest functions to apply to the record type argument. 1.2 Named Field Puns Since I'm already writing about records, I'll mention another extension I quite enjoy: NamedFieldPuns. Traditionally, when matching on a record, you can list the field names and bind variables to the value associated with that field. Continuing the above example: area :: Square -> Int area Square{topLeft = tl, bottomRight = br} = (br.x

## Kotlin Reflection: Method and property references

DevFeed: [Kotlin Reflection: Method and property references](<https://devfeed.tech/articles/kotlin-reflection-method-and-property-references-39214.md>)

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

Published: 2023-10-16T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [functions](<https://devfeed.tech/tags/functions.md>), [gson](<https://devfeed.tech/tags/gson.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [property](<https://devfeed.tech/tags/property.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial introduces Kotlin reflection, explaining how programs inspect classes, functions, properties, annotations, constructors, and other source-code elements at runtime. It also describes uses in Gson serialization, Koin dependency injection, and the hierarchy of Kotlin reflection reference types.

### Source excerpt

The general hierarchy of Kotlin reference classes, and details about method and property references.

## More Accessible Graphs with Jetpack Compose Part 3: Differentiating without Color

DevFeed: [More Accessible Graphs with Jetpack Compose Part 3: Differentiating without Color](<https://devfeed.tech/articles/more-accessible-graphs-with-jetpack-compose-part-3-differentiating-without-color-38462.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2023-08-16/more-accessible-graphs-with-jetpack-compose-part-3-differentiating-without/>)

Author: Eevis Panula

Published: 2025-06-11T04:27:29.325000Z

Content type: tutorial

Language: en

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

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [color](<https://devfeed.tech/topics/color.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [accessible](<https://devfeed.tech/tags/accessible.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [function](<https://devfeed.tech/tags/function.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

The third article in a series on accessible graphs with Jetpack Compose explains why data should not be differentiated by color alone. It demonstrates using different point shapes and line patterns to improve distinguishability for people with color-vision differences and across screens with varying color reproduction.

### Source excerpt

This blog post is the third one in my series on more accessible graphs with Jetpack Compose. You can find the previous two from the following links: More Accessible Graphs with Jetpack Compose Part 1: Adding Content Description More Accessible Graphs with Jetpack Compose Part 2: Adding Keyboard Interaction The third topic we will cover is differentiating data by other means than color. Color is a convenient way to distinguish data, but what if you can't see color? Or what if you see colors differently? For example, the example project we've been developing during the blog post series would look like this for someone who can't see color at all: And someone with red-green color blindness: Another aspect of why not use color alone is that phone screens display color differently. A noticeable difference on a high-end external screen for a designer might be almost the same shades for a lower-end phone, making usage impossible. There are better ideas than just using color to differentiate data. In the next section, let's explore some of these other ways. Options for Color When talking about graphs, there are generally two ways to improve the distinguishability of data: Shapes and patterns. For example, if a bar chart is initially differentiated by color, adding patterns for different colors could differentiate those bars. For a line chart, both these options are valid. Let's explore both and differentiate the data by adding different shapes for points and some patterns for the line. This solution is not the most beautiful because I'm mixing these two options, but it's there to demonstrate, not to be a final design. The Code In the situation we're starting with, the function we're using to draw the data points looks like this: drawPoints( points = pixelPoints.map { Offset(it.x + 20f, it.y) }, pointMode = PointMode.Points, color = color, strokeWidth = 8.dp.toPx(), cap = StrokeCap.Round, ) It takes the points and point mode from the parameters, and other than that, everythin

## Kotlin and Java interoperability: Properties and annotations

DevFeed: [Kotlin and Java interoperability: Properties and annotations](<https://devfeed.tech/articles/kotlin-and-java-interoperability-properties-and-annotations-39202.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-java-interop-2>)

Published: 2023-08-07T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Java](<https://devfeed.tech/topics/java.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [annotation](<https://devfeed.tech/tags/annotation.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [java](<https://devfeed.tech/tags/java.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [properties](<https://devfeed.tech/tags/properties.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how Kotlin properties map to Java getters, setters, fields, delegates, and constructor parameters. It shows how use-site annotation targets select specific generated JVM elements and discusses Kotlin object declarations, companion objects, and compiler-generated static methods for Java interoperability.

### Source excerpt

Kotlin property is Java getter, setter, field and possibly more. So what to do, when you need to annotate or use a specific JVM element?

## Map as a property delegate

DevFeed: [Map as a property delegate](<https://devfeed.tech/articles/map-as-a-property-delegate-39211.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-map-delegate>)

Published: 2023-05-08T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [properties](<https://devfeed.tech/topics/properties.md>), [interface](<https://devfeed.tech/topics/interface.md>), [object](<https://devfeed.tech/topics/object.md>)

Tags: [function](<https://devfeed.tech/tags/function.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [maps](<https://devfeed.tech/tags/maps.md>), [property](<https://devfeed.tech/tags/property.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [state](<https://devfeed.tech/tags/state.md>), [variables](<https://devfeed.tech/tags/variables.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A Kotlin tutorial explains how Map can act as a read-only property delegate, including use cases for objects with known and dynamically added properties. It also explains variable assignment and shared mutable-object behavior through a community puzzle.

### Source excerpt

How do we use Map as a property delegate, and why the result of a famous puzzler should not be surprising.

## Observable and Vetoable delegates

DevFeed: [Observable and Vetoable delegates](<https://devfeed.tech/articles/observable-and-vetoable-delegates-39212.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-observable-vetoable>)

Published: 2023-05-02T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [properties](<https://devfeed.tech/topics/properties.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [kotlin](<https://devfeed.tech/tags/kotlin.md>), [logs](<https://devfeed.tech/tags/logs.md>), [properties](<https://devfeed.tech/tags/properties.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Kotlin observable and vetoable delegates, explaining how property changes can trigger actions, update views, log changes, and influence application state.

### Source excerpt

What are observable and vetoable delegates, and what are their real-life use cases.

## Lazy property delegate

DevFeed: [Lazy property delegate](<https://devfeed.tech/articles/lazy-property-delegate-39210.md>)

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

Published: 2023-03-27T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [performance-optimization](<https://devfeed.tech/topics/performance-optimization.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lazy](<https://devfeed.tech/tags/lazy.md>), [performance](<https://devfeed.tech/tags/performance.md>), [property](<https://devfeed.tech/tags/property.md>), [regex](<https://devfeed.tech/tags/regex.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin's lazy property delegate, which postpones read-only value initialization until first use. It presents use cases involving expensive object construction, application startup, testing, regular-expression compilation, and computed properties.

### Source excerpt

What is lazy delegate, and what are its real-life use cases.

## Property delegation

DevFeed: [Property delegation](<https://devfeed.tech/articles/property-delegation-39213.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-property-delegation>)

Published: 2023-03-20T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [properties](<https://devfeed.tech/topics/properties.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [behavior](<https://devfeed.tech/tags/behavior.md>), [function](<https://devfeed.tech/tags/function.md>), [implement](<https://devfeed.tech/tags/implement.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [property](<https://devfeed.tech/tags/property.md>), [property-delegation](<https://devfeed.tech/tags/property-delegation.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin property delegation, a feature for extracting reusable property patterns such as lazy, observable, binding, and dependency-injection behaviors. It describes how delegated getters and setters work and how to implement custom property delegates.

### Source excerpt

What is property delegation, how does it work, and how can we implement our custom property delegate.

## The Houdini Properties and Values API is coming to CSS in Chromium 85

DevFeed: [The Houdini Properties and Values API is coming to CSS in Chromium 85](<https://devfeed.tech/articles/property-giving-superpowers-to-css-variables-28731.md>)

Original publisher: [Read original article](<https://una.im/2020-07-21-at-property/>)

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

Content type: release

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [API](<https://devfeed.tech/topics/api.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [css](<https://devfeed.tech/tags/css.md>), [properties](<https://devfeed.tech/tags/properties.md>), [property](<https://devfeed.tech/tags/property.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

The article covers the arrival of the Houdini Properties and Values API in CSS with Chromium 85.

### Source excerpt

The Houdini Properties and Values API is coming to your CSS file in Chromium 85.

## Kotlin Delegated Properties for Designing a Simple Android Library API

DevFeed: [Kotlin Delegated Properties for Designing a Simple Android Library API](<https://devfeed.tech/articles/delightful-delegate-design-27043.md>)

Original publisher: [Read original article](<https://web.archive.org/web/20200513142755/https://blog.autsoft.hu/delightful-delegate-design/>)

Author: Márton Braun

Published: 2019-04-11T19:00:00Z

Content type: tutorial

Language: en

Sources: [zsmb.co](<https://devfeed.tech/sources/zsmb-co.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Library](<https://devfeed.tech/topics/library.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Android](<https://devfeed.tech/topics/android.md>), [properties](<https://devfeed.tech/topics/properties.md>), [factory function](<https://devfeed.tech/topics/factory-function.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [delegates](<https://devfeed.tech/tags/delegates.md>), [factory-function](<https://devfeed.tech/tags/factory-function.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

This tutorial explains API design choices in the Krate Android SharedPreferences wrapper. It shows how Kotlin delegated properties can encapsulate reusable logic, persist values across application restarts, and hide concrete implementations behind a simple interface and factory function.

### Source excerpt

When developing a library, designing an easy to use API while hiding unnecessary implementation details from clients is fundamental. Let's look at some API design choices we've made for our library Krate, an Android SharedPreferences wrapper.

## Dynamic beans in spring

DevFeed: [Dynamic beans in spring](<https://devfeed.tech/articles/dynamic-beans-in-spring-27271.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201705/dynamic-beans/>)

Published: 2017-05-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [properties](<https://devfeed.tech/topics/properties.md>), [import](<https://devfeed.tech/topics/import.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [create](<https://devfeed.tech/tags/create.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [implement](<https://devfeed.tech/tags/implement.md>), [properties](<https://devfeed.tech/tags/properties.md>), [property](<https://devfeed.tech/tags/property.md>), [spring](<https://devfeed.tech/tags/spring.md>)

### AI overview

A tutorial on programmatically creating Spring beans with BeanFactoryPostProcessor and BeanDefinitionRegistry. It covers defining individual and multiple beans, using constructor or factory-method initialization, and generating bean definitions from property-based options.

### Source excerpt

Some time ago I've been trying to dynamically create spring beans. After fast stackoverflow check I decided to drop it and go with something else. Lately I've been trying to implement more complicated bean registration mechanism in which skipping dynamic bean creation wasn't an option. Here's how you can create spring beans "from code". Read more

## Converting Plaid to Kotlin: Lessons learned (Part 1)

DevFeed: [Converting Plaid to Kotlin: Lessons learned (Part 1)](<https://devfeed.tech/articles/converting-plaid-to-kotlin-lessons-learned-part-1-27214.md>)

Original publisher: [Read original article](<https://antonioleiva.com/plaid-kotlin-1>)

Published: 2015-11-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-apps](<https://devfeed.tech/topics/android-apps.md>), [Code](<https://devfeed.tech/topics/code.md>), [properties](<https://devfeed.tech/topics/properties.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [properties](<https://devfeed.tech/tags/properties.md>), [property](<https://devfeed.tech/tags/property.md>), [property-delegation](<https://devfeed.tech/tags/property-delegation.md>)

### AI overview

This tutorial compares part of the Plaid Android app after rewriting HomeActivity in Kotlin. It discusses reduced boilerplate and Kotlin approaches to view binding, resource binding, property declarations, context-dependent initialization, and property delegation.

### Source excerpt

Everything Android, Kotlin and other random topics

## Using the Constretto Configuration Factory

DevFeed: [Using the Constretto Configuration Factory](<https://devfeed.tech/articles/using-the-constretto-configuration-factory-31945.md>)

Original publisher: [Read original article](<https://tech.finn.no2011/01/19/using-the-constretto-configuration-factory/>)

Author: mick

Published: 2011-01-19T18:07:02Z

Content type: tutorial

Language: en

Sources: [Finn.no](<https://devfeed.tech/sources/finn-no.md>)

Topics: [configuration](<https://devfeed.tech/topics/configuration.md>), [Library](<https://devfeed.tech/topics/library.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>), [properties](<https://devfeed.tech/topics/properties.md>), [import](<https://devfeed.tech/topics/import.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [development](<https://devfeed.tech/tags/development.md>), [file](<https://devfeed.tech/tags/file.md>), [import](<https://devfeed.tech/tags/import.md>), [library](<https://devfeed.tech/tags/library.md>), [properties](<https://devfeed.tech/tags/properties.md>), [startup](<https://devfeed.tech/tags/startup.md>)

### AI overview

This article describes a factory created at FINN.no to reduce verbose Constretto configuration code. The factory provides concise access to individual configuration files and caches ConstrettoConfigurations, which the source says improves application startup performance.

### Source excerpt

Development at FINN.no was quick to jump on the Constretto library. It's a great addition to any application making it easy to handle different environments and profiles with just the one build. When using Constretto at FINN.no one problem we found with the API is that it creates very verbose client code when the same ini or properties file is accessed throughout various class files. For example a repetition of the following happens public static final String CONSTANT_A = new ConstrettoBuilder() .createIniFileConfigurationStore() .addResource(new DefaultResourceLoader().getResource("classpath:file.ini")) .done() .getConfiguration() .evaluateToString("CONSTANT_A"); public static final String CONSTANT_B = new ConstrettoBuilder() .createIniFileConfigurationStore() .addResource(new DefaultResourceLoader().getResource("classpath:file.ini")) .done() .getConfiguration() .evaluateToString("CONSTANT_B"); One way around this is to use spring injection. This makes nice concise code but comes with two flaws: the constants can no longer be constant (they have to be member fields), and you have to lump all your properties together into one big "globals" store (days of f77 comes to mind). A third problem with this approach is that you're passing Constretto's context through Spring's context, we don't really want chained contexts but direct access to individual contexts if possible. So looking for a more elegant solution to all this we wrote a simple factory, that has now been accepted upsteam, that provides the necessary convenience methods so the constants can be declared short, sweet, and simple import static org.constretto.util.StaticlyCachedConfiguration.config; public static final String CONSTANT_A = config("classpath:file.ini").evaluateToString("CONSTANT_A"); public static final String CONSTANT_B = config("classpath:file.ini").evaluateToString("CONSTANT_B"); This also caches the ConstrettoConfigurations improving your application's startup performance. This was taken from Co

## The Universal Design Pattern

DevFeed: [The Universal Design Pattern](<https://devfeed.tech/articles/the-universal-design-pattern-38765.md>)

Original publisher: [Read original article](<https://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html>)

Author: Steve Yegge (noreply@blogger.com)

Published: 2008-10-20T10:06:00Z

Content type: article

Language: en

Sources: [Steve Yegge](<https://devfeed.tech/sources/steve-yegge.md>)

Topics: [properties](<https://devfeed.tech/topics/properties.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [class](<https://devfeed.tech/topics/class.md>), [object](<https://devfeed.tech/topics/object.md>), [XML](<https://devfeed.tech/topics/xml.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [properties](<https://devfeed.tech/tags/properties.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [technical](<https://devfeed.tech/tags/technical.md>), [technical-article](<https://devfeed.tech/tags/technical-article.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This technical article presents the Properties Pattern, also known in its fullest form as the Prototype Pattern. It explains the pattern as a flexible approach to modeling problems across programming languages and as a general-purpose persistence strategy, while comparing it with class-based object-oriented, relational, and XML modeling.

### Source excerpt

This idea that there is generality in the specific is of far-reaching importance. -- Douglas Hofstadter, Gödel, Escher, Bach Note: Today's entry is a technical article: it isn't funny. At least not intentionally. Update, Oct 20th 2008: I've added an Updates section, where I'll try to track significant responses, at least for a week or so. There are three entries so far. Contents Introduction Three Great Schools of Software Modeling Class Modeling Relational Modeling XML Modeling Other schools Finding the sweet spot Property Modeling Brains and Thoughts Who uses the Properties Pattern? Eclipse JavaScript Pushing it even further The pattern takes shape... Wyvern Lisp XML revisited Bigtable Properties Pattern high-level overview Representations Keys Quoting Missing keys Data structures Inheritance The deletion problem Read/write asymmetry Read-only plists Performance Interning strings Perfect hashing Copy-on-read caching Refactoring to fields Refrigerator REDACTED Rolling your own Transient properties The deletion problem (remix) Persistence Query strategies Backfills Type systems Toolkits Problems Further reading New Updates Final thoughts Introduction Today I thought I'd talk about a neat design pattern that doesn't seem to get much love: the Properties Pattern. In its fullest form it's also sometimes called the Prototype Pattern. People use this pattern all over the place, and I'll give you a nice set of real-life examples in a little bit. It's a design pattern that's useful in every programming language, and as we'll see shortly, it's also pretty darn useful as a general-purpose persistence strategy. But even though this pattern is near-universal, people don't talk about it very often. I think this is because while it's remarkably flexible and adaptable, the Properties Pattern has a reputation for not being "real" design or "real" modeling. In fact it's often viewed as a something of a shameful cheat, particularly by overly-zealous proponents of object-oriented desi