# interfaces

Interfaces are contracts or boundaries that define how software components, systems, or objects communicate and interoperate.

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

## The AI magic words

DevFeed: [The AI magic words](<https://devfeed.tech/articles/the-ai-magic-words-42786.md>)

Original publisher: [Read original article](<https://stackoverflow.blog/2026/09/17/the-ai-magic-words/>)

Author: Phoebe Sajor

Published: 2026-09-17T07:40:00Z

Content type: opinion

Language: en

Sources: [Stack Overflow Blog](<https://devfeed.tech/sources/stack-overflow-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>), [intelligence](<https://devfeed.tech/topics/intelligence.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Tool](<https://devfeed.tech/topics/tool.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [books](<https://devfeed.tech/tags/books.md>), [ceo](<https://devfeed.tech/tags/ceo.md>), [company](<https://devfeed.tech/tags/company.md>), [intelligence](<https://devfeed.tech/tags/intelligence.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [knowledge-building](<https://devfeed.tech/tags/knowledge-building.md>), [learning](<https://devfeed.tech/tags/learning.md>), [platforms](<https://devfeed.tech/tags/platforms.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [se-stackoverflow](<https://devfeed.tech/tags/se-stackoverflow.md>), [se-tech](<https://devfeed.tech/tags/se-tech.md>), [tool](<https://devfeed.tech/tags/tool.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>)

### AI overview

Ryan interviews Tim O'Reilly about books as interfaces to knowledge, using "magic words" to get better outputs from AI, the increasing value of human taste, and how O'Reilly Media supports human and agentic learning through books, online platforms, and an expert intelligence tool.

### Source excerpt

Ryan sits down with Tim O'Reilly, founder and CEO at O'Reilly Media, to talk about the role of books as user interfaces to knowledge, the power of "magic words" to extract better outputs from AI, and why human taste is becoming highly valuable as knowledge becomes a commodity.

## Temporal Agent Harness: An early look at durable agent infrastructure

DevFeed: [Temporal Agent Harness: An early look at durable agent infrastructure](<https://devfeed.tech/articles/temporal-agent-harness-an-early-look-at-durable-agent-infrastructure-36004.md>)

Original publisher: [Read original article](<https://temporal.io/blog/temporal-agent-harness-durable-agent-infrastructure>)

Author: Cornelia Davis

Published: 2026-08-20T00:00:00Z

Content type: article

Language: en

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

Topics: [Agent Harness](<https://devfeed.tech/topics/agent-harness.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [reliability](<https://devfeed.tech/topics/reliability.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [agent-harness](<https://devfeed.tech/tags/agent-harness.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [announcements](<https://devfeed.tech/tags/announcements.md>), [execution](<https://devfeed.tech/tags/execution.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [production](<https://devfeed.tech/tags/production.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

Temporal presents an early look at Agent Harness, an infrastructure layer for production AI agents. It is designed to add durable execution, tool-call approvals, typed interfaces, enforceable policies, reliable execution, and a durable history of agent activity while allowing teams to keep using existing agent harnesses and tools.

### Source excerpt

Temporal's new Agent Harness brings durable execution, tool-call approvals, and typed interfaces to production AI agents. An early look.

## Thinking Machines' Inkling: Architecture and Customization Choices

DevFeed: [Thinking Machines' Inkling: Architecture and Customization Choices](<https://devfeed.tech/articles/the-new-american-ai-model-designed-to-be-customized-17999.md>)

Original publisher: [Read original article](<https://blog.bytebytego.com/p/the-new-american-ai-model-designed>)

Author: ByteByteGo

Published: 2026-08-18T15:30:36Z

Content type: article

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Mixture of Experts (MoE)](<https://devfeed.tech/topics/mixture-of-experts-moe.md>), [context window](<https://devfeed.tech/topics/context-window.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [context-window](<https://devfeed.tech/tags/context-window.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [hugging-face](<https://devfeed.tech/tags/hugging-face.md>), [mixture-of-experts](<https://devfeed.tech/tags/mixture-of-experts.md>), [model](<https://devfeed.tech/tags/model.md>), [real-time](<https://devfeed.tech/tags/real-time.md>)

### AI overview

The article examines the architecture and design choices behind Thinking Machines' Inkling model, including its mixture-of-experts structure, local and global attention, position encoding, multimodal inputs, and adjustable thinking effort. It also notes that Inkling is the company's first model trained from scratch and that its weights are available on Hugging Face under an Apache 2.0 license.

### Source excerpt

In this article, we will work through the various choices Thinking Machines made while building Inkling.

## How to Learn Low-Level Design: A Roadmap for Study and Interviews

DevFeed: [How to Learn Low-Level Design: A Roadmap for Study and Interviews](<https://devfeed.tech/articles/how-to-learn-low-level-design-from-zero-in-2026-33570.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/how-to-learn-low-level-design-from-zero>)

Author: Ashish Pratap Singh

Published: 2026-08-09T10:46:58Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

This tutorial presents a step-by-step roadmap for learning low-level design (LLD), including what to study, the order of topics, interview preparation, and linked learning resources. It explains how LLD differs from high-level system design and describes common interview formats such as object-oriented design, machine coding, and concurrency design.

### Source excerpt

In this article, I'll give you a complete step-by-step roadmap to learn Low-Level Design or LLD from scratch covering exactly what to learn, the right order to learn it, and how to prepare effectively for low level design interviews.

## Wireshark: analiza tráfico de red visualmente

DevFeed: [Wireshark: analiza tráfico de red visualmente](<https://devfeed.tech/articles/wireshark-analiza-trafico-de-red-visualmente-34094.md>)

Original publisher: [Read original article](<https://tengoping.com/blog/wireshark-analiza-trafico-red-visualmente/>)

Author: Antonio Pérez

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

Content type: tutorial

Language: es

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

Topics: [TCP/IP](<https://devfeed.tech/topics/tcp-ip.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Ethernet](<https://devfeed.tech/topics/ethernet.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [debian](<https://devfeed.tech/tags/debian.md>), [ethernet](<https://devfeed.tech/tags/ethernet.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [tcp-ip](<https://devfeed.tech/tags/tcp-ip.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [ubuntu-24-04](<https://devfeed.tech/tags/ubuntu-24-04.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A practical guide to Wireshark covering installation, packet capture without running the graphical application as root, display filters, protocol-layer inspection, and TCP flow tracking. It includes real capture examples and discusses the security implications of granting capture permissions.

### Source excerpt

Guía práctica de Wireshark: instalación, captura sin root, filtros de visualización, inspección de capas y seguimiento de flujos TCP con ejemplos reales.

## VLANs explicadas: segmenta tu red

DevFeed: [VLANs explicadas: segmenta tu red](<https://devfeed.tech/articles/vlans-explicadas-segmenta-tu-red-34092.md>)

Original publisher: [Read original article](<https://tengoping.com/blog/vlans-explicadas-segmentar-red/>)

Author: Antonio Pérez

Published: 2026-07-27T00:00:00Z

Content type: tutorial

Language: es

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

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [Ethernet](<https://devfeed.tech/topics/ethernet.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [ethernet](<https://devfeed.tech/tags/ethernet.md>), [homelab](<https://devfeed.tech/tags/homelab.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [lan](<https://devfeed.tech/tags/lan.md>), [linux](<https://devfeed.tech/tags/linux.md>), [vlan](<https://devfeed.tech/tags/vlan.md>)

### AI overview

This tutorial explains how VLANs divide one physical network into separate logical networks. It covers 802.1Q tagging, VLAN IDs, access and trunk ports, PVIDs, and configuring VLANs on managed switches and Linux for homelab network segmentation.

### Source excerpt

Qué son las VLANs y el etiquetado 802.1Q, cómo configurarlas en un switch gestionado y en Linux, y cuándo merece la pena segmentar tu red de homelab.

## Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor

DevFeed: [Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor-25189.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor/>)

Author: hitherejoe

Published: 2026-07-26T07:37:53Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Android](<https://devfeed.tech/topics/android.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

A tutorial on implementing a Firebase sign-up API request in a Kotlin Multiplatform application using Ktor. It defines an authentication repository interface and service implementation for Android and iOS clients, including API key, email, and password parameters and exception handling.

### Source excerpt

This post is part four of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part two built the authentication remote store and modelled its response. Implementing the Sign-up Endpoint Now that we've created the models for receiving back an authentication response, it's time for us... Continue reading ->

## A Guide to Airtable for Product Managers and Product Leaders

DevFeed: [A Guide to Airtable for Product Managers and Product Leaders](<https://devfeed.tech/articles/i-m-adding-airtable-to-my-bundle-34971.md>)

Original publisher: [Read original article](<https://www.news.aakashg.com/p/airtable-bundle>)

Author: Aakash Gupta

Published: 2026-07-24T22:09:03Z

Content type: tutorial

Language: en

Sources: [Product Growth](<https://devfeed.tech/sources/product-growth.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [MCP](<https://devfeed.tech/topics/mcp.md>), [jira](<https://devfeed.tech/topics/jira.md>), [Notion](<https://devfeed.tech/topics/notion.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [app](<https://devfeed.tech/tags/app.md>), [claude](<https://devfeed.tech/tags/claude.md>), [forms](<https://devfeed.tech/tags/forms.md>), [guide](<https://devfeed.tech/tags/guide.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [jira](<https://devfeed.tech/tags/jira.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [platforms](<https://devfeed.tech/tags/platforms.md>)

### AI overview

A guide to using Airtable for product work, covering its terminology, setup paths, comparison with competing tools, and integration into a product team's workflow. It describes Airtable as a platform for organizing product work through bases, tables, records, fields, views, forms, automations, and interfaces.

### Source excerpt

Continuing to make your subscription more worth it

## GPT-5.6 Sol, Terra and Luna: What Changed in ChatGPT?

DevFeed: [GPT-5.6 Sol, Terra and Luna: What Changed in ChatGPT?](<https://devfeed.tech/articles/gpt-5-6-sol-terra-and-luna-what-changed-in-chatgpt-28519.md>)

Original publisher: [Read original article](<https://blog.risingstack.com/gpt-5-6-sol-terra-luna-chatgpt-changes/>)

Author: RisingStack Engineering

Published: 2026-07-16T12:28:01Z

Content type: release

Language: en

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

Topics: [ChatGPT](<https://devfeed.tech/topics/chatgpt.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [API](<https://devfeed.tech/topics/api.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [availability](<https://devfeed.tech/tags/availability.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [cost](<https://devfeed.tech/tags/cost.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [openai](<https://devfeed.tech/tags/openai.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>), [release](<https://devfeed.tech/tags/release.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

The article explains GPT-5.6 as a family of three models--Sol, Terra and Luna--and describes how ChatGPT combines model selection with reasoning controls, automatic switching, Work mode and context-dependent availability. It also explains that GPT-5.5 Instant remains the default for fast conversations while GPT-5.6 Sol is used for higher-reasoning settings.

### Source excerpt

OpenAI has introduced GPT-5.6, but this release is not just another model replacing the previous one. There are three new models: Sol, Terra and Luna. ChatGPT also has new reasoning controls, a separate Work mode, automatic model switching and different model availability depending on where and how you use the product. This can be confusing [...] The post GPT-5.6 Sol, Terra and Luna: What Changed in ChatGPT? appeared first on RisingStack Engineering.

## How Jetpack Compose builds and updates UI with modifiers

DevFeed: [How Jetpack Compose builds and updates UI with modifiers](<https://devfeed.tech/articles/understand-compose-in-3-minutes-39256.md>)

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

Published: 2026-06-29T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [layout](<https://devfeed.tech/topics/layout.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [modifiers](<https://devfeed.tech/tags/modifiers.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>), [stateful](<https://devfeed.tech/tags/stateful.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how Jetpack Compose builds and updates user interfaces. It focuses on modifiers, layout measurement, drawing, semantics, user interactions, recomposition, and modifier node interfaces.

### Source excerpt

How Compose actually works? How it works under the hood and why it's so powerful.

## Koin Annotations Make expect/actual Obsolete in KMP

DevFeed: [Koin Annotations Make expect/actual Obsolete in KMP](<https://devfeed.tech/articles/koin-annotations-make-expect-actual-obsolete-in-kmp-22971.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/koin-annotations-make-expect-actual-obsolete-in-kmp-5f1445e2055e?source=rss----925561f2ecdf---4>)

Author: Tezov

Published: 2026-06-11T08:48:59Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [development](<https://devfeed.tech/tags/development.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinmultiplatformmobile](<https://devfeed.tech/tags/kotlinmultiplatformmobile.md>)

### AI overview

A tutorial showing how Koin annotations and the Koin compiler can replace expect/actual declarations in Kotlin Multiplatform projects. It defines shared interfaces in commonMain, provides Android and iOS implementations through dependency injection, and uses Compose Multiplatform to resolve the platform-specific behavior.

### Source excerpt

Source code available at the end of the article In Kotlin Multiplatform (KMP) projects, expect/actual is traditionally used to handle platform-specific implementations. In a previous story, I showed how to reduce expect/actual to only one per module using Koin DSL. Today, we can go further. With Koin annotations and the Koin compiler, you can completely bypass expect/actual. This method works seamlessly with Compose Multiplatform and lets you maintain a clean architecture while keeping platform-specific logic where it belongs. Previous Story Mastering Koin Annotations with the Koin Compiler Through Unit Tests -> link Next Story I don't know yet-> coming soon Setting the Stage Inside commonMain, Koin is initialized like this: @Module @ComponentScan( "com.tezov.store.shared.di", "com.tezov.store.shared.data", "com.tezov.store.shared.domain", "com.tezov.store.shared.presentation" ) class SharedModule @KoinApplication(modules = [SharedModule::class]) class SharedApplication val koinConfiguration = koinConfiguration<SharedApplication> { /* nothing here for the demo */ } I'm using: koinCompiler = "0.6.2" koinCompose = "4.2.1-RC1" koinComposeAnnotation = "4.2.1-RC1" The important part here is the @ComponentScan. Koin doesn't just scan commonMain. It also scans the platform modules: androidMain and iosMain. That detail is key because it lets Koin find all implementations without any manual wiring. Defining Contracts in commonMain Instead of expect, we define interfaces for domain and presentation layers. Domainpackage com.tezov.store.shared.domain interface PlatformDomainProtocol { fun description(): String }Presentationpackage com.tezov.store.shared.presentation import androidx.compose.runtime.Composable interface PlatformPresentationProtocol { @Composable fun ComposableFromPlatform() } Yes, you can even include a @Composable in an interface. This is powerful: your shared code can remain clean while delegating platform-specific behavior entirely to the DI container. When usi

## The Two Abstractions of System Design: Hide or Reduce

DevFeed: [The Two Abstractions of System Design: Hide or Reduce](<https://devfeed.tech/articles/the-two-abstractions-of-system-design-hide-or-reduce-41841.md>)

Original publisher: [Read original article](<https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html>)

Author: Murat (noreply@blogger.com)

Published: 2026-05-08T23:27:00Z

Content type: article

Language: en

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

Topics: [abstraction](<https://devfeed.tech/topics/abstraction.md>), [Formal methods](<https://devfeed.tech/topics/formal-methods.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [design](<https://devfeed.tech/tags/design.md>), [formal-methods](<https://devfeed.tech/tags/formal-methods.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [system-design](<https://devfeed.tech/tags/system-design.md>), [tla](<https://devfeed.tech/tags/tla.md>)

### AI overview

The article distinguishes two meanings of abstraction in system design: modularity abstraction, which hides implementation details through interfaces and boundaries, and modeling abstraction, which reduces a system to the behaviors relevant to a property under investigation. It presents this distinction as important for formal modeling and reasoning.

### Source excerpt

When talking about TLA+, I keep referring to "abstraction" as the most important thing to learn. And it is about the hardest to learn as well. But a contradiction has been bugging me. Aren't CS people already supposed to be good at abstraction? Isn't abstraction supposed to be at the root of OS, networking, software engineering? Abstract Data Types (ADTs) are a staple of every in CS curriculum. So why do I (and every other formal methods/modeling person) see such a large skill gap in abstraction, and flag it as the core, make-or-break skill for modeling? I think I finally get to the root of this cognitive disonance. There are two kinds of "abstraction" conflated under the same umbrella term. Modularity abstraction: This is the traditional abstraction taught in CS curricula as ADTs, APIs, layered design, etc. It is all about encapsulation, drawing boundaries, and hiding internals. Modeling abstraction: This is what I talk about when I talk about abstraction in the context of modeling. This is the same sense of abstraction mathematicians and physicists when building models for thinking and reasoning. The goal is to find the minimal and most elegant description that preserves the property you care about. It is all about cutting away everything orhtogonal to the essence of that property. These two couldn't be further apart in terms of their goal! Let me try to explain in the next two sections. Modularity abstraction hides. Modeling abstraction reduces. Modularity abstraction is about interfaces that hide internals. Modeling abstraction is about behaviors, and about reducing a system to its minimal behavioral skeleton for the property you care. Modularity abstraction encapsulates, draws a vertical boundary, and hides the layer below. Modeling abstraction is crosscutting: it slices the system along a behavioral plane and keeps only what is absolutely relevant to the property under investigation, and even then in the form of "what", not "how". This slice usually looks noth

## Managing Multi Table Inserts With Room

DevFeed: [Managing Multi Table Inserts With Room](<https://devfeed.tech/articles/managing-multi-table-inserts-with-room-22825.md>)

Original publisher: [Read original article](<http://androidessence.com/multi-table-inserts/>)

Author: Adam McNeilly

Published: 2026-04-25T00:00:00Z

Content type: article

Language: en

Sources: [Android Essence](<https://devfeed.tech/sources/android-essence.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [database](<https://devfeed.tech/tags/database.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [oop](<https://devfeed.tech/tags/oop.md>)

### AI overview

This article explains how to handle multi-table inserts in Room when entities have nested dependencies. It first considers separate DAO interfaces and a wrapper class, then shows how interface inheritance can centralize insertion logic and let dependent DAOs reuse it.

### Source excerpt

A properly relational database may have a type that appears referenced multiple times. In my SpaceNerd playground app, that is the Country object. An Agency has a country, and an Agency is a dependency of a Launch, of a Space Station, and likely more types to come. How do I enforce that any time I insert an Agency, I also insert the Countries associated with it? That's what this blog post sets out to explore, and the answer is much simpler than I thought when I started.

## Build Your Own Landscapist Image Plugin in Jetpack Compose

DevFeed: [Build Your Own Landscapist Image Plugin in Jetpack Compose](<https://devfeed.tech/articles/build-your-own-landscapist-image-plugin-in-jetpack-compose-25919.md>)

Original publisher: [Read original article](<https://proandroiddev.com/build-your-own-landscapist-image-plugin-in-jetpack-compose-660aecf26236?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2026-03-28T01:23:30Z

Content type: tutorial

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Library](<https://devfeed.tech/topics/library.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [build](<https://devfeed.tech/tags/build.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [library](<https://devfeed.tech/tags/library.md>)

### AI overview

A tutorial on building custom Landscapist image-loading plugins for Jetpack Compose and Kotlin Multiplatform. It explains the ImagePlugin architecture, its five lifecycle hook points, plugin dispatch through a DSL, and built-in plugins such as placeholders, shimmer effects, circular reveals, palettes, and zooming.

### Source excerpt

Upsplash@susan_wilkinson Landscapist provides a composable image loading library for Jetpack Compose and Kotlin Multiplatform. Among its image composables, LandscapistImage stands out as the recommended choice: it uses Landscapist's own standalone loading engine built from scratch for Jetpack Compose and Kotlin Multiplatform, with no dependency on platform-specific loaders like Glide or Coil. It handles fetching, caching, decoding, and display internally, and it works identically across Android, iOS, Desktop, and Web. On top of that, LandscapistImage exposes a plugin system through the ImagePlugin sealed interface, giving you five distinct hook points into the image loading lifecycle where you can inject custom behavior without modifying the loader itself. In this article, you'll explore the ImagePlugin architecture, examining each of the five plugin types and why they exist, how ImagePluginComponent collects and dispatches plugins through a DSL, and how built in plugins like PlaceholderPlugin, ShimmerPlugin, CircularRevealPlugin, PalettePlugin, and ZoomablePlugin implement these interfaces in practice. Why LandscapistImage for plugins Before diving into the plugin system, it is worth understanding why LandscapistImage is the best foundation for plugin based image loading. LandscapistImage uses its own standalone engine (landscapist-core) rather than delegating to Glide, Coil, or Fresco. This means every stage of the image loading pipeline, from network fetching through memory caching to bitmap decoding, is controlled by a single Kotlin Multiplatform implementation. The benefit for plugins is direct: when LandscapistImage transitions from loading to success, it knows the exact moment the bitmap becomes available. It passes that bitmap directly to PainterPlugin and SuccessStatePlugin without any adapter layer or platform specific conversion. The plugin receives a real ImageBitmap, not a wrapped platform object. This also means LandscapistImage works on every Compose

## 12 OOP Concepts EVERY Developer Should Know

DevFeed: [12 OOP Concepts EVERY Developer Should Know](<https://devfeed.tech/articles/12-oop-concepts-every-developer-should-know-33559.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/12-oop-concepts-every-developer-should-know>)

Author: Ashish Pratap Singh

Published: 2026-02-12T04:27:26Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [developer](<https://devfeed.tech/tags/developer.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [practical](<https://devfeed.tech/tags/practical.md>), [programming](<https://devfeed.tech/tags/programming.md>), [real-world](<https://devfeed.tech/tags/real-world.md>)

### AI overview

An introductory tutorial on object-oriented programming explains how classes, objects, and interfaces organize state and behavior. It uses real-world examples such as users, orders, payments, and payment gateways, and notes that these concepts are relevant to low-level design interviews.

### Source excerpt

Key Object-Oriented Programming Concepts

## How To Type Function Mocha Context With Cypress Aliases

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

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

Author: Gleb Bahmutov

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

Content type: tutorial

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## How AI May Transform Software Engineering into a Conducting Role

DevFeed: [How AI May Transform Software Engineering into a Conducting Role](<https://devfeed.tech/articles/we-are-becoming-software-conductors-25331.md>)

Original publisher: [Read original article](<https://kau.sh/blog/software-conductors/>)

Author: Kaushik Gopal

Published: 2025-10-11T18:59:38Z

Content type: opinion

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [systems](<https://devfeed.tech/topics/systems.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [context](<https://devfeed.tech/topics/context.md>), [Tech Debt](<https://devfeed.tech/topics/tech-debt.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [models](<https://devfeed.tech/tags/models.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [software](<https://devfeed.tech/tags/software.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>), [structure](<https://devfeed.tech/tags/structure.md>), [tech-debt](<https://devfeed.tech/tags/tech-debt.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This opinion article argues that AI may reshape software engineering by changing workflows and organizational systems, not merely by improving individual tasks. It proposes that software engineers may increasingly act as "software conductors," coordinating AI-assisted work through precise prompts, system design, and parallel experimentation.

### Source excerpt

Engineers won't be replaced by tools that do their tasks better; they'll be replaced by systems that make those tasks nonessential. Sangeet Paul Choudary wrote an insightful piece on AI-driven job displacement and a more transformative way to think about it: To truly understand how AI affects jobs, we must look beyond individual tasks to comprehend AI's impact on our workflows and organizations. The task-centric view sees AI as a tool that improves how individual tasks are performed. Work remains structurally unchanged. AI is simply layered on top to improve speed or lower costs. ...In this framing, the main risk is that a smarter tool might replace the person doing the task. The system-centric view, on the other hand, looks at how AI reshapes the organization of work itself. It focuses on how tasks fit into broader workflows and how their value is determined by the logic of the overall system. In this view, even if tasks persist, the rationale for grouping them into a particular job, or even performing them within the company, may no longer hold once AI changes the system's structure. If we adopt a system-centric view, how does the role of a software engineer evolve?1 I've had a notion for some time -- the role will transform into a software "conductor". Software conductors # music conductors conducting is the art of directing the simultaneous performance of several players or singers by the use of gesture The tasks a software conductor must master differ from those of today's software engineer. Here are some of the shifts I can think of: Task Orchestration Mastery ## The craft is knowing exactly how much detail to provide in prompts: too little and models thrash; too much and they overfit or hallucinate constraints. You'll need to write spec-grade prompts that define interfaces, acceptance criteria, and boundaries -- chunking work into units atomic enough for clear execution yet large enough to preserve context. Equally critical: recognizing when to interrupt and redi

## Kotlin type aliases versus functional interfaces for debuggable, distinct handler types

DevFeed: [Kotlin type aliases versus functional interfaces for debuggable, distinct handler types](<https://devfeed.tech/articles/the-case-of-the-missing-handler-27350.md>)

Original publisher: [Read original article](<https://blog.mmckenna.me/the-case-of-the-missing-handler>)

Author: Matt McKenna

Published: 2025-08-28T04:00:22Z

Content type: tutorial

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [function](<https://devfeed.tech/tags/function.md>), [generic](<https://devfeed.tech/tags/generic.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

This Kotlin article explains that a type alias for a function type does not create a distinct type, so its name can disappear from debugging and stack traces. It recommends functional interfaces when type identity, discoverability, distinct callbacks, and simple testing fakes are important.

### Source excerpt

Our story begins with a clean line of Kotlin: typealias Handler = (result: Result) -> Unit It looks innocent. Give a function type a name and tidy up the signatures, great! Then a bug hits. The Handler is gone in the debugger and in stack traces onl...

## Introducing AI Assistant: Turning docs into your product expert

DevFeed: [Introducing AI Assistant: Turning docs into your product expert](<https://devfeed.tech/articles/introducing-ai-assistant-turning-docs-into-your-product-expert-31040.md>)

Original publisher: [Read original article](<https://www.mintlify.com/blog/introducing-ai-assistant-2025>)

Author: Han Wang

Published: 2025-06-23T00:00:00Z

Content type: release

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Chat](<https://devfeed.tech/topics/ai-chat.md>), [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [context window](<https://devfeed.tech/topics/context-window.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Claude](<https://devfeed.tech/topics/claude.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-trends-announcements](<https://devfeed.tech/tags/ai-trends-announcements.md>), [claude](<https://devfeed.tech/tags/claude.md>), [context-window](<https://devfeed.tech/tags/context-window.md>), [generative-engine-optimization](<https://devfeed.tech/tags/generative-engine-optimization.md>), [interface](<https://devfeed.tech/tags/interface.md>), [product](<https://devfeed.tech/tags/product.md>), [rag](<https://devfeed.tech/tags/rag.md>), [retrieval](<https://devfeed.tech/tags/retrieval.md>)

### AI overview

Mintlify introduces an embedded AI Assistant for documentation that uses agentic retrieval to search for relevant information dynamically and provide conversational answers with citations. It runs on Claude 4 with an expanded context window and is designed to help users handle complex, multi-step questions.

### Source excerpt

AI is the new interface for learning about your product.

## Simplifying a Proposed File-List Composable Through Architecture Review

DevFeed: [Simplifying a Proposed File-List Composable Through Architecture Review](<https://devfeed.tech/articles/celebrate-the-code-you-didn-t-write-30609.md>)

Original publisher: [Read original article](<https://ryanharter.com/blog/2025/06/celebrate-the-code-you-didnt-write/>)

Published: 2025-06-06T03:47:36Z

Content type: opinion

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [code](<https://devfeed.tech/tags/code.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [simplify](<https://devfeed.tech/tags/simplify.md>)

### AI overview

An architecture and tech-spec review of a proposed file-list Composable revealed that its dependency-injection machinery and added interfaces created unnecessary complexity. By examining use cases, letting callers construct data sources, and removing interfaces that added no value, the team simplified the design until the proposed code was eliminated.

### Source excerpt

Over the past few years I've been driving an architecture and tech spec review process at work. This has been helpful in breaking down certain silos, distributing knowledge across the organization, and building skills and experience in more junior engineers. A recent tech spec caught my eye, and resulted in a really valuable learning opportunity. The specifics of the spec aren't terribly important, but at a high level the proposal was to introduce a single Composable to represent lists of files anywhere in the app. Due to the multitude of sources that can provide lists of files this was accomplished with a relatively complex set of generic data source factories that were registered via our dependency injection system to later be looked up and constructed.

## How to use generics to avoid duplications and make your code better

DevFeed: [How to use generics to avoid duplications and make your code better](<https://devfeed.tech/articles/how-to-use-generics-to-avoid-duplications-and-make-your-code-better-32291.md>)

Original publisher: [Read original article](<https://domenicoluciani.com/2025/04/11/how-to-use-generics-to-avoid-duplications-and-make-your-code-better.html>)

Author: Domenico Luciani

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

Content type: tutorial

Language: en

Sources: [Domenico Luciani](<https://devfeed.tech/sources/domenico-luciani.md>)

Topics: [generics](<https://devfeed.tech/topics/generics.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [JSON:API](<https://devfeed.tech/topics/json-api.md>), [factory function](<https://devfeed.tech/topics/factory-function.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [create](<https://devfeed.tech/tags/create.md>), [generics](<https://devfeed.tech/tags/generics.md>), [go](<https://devfeed.tech/tags/go.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [like](<https://devfeed.tech/tags/like.md>), [refactor](<https://devfeed.tech/tags/refactor.md>)

### AI overview

A Go tutorial explains how generics can reduce duplicated method implementations when multiple response structs must satisfy the same interfaces. It demonstrates applying a reusable generic response to JSON:API-formatted responses and adding a factory function for readability.

### Source excerpt

I recently worked on a project that had a lot of code duplication due to repeated implementations of the same interfaces. I quickly realized it was a great opportunity to refactor...

## Functional Interfaces Can Extend Other Interfaces

DevFeed: [Functional Interfaces Can Extend Other Interfaces](<https://devfeed.tech/articles/a-functional-intreface-can-extend-other-interfaces-30755.md>)

Original publisher: [Read original article](<http://blog.vanillajava.blog/2025/02/a-functional-intreface-can-extend-other.html>)

Author: Peter Lawrey (noreply@blogger.com)

Published: 2025-02-20T09:04:00Z

Content type: article

Language: en

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

Topics: [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [functional](<https://devfeed.tech/tags/functional.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>)

### AI overview

The article explains that a functional interface can extend marker, functional, and non-functional interfaces, as well as an annotation.

### Source excerpt

A functional interface can extend a marker interface, functional interface, non-functional interface, and an annotation. A recent X poll suggested 25% of those responding didn't know that.

## Mistral AI announces AFP news integration for Le Chat

DevFeed: [Mistral AI announces AFP news integration for Le Chat](<https://devfeed.tech/articles/purr-fectly-informed-7042.md>)

Original publisher: [Read original article](<https://mistral.ai/news/mistral-afp/>)

Published: 2025-01-16T06:00:00Z

Content type: news

Language: en

Sources: [Mistral AI Blog](<https://devfeed.tech/sources/mistral-ai-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Chat](<https://devfeed.tech/topics/ai-chat.md>), [Generative AI](<https://devfeed.tech/topics/generative-ai.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-assistants](<https://devfeed.tech/tags/ai-assistants.md>), [chat](<https://devfeed.tech/tags/chat.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [news](<https://devfeed.tech/tags/news.md>), [partnership](<https://devfeed.tech/tags/partnership.md>)

### AI overview

Mistral AI announces a global partnership with Agence France-Presse (AFP) to integrate AFP newswire stories into its Le Chat AI assistant. The integration is intended to provide responses with more factual, current, and sourced information, including multilingual coverage, and is planned to roll out to all Le Chat users in the coming weeks.

### Source excerpt

The most powerful AI platform for enterprises. Customize, fine-tune, and deploy AI assistants, autonomous agents, and multimodal AI with open models.

## Empowering Your Annotations with Fields

DevFeed: [Empowering Your Annotations with Fields](<https://devfeed.tech/articles/empowering-your-annotations-with-fields-30743.md>)

Original publisher: [Read original article](<http://blog.vanillajava.blog/2024/12/empowering-your-annotations-with-fields.html>)

Author: Peter Lawrey (noreply@blogger.com)

Published: 2024-12-21T22:13:00Z

Content type: tutorial

Language: en

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

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Java Language](<https://devfeed.tech/topics/java-language.md>), [Code](<https://devfeed.tech/topics/code.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [enum](<https://devfeed.tech/topics/enum.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [enum](<https://devfeed.tech/tags/enum.md>), [info](<https://devfeed.tech/tags/info.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [opinion](<https://devfeed.tech/tags/opinion.md>)

### AI overview

This tutorial explains how Java annotations can contain nested classes, interfaces, enums, other annotations, static fields, and embedded logic. It discusses uses such as domain converters, framework lifecycle hooks, and syntactic sugar, while noting that excessive nesting can reduce readability.

### Source excerpt

Introduction Java's annotation system has come a long way since its introduction in Java 5. At first glance, annotations appear to be mere metadata markers on classes and methods. However, annotations can do much more than that. You can nest types within them, incorporate fields that reference helper classes, and even embed logic via static singletons. These capabilities provide a powerful mechanism for integrating domain-specific or framework-specific functionality right into your code, in ways that are both compact and self-documenting. Why Add Code to Annotations? The Java language specification usually treats annotations as static metadata describing a type, method, field, or parameter. However, you can leverage nested classes (including enums, interfaces, and even other annotations) to extend the functionality of a single annotation. This approach allows you to keep logic closely tied to the metadata, rather than scattering it across multiple classes. Common use cases include: Custom domain converters. For example, if you have a long that needs to be stored in an encoded format (e.g., Base85), you can supply a default converter directly within the annotation. Framework-specific lifecycle hooks. You can embed an interface for processing the annotation, enabling the framework to perform reflective lookups and apply behaviour at runtime. Syntactic sugar. Rather than writing @LongConversion(SomeConverter.class), you could write @ShortText, which internally references a known converter. Nesting Types in Java You can nest various kinds of types within your classes or annotations--these include interfaces, enums, classes, and even other annotations. Although nesting these types can feel unconventional, it is fully supported by the language. For example: public class A { public interface B { public enum C { ; public @interface D { public class E { // etc etc } } } } } While this example might look bizarre, it demonstrates the power and flexibility of Java's nesting rule

[Next page](<https://devfeed.tech/topics/interfaces.md?cursor=WyIyMDI0LTEyLTIxVDIyOjEzOjAwKzAwOjAwIiwgImI1OWZkZDMzLTIyZDgtNDgyZC1hYzVjLWVlN2Q3MThmYjZjNCJd>)