# optional

Published articles for optional.

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

## Makera Z1 Desktop CNC Review - Smart milling, 4-th axis module, and 5W laser engraving

DevFeed: [Makera Z1 Desktop CNC Review - Smart milling, 4-th axis module, and 5W laser engraving](<https://devfeed.tech/articles/makera-z1-desktop-cnc-review-smart-milling-4-th-axis-module-and-5w-laser-engraving-14016.md>)

Original publisher: [Read original article](<https://www.cnx-software.com/2026/09/01/makera-z1-desktop-cnc-review-smart-milling-4-axis-module-and-5w-laser-engraving/>)

Author: Jean-Luc Aufranc (CNXSoft)

Published: 2026-09-01T10:51:29Z

Content type: article

Language: en

Sources: [CNX Software - Embedded Systems News](<https://devfeed.tech/sources/cnx-software-embedded-systems-news.md>)

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

Tags: [camera](<https://devfeed.tech/tags/camera.md>), [cnc-router](<https://devfeed.tech/tags/cnc-router.md>), [diy](<https://devfeed.tech/tags/diy.md>), [dust](<https://devfeed.tech/tags/dust.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [optional](<https://devfeed.tech/tags/optional.md>), [precision](<https://devfeed.tech/tags/precision.md>), [review](<https://devfeed.tech/tags/review.md>), [reviews](<https://devfeed.tech/tags/reviews.md>), [testing](<https://devfeed.tech/tags/testing.md>), [video](<https://devfeed.tech/tags/video.md>), [volume](<https://devfeed.tech/tags/volume.md>)

### AI overview

A review of the Makera Z1 desktop CNC machine, covering its enclosed aluminum construction, 200 x 200 x 100 mm work volume, milling and engraving capabilities, assistive features, specifications, and optional 4th-axis and 5W laser accessories.

### Source excerpt

The Makera Z1 Desktop CNC is a desktop CNC machine designed for milling and engraving work that requires precision. The fully enclosed machine features an aluminum structure, offers a 200 x 200 x 100 mm work volume, and is suitable for wood, plastic, acrylic, PCB boards, carbon fiber, as well as non-ferrous metals such as aluminum, brass, and copper. The standout feature of this model is its fairly complete set of assistive functions, including a quick tool change system for swapping milling bits, auto probing & leveling for detecting position and leveling the workpiece, the AeroDust system for blowing and managing chips/dust, and a built-in camera for monitoring operation. In addition, optional accessories such as a 4th-axis rotary module, a 5W laser head, a workholding kit, and a 3D probe can also be installed. This model relies on a linear rail system featuring Acme lead screws and NEMA 17 stepper [...] The post Makera Z1 Desktop CNC Review - Smart milling, 4-th axis module, and 5W laser engraving appeared first on CNX Software - Embedded Systems News.

## Remote Asset Libraries

DevFeed: [Remote Asset Libraries](<https://devfeed.tech/articles/remote-asset-libraries-19186.md>)

Original publisher: [Read original article](<https://code.blender.org/2026/07/remote-asset-libraries/>)

Author: Julian Eisel

Published: 2026-07-22T12:26:48Z

Content type: release

Language: en

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

Topics: [Library](<https://devfeed.tech/topics/library.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Internet](<https://devfeed.tech/topics/internet.md>)

Tags: [download](<https://devfeed.tech/tags/download.md>), [general-development](<https://devfeed.tech/tags/general-development.md>), [internet](<https://devfeed.tech/tags/internet.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [offline](<https://devfeed.tech/tags/offline.md>), [optional](<https://devfeed.tech/tags/optional.md>), [remote](<https://devfeed.tech/tags/remote.md>), [self-hosting](<https://devfeed.tech/tags/self-hosting.md>)

### AI overview

Blender's Remote Asset Libraries let users browse assets stored on remote servers and download them only when needed. They support optional online content, self-hosting, and offline access after assets are downloaded.

### Source excerpt

Browse assets stored online and download them only when needed.

## OpenCL 3.1 is Here

DevFeed: [OpenCL 3.1 is Here](<https://devfeed.tech/articles/opencl-3-1-is-here-15115.md>)

Original publisher: [Read original article](<https://www.khronos.org/blog/opencl-3.1-is-here>)

Author: Khronos Group (webservices@khronosgroup.org)

Published: 2026-05-04T07:01:00Z

Content type: release

Language: en

Sources: [Blogs Khronos Blog](<https://devfeed.tech/sources/blogs-khronos-blog.md>)

Topics: [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [api](<https://devfeed.tech/tags/api.md>), [blog-openc](<https://devfeed.tech/tags/blog-openc.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [directx](<https://devfeed.tech/tags/directx.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [enumerate](<https://devfeed.tech/tags/enumerate.md>), [opencl](<https://devfeed.tech/tags/opencl.md>), [optional](<https://devfeed.tech/tags/optional.md>), [source](<https://devfeed.tech/tags/source.md>), [spir](<https://devfeed.tech/tags/spir.md>), [vulkan](<https://devfeed.tech/tags/vulkan.md>)

### AI overview

The Khronos OpenCL Working Group has released OpenCL 3.1, moving field-proven capabilities into the core specification. The release mandates SPIR-V kernel ingestion for conformant implementations and expands cross-platform availability through a growing implementation, compiler, runtime, and framework ecosystem.

### Source excerpt

On the eve of IWOCL 2026, the Khronos® OpenCL Working Group has released OpenCL™ 3.1, bringing widely deployed, field-proven capabilities into the core specification to expand functionality, including SPIR-V ingestion, that developers will be able to rely on across conformant implementations. The new specification arrives into a growing OpenCL ecosystem, with implementations from multiple silicon vendors, particularly in mobile and embedded markets, and higher-level frameworks including SYCL™ and chipStar increasingly targeting OpenCL as an acceleration backend. The open-source compiler and runtime ecosystem around OpenCL also continues to mature with layered implementations of OpenCL over Vulkan and DirectX 12 -- widening OpenCL's cross-platform availability, including on platforms without native drivers.

## Illegal vs Unwanted States

DevFeed: [Illegal vs Unwanted States](<https://devfeed.tech/articles/illegal-vs-unwanted-states-25485.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/illegal-vs-unwanted-states/>)

Author: Hillel Wayne

Published: 2026-04-28T15:14:09Z

Content type: article

Language: en

Sources: [Newsletter feed for Hillel Wayne's Newsletter](<https://devfeed.tech/sources/newsletter-feed-for-hillel-wayne-s-newsletter.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Software](<https://devfeed.tech/topics/software.md>), [data](<https://devfeed.tech/topics/data.md>), [Network](<https://devfeed.tech/topics/network.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [airline](<https://devfeed.tech/tags/airline.md>), [data](<https://devfeed.tech/tags/data.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [event](<https://devfeed.tech/tags/event.md>), [network](<https://devfeed.tech/tags/network.md>), [optional](<https://devfeed.tech/tags/optional.md>), [servers](<https://devfeed.tech/tags/servers.md>), [software](<https://devfeed.tech/tags/software.md>), [state](<https://devfeed.tech/tags/state.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

The article distinguishes illegal states, which a system must never enter, from unwanted states, which may be temporarily acceptable but must not persist or develop into illegal states. It argues that systems should represent unwanted states because external inputs and unreliable infrastructure make them unavoidable, while detection and resolution mechanisms limit their consequences.

### Source excerpt

An illegal state is a state we never want our system to be in. An unwanted state is a state we don't want to stay in. Many states that we wish were illegal are actually unwanted. Considering a calendaring software which stores calendar events as {user: {events: [event]}}, where each event has a start and end time. This allows one person to attend two events at the same time. We might consider this illegal and replace the data type with {user: {time: optional event}} which makes this impossible. However, a scheduling conflict isn't illegal, only unwanted! It is possible for a person to sign up for two overlapping events. Maybe they're supposed to choose one event, maybe they'll decide which event to go to later, maybe one of the events doesn't actually represent an in-person meeting. In that case it's acceptable, if not ideal, to remain in the unwanted state. Other unwanted states lead to invalid states if not exited quickly. An airline flight is in an unwanted state if there are more passengers booked to fly than seats available. This must be resolved before passengers actually board, as "more passengers physically on the plane than seats available" is an illegal state. In some cases, an unwanted state does not lead to illegal states, but permanently remaining in the unwanted state is still a problem. We might guarantee that a network partition does not ever lead to inconsistent data. Even though the unwanted state of a network partition cannot cause the illegal state of corrupt data, we still have a big problem if we don't ever fix the partition. Why systems must represent unwanted states Generally, unwanted states can happen if we don't have complete control over our system's behavior. We can't guarantee our network is perfectly reliable, our servers are always up, our users all put in correct data. If our system gets input from the external world then the world can push us into an unwanted state. We need to be able to detect these states so we can resolve them. E

## Migrating to Angular Signals

DevFeed: [Migrating to Angular Signals](<https://devfeed.tech/articles/migrating-to-angular-signals-37469.md>)

Original publisher: [Read original article](<https://www.angularspace.com/migrating-to-angular-signals/>)

Author: Armen Vardanyan

Published: 2025-08-27T10:43:56Z

Content type: tutorial

Language: en

Sources: [Daniel Glejzner](<https://devfeed.tech/sources/daniel-glejzner.md>)

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [reactive](<https://devfeed.tech/topics/reactive.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [articles](<https://devfeed.tech/tags/articles.md>), [optional](<https://devfeed.tech/tags/optional.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [rxjs](<https://devfeed.tech/tags/rxjs.md>), [state](<https://devfeed.tech/tags/state.md>), [state-management](<https://devfeed.tech/tags/state-management.md>)

### AI overview

This tutorial examines migrating Angular applications to Signals for state management and reactivity. It explains that RxJS is expected to become optional rather than unsupported, while Signals can handle many tasks.

### Source excerpt

Today, everyone, everywhere in the Angular community is talking about Signals. They are the new way to manage state and reactivity in Angular applications, promising a better way to build logic and a very much improved change detection. However, many are hesitant. And this is understandable! Not only are signals

## Zed AI: Introducing Usage-Based Billing for High-Volume Users

DevFeed: [Zed AI: Introducing Usage-Based Billing for High-Volume Users](<https://devfeed.tech/articles/zed-ai-introducing-usage-based-billing-for-high-volume-users-13571.md>)

Original publisher: [Read original article](<https://zed.dev/blog/zed-ai-billing>)

Author: Nathan Sobo

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

Content type: release

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Code](<https://devfeed.tech/topics/code.md>), [issue tracker](<https://devfeed.tech/topics/issue-tracker.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [ai](<https://devfeed.tech/tags/ai.md>), [cost](<https://devfeed.tech/tags/cost.md>), [free](<https://devfeed.tech/tags/free.md>), [issue-tracker](<https://devfeed.tech/tags/issue-tracker.md>), [optional](<https://devfeed.tech/tags/optional.md>), [subscription](<https://devfeed.tech/tags/subscription.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [usage-based-billing](<https://devfeed.tech/tags/usage-based-billing.md>), [volume](<https://devfeed.tech/tags/volume.md>)

### AI overview

Zed is introducing usage-based billing for high-volume Zed AI users while keeping a free tier for everyone else. Users will be billed at cost for tokens beyond the free tier, with optional subscription billing and monthly spending limits.

### Source excerpt

Some billing-related changes for Zed's AI offering

## Overscroll animations in Jetpack Compose

DevFeed: [Overscroll animations in Jetpack Compose](<https://devfeed.tech/articles/overscroll-animations-in-jetpack-compose-25795.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/overscroll-animations-in-jetpack-compose/>)

Author: sinasamaki

Published: 2024-07-12T07:11:09Z

Content type: tutorial

Language: en

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

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

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [article](<https://devfeed.tech/tags/article.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [events](<https://devfeed.tech/tags/events.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [optional](<https://devfeed.tech/tags/optional.md>), [parameter](<https://devfeed.tech/tags/parameter.md>)

### AI overview

This tutorial explains how to create custom overscroll animations in Jetpack Compose using a Modifier and nested scrolling. It develops a bounce effect designed to work with LazyLists and Pagers.

### Source excerpt

Add bouncy overscroll animations to all your scrolling elements

## Pattern match Optional in Java 21

DevFeed: [Pattern match Optional in Java 21](<https://devfeed.tech/articles/pattern-match-optional-in-java-21-22012.md>)

Original publisher: [Read original article](<http://blog.joda.org/2024/02/pattern-match-optional-in-java-21.html>)

Author: Stephen Colebourne (noreply@blogger.com)

Published: 2024-02-20T09:19:00Z

Content type: article

Language: en

Sources: [Stephen Colebourne](<https://devfeed.tech/sources/stephen-colebourne.md>)

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [java](<https://devfeed.tech/tags/java.md>), [java21](<https://devfeed.tech/tags/java21.md>), [null](<https://devfeed.tech/tags/null.md>), [optional](<https://devfeed.tech/tags/optional.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>)

### AI overview

This article presents a rarely useful technique for pattern matching an Optional in Java 21 by converting its value with orElse(null) and testing it with instanceof. It discusses functional Optional methods, an iterable helper, limitations in Java 17, and a possible use in long if-else chains.

### Source excerpt

I'm going to describe a trick to get pattern patching on Optional in Java 21, but one you'll probably never actually use. Using Optional As of Java 21, Pattern matching in Java allows us to check a value against a type like an instanceof with a new variable being declared of the correct type. Pattern matching can handle simple types and the deconstruction of records. But pattern matching of arbitrary classes like Optional is not yet supported. (Work to support pattern match methods is ongoing). In normal code, the best way to use Optional is with one of the functional methods: var addressOpt = findAddress(personId); var addressStr = addressOpt .map(address -> address.format()) .orElse("No address available"); This works well in most cases. But sometimes you want to use the Optional with a return statement. This results in code using get() like this: var addressOpt = findAddress(personId); if (addressOpt.isPresent()) { // early return if address found return addressOpt.get().format(); } // lots of other code to handle case when address not found One way to improve this is to write a simple method: /** * Converts an optional to an iterable for use in the for-each statement. * * @param &ltlT> the type of optional element * @param optional the optional * @return an iterable representation of the optional */ public static &ltlT> Iterable&ltlT> inOptional(Optional&ltlT> optional) { return optional.isPresent() ? List.of(optional.get()): List.of(); } Which allows the following neat form: for (var address : inOptional(findAddress(personId))) { // early return if address found return address.format(); } // lots of other code to handle case when address not found This is a great approach providing that you don't need an else branch. Using Optional with Pattern matching With Java 21 and pattern matching we have a new way to do this! if (findAddress(personId).orElse(null) instanceof Address address) { // early return if address found return address.format(); } else { // lots of

## Keep your phone number private with Signal usernames

DevFeed: [Keep your phone number private with Signal usernames](<https://devfeed.tech/articles/keep-your-phone-number-private-with-signal-usernames-1805.md>)

Original publisher: [Read original article](<https://signal.org/blog/phone-number-privacy-usernames/>)

Published: 2024-02-20T00:00:00Z

Content type: release

Language: en

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

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

Tags: [app](<https://devfeed.tech/tags/app.md>), [chat](<https://devfeed.tech/tags/chat.md>), [communication](<https://devfeed.tech/tags/communication.md>), [features](<https://devfeed.tech/tags/features.md>), [optional](<https://devfeed.tech/tags/optional.md>), [privacy](<https://devfeed.tech/tags/privacy.md>)

### AI overview

Signal is introducing privacy features that hide phone numbers from people who do not already have them saved, allow users to initiate contact with optional usernames, and let users control whether they can be found by phone number. The features are initially in beta and require the latest app version.

### Source excerpt

Signal's mission and sole focus is private communication. For years, Signal has kept your messages private, your profile information (like your name and profile photo) private, your contacts private, and your groups private - among much else. Now we're taking that one step further, by making your phone number on Signal more private. Here's how: Read more...

## Understanding nullability in GraphQL and Swift with Apollo iOS

DevFeed: [Understanding nullability in GraphQL and Swift with Apollo iOS](<https://devfeed.tech/articles/graphqlnullable-is-not-a-trap-23353.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/graphqlnullable-is-not-a-trap>)

Author: Calvin Cestari

Published: 2023-10-03T09:53:34Z

Content type: tutorial

Language: en

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

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [apollo](<https://devfeed.tech/tags/apollo.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [language](<https://devfeed.tech/tags/language.md>), [languages](<https://devfeed.tech/tags/languages.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [optional](<https://devfeed.tech/tags/optional.md>), [swift](<https://devfeed.tech/tags/swift.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial explains how nullability works in GraphQL and Swift, whose default nullability rules differ, and how Apollo iOS maps nullable GraphQL fields into generated Swift models. It also introduces the semantic distinction between GraphQL nullable and optional values.

### Source excerpt

Nullability is a fundamental concept in many programming languages giving us the ability to express the absence of a value or assigned object. This is particularly relevant in strongly typed languages where each constant or variable must be defined with one of the language data types or explicitly allowed to be null. GraphQL is strongly-typed and all fields are, by default, nullable with being a valid response for any field unless explicitly declared otherwise.

## KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter

DevFeed: [KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter](<https://devfeed.tech/articles/kotlinconf-23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-27026.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-8958d3dcb432?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T06:32:47Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [arrow](<https://devfeed.tech/tags/arrow.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [monad](<https://devfeed.tech/tags/monad.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

A review of Urs Peter's KotlinConf'23 talk on functional programming, covering monoids, functors, monads, and selective use of the Arrow framework. It highlights using Either for recoverable service errors, nullable comprehensions, and Arrow Optics for nested data updates.

### Source excerpt

KotlinConf'23 -- Kotlin & Functional Programming: pick the best, skip the rest by Urs Peterhttps://medium.com/media/b5b95f6bdbb507930534ef8279ba1d05/href I recently had the pleasure of listening to Urs Peter's talk on Kotlin & Functional. The speaker gave a great, simple summary of what a Monad is and how it works. In essence: a Monoid is combinable (plus) and has an identity (empty) element which when combined with another value returns that other value. a Functor is mappable (map) a Monad is composable (flatMap) The talk then went on to discuss some common monads, such as Collections and Optional. The highlight of the talk for me was when the speaker talked about cherry-picking the best features between Kotlin and Monads (using the Arrow framework). Use Monads selectively where needed and useful. Why use a Monad to replace try-catch blocks for the 95% of use cases? Let exceptions bubble up to a GlobalExceptionHandler. For the other 5%, where we're typically recovering in our service, prefer Either<A,B> over Result as it makes the contract explicit with easy access to the error reply. Prevent tedious null checks with Arrow's nullable{ } comprehension. With deeply nested data structures where you want to change something at the leaf level, use Arrow Optics instead of nested copy calls. While I enjoyed the talk, I would have loved to hear more best features. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## Animating fonts in Jetpack Compose

DevFeed: [Animating fonts in Jetpack Compose](<https://devfeed.tech/articles/animating-fonts-in-jetpack-compose-25764.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/animating-fonts-in-jetpack-compose/>)

Author: sinasamaki

Published: 2022-11-03T06:32:43Z

Content type: tutorial

Language: en

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

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

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [article](<https://devfeed.tech/tags/article.md>), [behavior](<https://devfeed.tech/tags/behavior.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [compose](<https://devfeed.tech/tags/compose.md>), [extend](<https://devfeed.tech/tags/extend.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [function](<https://devfeed.tech/tags/function.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [object](<https://devfeed.tech/tags/object.md>), [optional](<https://devfeed.tech/tags/optional.md>), [state](<https://devfeed.tech/tags/state.md>)

### AI overview

A tutorial on animating between TextStyles in Jetpack Compose. It explains using lerp with a float animation and introduces a helper function that manages animation state and completion callbacks to reduce repetitive code.

### Source excerpt

Jetpack compose offers many different animation helper functions. We can easily animate floats, colors, density-pixels, etc. These helper functions are usually called like this: val animatedColor by animateColorAsState( targetValue = color, animationSpec = tween(durationMillis = 300, easing = LinearEasing) ) The animateColorAsState function returns a state object and we can simply listen to

## The Many Different Ways to Fetch Data in jOOQ

DevFeed: [The Many Different Ways to Fetch Data in jOOQ](<https://devfeed.tech/articles/the-many-different-ways-to-fetch-data-in-jooq-28962.md>)

Original publisher: [Read original article](<https://blog.jooq.org/the-many-different-ways-to-fetch-data-in-jooq/>)

Author: lukaseder

Published: 2022-05-19T07:29:09Z

Content type: tutorial

Language: en

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

Topics: [jooq](<https://devfeed.tech/topics/jooq.md>), [Java](<https://devfeed.tech/topics/java.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [collections](<https://devfeed.tech/tags/collections.md>), [collector](<https://devfeed.tech/tags/collector.md>), [convenience](<https://devfeed.tech/tags/convenience.md>), [fetching](<https://devfeed.tech/tags/fetching.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [joo-f6a0c60d3d07](<https://devfeed.tech/tags/joo-f6a0c60d3d07.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [optional](<https://devfeed.tech/tags/optional.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [reactive-streams](<https://devfeed.tech/tags/reactive-streams.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stream-api](<https://devfeed.tech/tags/stream-api.md>), [streams](<https://devfeed.tech/tags/streams.md>)

### AI overview

This tutorial explains several ways to fetch data with jOOQ, including eager result-set fetching, external and internal iteration, single-record retrieval, optional results, and resource-managed fetching for large data sets.

### Source excerpt

The jOOQ API is all about convenience, and as such, an important operation (the most important one?) like fetch() must come with convenience, too. The default way to fetch data is this: It fetches the entire result set into memory and closes the underlying JDBC resources eagerly. But what other options do we have? Iterable ... Continue reading The Many Different Ways to Fetch Data in jOOQ ->

## An Approach for Migrating From Objective-C to Swift

DevFeed: [An Approach for Migrating From Objective-C to Swift](<https://devfeed.tech/articles/an-approach-for-migrating-from-objective-c-to-swift-25811.md>)

Original publisher: [Read original article](<https://www.steveonstuff.com/2022/01/13/migrating-from-objc-to-swift>)

Author: Steve Barnegren

Published: 2022-01-13T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>), [generics](<https://devfeed.tech/topics/generics.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [enums](<https://devfeed.tech/tags/enums.md>), [generics](<https://devfeed.tech/tags/generics.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [optional](<https://devfeed.tech/tags/optional.md>), [swift](<https://devfeed.tech/tags/swift.md>), [types](<https://devfeed.tech/tags/types.md>), [with](<https://devfeed.tech/tags/with.md>)

### AI overview

This article shares lessons from transitioning a large iOS and tvOS application from Objective-C to Swift. It explains why simply adding new Swift code produced limited progress and caused Swift code to be constrained by Objective-C interoperability.

### Source excerpt

It feels like Swift is pretty ubiquitous across the Apple ecosystem now, but there's a lot of Objective-C out there. The larger and older the app, the more likely that there's still a bunch of Objective-C powering various bits behind the scenes.

## Nulls and Null Safety

DevFeed: [Nulls and Null Safety](<https://devfeed.tech/articles/nulls-and-null-safety-25061.md>)

Original publisher: [Read original article](<https://typealias.com/start/kotlin-nulls/>)

Author: author@typealias.com (Dave Leeds)

Published: 2021-03-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

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

Tags: [elvis-operator](<https://devfeed.tech/tags/elvis-operator.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learn-to-program](<https://devfeed.tech/tags/learn-to-program.md>), [not-null-assertion-operator](<https://devfeed.tech/tags/not-null-assertion-operator.md>), [null](<https://devfeed.tech/tags/null.md>), [null-safety](<https://devfeed.tech/tags/null-safety.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>), [safe-call-operator](<https://devfeed.tech/tags/safe-call-operator.md>), [smart-cast](<https://devfeed.tech/tags/smart-cast.md>)

### AI overview

An introduction to nulls and null safety in Kotlin, explaining that variables may not always hold a value and setting up a coffee-rating example implemented in Kotlin.

### Source excerpt

So far in this book, every time that we created a variable, whether it was a String, an Int, or a Boolean, we assigned a value to it. There are times, though, when we need to create a variable that might not actually hold a value! This brings us to the exciting topic of nulls! Introduction to Nulls James has set up a coffee stand downtown, and he's ready to start sharing his fine brew!

## Ethereum Berlin Upgrade Announcement

DevFeed: [Ethereum Berlin Upgrade Announcement](<https://devfeed.tech/articles/ethereum-berlin-upgrade-announcement-16951.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2021/03/08/ethereum-berlin-upgrade-announcement>)

Author: Tim Beiko

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

Content type: release

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [Network](<https://devfeed.tech/topics/network.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [bug](<https://devfeed.tech/tags/bug.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [fork](<https://devfeed.tech/tags/fork.md>), [network](<https://devfeed.tech/tags/network.md>), [node](<https://devfeed.tech/tags/node.md>), [optional](<https://devfeed.tech/tags/optional.md>), [protocol-announcements](<https://devfeed.tech/tags/protocol-announcements.md>), [release](<https://devfeed.tech/tags/release.md>), [release-schedule](<https://devfeed.tech/tags/release-schedule.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Ethereum's Berlin upgrade is scheduled for deployment on testnets beginning with Ropsten on March 10, 2021, and on mainnet around April 15, 2021. The article lists compatible client versions, upgrade guidance for node operators, and the EIPs included in Berlin.

### Source excerpt

TL;DR Berlin is ready to be deployed! We're moving fast: the first testnet to upgrade, Ropsten, is scheduled to upgrade on March 10th. Mainnet is scheduled for April 15th. If you are running an Ethereum node, you should upgrade it to a Berlin-compatible version ASAP for testnets and before...

## Optional dependencies are not optional

DevFeed: [Optional dependencies are not optional](<https://devfeed.tech/articles/optional-dependencies-are-not-optional-24675.md>)

Original publisher: [Read original article](<https://blog.gradle.org/optional-dependencies>)

Author: Cédric Champeau

Published: 2020-01-07T05:00:00Z

Content type: tutorial

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Library](<https://devfeed.tech/topics/library.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [library](<https://devfeed.tech/tags/library.md>), [optional](<https://devfeed.tech/tags/optional.md>)

### AI overview

The article explains that so-called optional dependencies are actually required when a specific library feature is used. Using Gradle, Apache Maven, Apache PDFBox, and BouncyCastle as examples, it describes how optional dependencies are omitted during transitive dependency resolution, leaving consumers to determine and add the required components manually. It introduces feature-based dependency modeling as a clearer approach.

### Source excerpt

In a previous blog post, we demonstrated how capabilities could be used to elegantly solve the problem of having multiple logging frameworks on the classpath. In this post, we will again use this concept in a different context: optional dependencies. At Gradle, we often say that there are no optional dependencies: there are dependencies which are required if you use a specific feature. Let's explain why. Optional dependencies Until recently, Gradle didn't offer any way to publish optional dependencies, which is something which puzzled a number of Apache Maven™ users. To understand in what context optional dependencies are used, let's look at a real world project. The Apache PDFBox library declares the following optional dependencies in its POM file: <dependencies> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcmail-jdk15on</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <optional>true</optional> </dependency> </dependencies> Those are 2 dependencies on a specific component, the BouncyCastle cryptography library. Now let's imagine your project depends on PDFBox, either using Gradle: dependencies { implementation("org.apache.pdfbox:pdfbox:2.0.17") } or using Apache Maven™: <dependencies> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.17</version> </dependency> </dependencies> Now if you look at the dependencies that both Maven and Gradle resolve, you will see that the Bouncycastle library is absent. This is because it's defined as an optional dependency. There are multiple problems with optional dependencies as they are defined today: Library authors know why a dependency is optional, but consumers don't: how do you know when you should add bcprov-jdk15on? Optional dependencies are mixed up: how do you know when to add bcprov-jdk15on and if bcmail-jdk15on should be added as well? Optional dependencies are ignored

## Data classes aren't (that) magical

DevFeed: [Data classes aren't (that) magical](<https://devfeed.tech/articles/data-classes-aren-t-that-magical-27059.md>)

Original publisher: [Read original article](<https://zsmb.co/data-classes-arent-that-magical/>)

Author: Márton Braun

Published: 2019-01-16T16:00:00Z

Content type: tutorial

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [classes](<https://devfeed.tech/tags/classes.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [create](<https://devfeed.tech/tags/create.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [destructuring](<https://devfeed.tech/tags/destructuring.md>), [generate](<https://devfeed.tech/tags/generate.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [marton-braun](<https://devfeed.tech/tags/marton-braun.md>), [optional](<https://devfeed.tech/tags/optional.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [properties](<https://devfeed.tech/tags/properties.md>), [zsmb](<https://devfeed.tech/tags/zsmb.md>), [zsmb-co](<https://devfeed.tech/tags/zsmb-co.md>), [zsmb13](<https://devfeed.tech/tags/zsmb13.md>), [zsmbco](<https://devfeed.tech/tags/zsmbco.md>)

### AI overview

This tutorial explains what Kotlin data classes add to regular classes. It covers generated methods, how primary-constructor properties affect those methods, destructuring support, and the copy method with optional named parameters.

### Source excerpt

Data classes are great, but don't underestimate what a regular Kotlin class can do on its own.

## Intentional Optionality

DevFeed: [Intentional Optionality](<https://devfeed.tech/articles/intentional-optionality-25807.md>)

Original publisher: [Read original article](<https://www.steveonstuff.com/2018/09/13/intentional-optionality>)

Author: Steve Barnegren

Published: 2018-09-13T00:00:00Z

Content type: tutorial

Language: en

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

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [guards](<https://devfeed.tech/tags/guards.md>), [let](<https://devfeed.tech/tags/let.md>), [optional](<https://devfeed.tech/tags/optional.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

A Swift article examines intentional use of optionality. It argues that while non-optional types are usually preferable, optional values can sometimes make code easier to read and understand, including when handling leaderboard entries and conditional menu items.

### Source excerpt

When I first started writing Swift, I felt like Optionals were a constant pain point. Everything seemed to end up being Optional, resulting in me littering if lets and guards around my code, and generally just making a horrible mess of things.

## Clean code with Java 9 at GeeCON

DevFeed: [Clean code with Java 9 at GeeCON](<https://devfeed.tech/articles/clean-code-with-java-9-at-geecon-21496.md>)

Original publisher: [Read original article](<https://mirocupak.com/clean-code-with-java-9-at-geecon/>)

Published: 2018-05-17T20:05:44Z

Content type: opinion

Language: en

Sources: [Miro Cupak](<https://devfeed.tech/sources/miro-cupak.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>), [HTTP](<https://devfeed.tech/topics/http.md>)

Tags: [clean-code](<https://devfeed.tech/tags/clean-code.md>), [conference](<https://devfeed.tech/tags/conference.md>), [geecon](<https://devfeed.tech/tags/geecon.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [java-9](<https://devfeed.tech/tags/java-9.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [optional](<https://devfeed.tech/tags/optional.md>), [speaking](<https://devfeed.tech/tags/speaking.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A personal report from GeeCON describes a live demo on writing cleaner code with Java 9. The talk covers JShell and several JDK 9 features, including collection factory methods, private interface methods, Stream API enhancements, Optional updates, StackWalker, and an HTTP/2 client.

### Source excerpt

Last week, I was fortunate enough to attend GeeCON. GeeCON is a well-known conference in the JVM world and this year marked its 10th anniversary. More than 1200 people came to see over 80 sessions from more than 70 speakers distributed across 4 tracks over 3 days in Krakow, Poland. This was my first time attending GeeCON. In retrospect,...

## Read receipts are coming to Signal

DevFeed: [Read receipts are coming to Signal](<https://devfeed.tech/articles/read-receipts-are-coming-to-signal-1813.md>)

Original publisher: [Read original article](<https://signal.org/blog/read-receipts/>)

Published: 2017-10-03T00:00:00Z

Content type: release

Language: en

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

Topics: [Messaging](<https://devfeed.tech/topics/messaging.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Beta channel](<https://devfeed.tech/topics/beta-channel.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [beta-channel](<https://devfeed.tech/tags/beta-channel.md>), [communication](<https://devfeed.tech/tags/communication.md>), [feature](<https://devfeed.tech/tags/feature.md>), [ios](<https://devfeed.tech/tags/ios.md>), [new-feature](<https://devfeed.tech/tags/new-feature.md>), [optional](<https://devfeed.tech/tags/optional.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

Signal's beta release for Android and iOS adds optional read receipts. Users can enable or disable them, and both participants must have the feature enabled to see each other's receipts. The feature is enabled for new installations but disabled by default for existing installations.

### Source excerpt

Today's beta release of Signal for Android and iOS includes support for read receipts. This is an optional new feature that gives you the ability to see and share when messages have been read. Something tells us that you might find this useful... Read more...

## Java Optionals and Kotlin Nulls

DevFeed: [Java Optionals and Kotlin Nulls](<https://devfeed.tech/articles/java-optionals-and-kotlin-nulls-25040.md>)

Original publisher: [Read original article](<https://typealias.com/guides/java-optionals-and-kotlin-nulls/>)

Author: author@typealias.com (Dave Leeds)

Published: 2017-09-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

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

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [filter](<https://devfeed.tech/tags/filter.md>), [java](<https://devfeed.tech/tags/java.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration-guide](<https://devfeed.tech/tags/migration-guide.md>), [null](<https://devfeed.tech/tags/null.md>), [null-safety](<https://devfeed.tech/tags/null-safety.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>), [safe-call-operator](<https://devfeed.tech/tags/safe-call-operator.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [transformation](<https://devfeed.tech/tags/transformation.md>)

### AI overview

A guide to translating Java Optional usage into idiomatic Kotlin null-safety patterns. It compares creation, transformation, filtering, and conditional operations, while noting trade-offs and cases where Kotlin nullable types replace Optional.

### Source excerpt

When Java 8 introduced Streams for operating on collections of data, it also introduced a similar concept, Optional, which has many methods that are similar to Stream, but operates on a single value that might or might not be present. As you migrate your projects from Java to Kotlin, you might come across some Optional objects. What should you do? Should you leave them as Optional, or change them to more idiomatic Kotlin?

## Maintaining a Swift and Objective-C Hybrid Codebase

DevFeed: [Maintaining a Swift and Objective-C Hybrid Codebase](<https://devfeed.tech/articles/maintaining-a-swift-and-objective-c-hybrid-codebase-1476.md>)

Original publisher: [Read original article](<https://shopify.engineering/maintaining-a-swift-and-objective-c-hybrid-codebase>)

Author: Adrianna Chang

Published: 2017-06-15T18:13:00Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [WebKit](<https://devfeed.tech/topics/webkit.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [c](<https://devfeed.tech/tags/c.md>), [crash](<https://devfeed.tech/tags/crash.md>), [ios](<https://devfeed.tech/tags/ios.md>), [null](<https://devfeed.tech/tags/null.md>), [optional](<https://devfeed.tech/tags/optional.md>), [pointers](<https://devfeed.tech/tags/pointers.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains how to maintain a hybrid Swift and Objective-C codebase when adding new Swift code to an existing actively supported Objective-C project. It discusses interoperability between the two languages and the importance of correct nullability annotations for preserving Swift's compile-time optionality guarantees and avoiding runtime crashes.

### Source excerpt

6 minute read Swift is gaining popularity among iOS developers, which is of no surprise. It's strictly typed, which means you can prove the correctness of your program at compile time, given that your typesystem describes the domain well. It's a modern language offering syntax constructs encouraging developers to write better architecture using fewer lines of code, making it expressive. It's more fun to work with, and all the new Cocoa projects are being written in Swift. At Shopify, we want to adopt Swift where it makes sense, while understanding that many existing projects have an extensive codebase (some of them written years ago) in Objective-C (OBJC) that are still actively supported. It's tempting to write new code in Swift, but we can't migrate all the existing OBJC codebase quickly. And sometimes it just isn't worth the effort.

## An Optional's place in Kotlin

DevFeed: [An Optional's place in Kotlin](<https://devfeed.tech/articles/an-optional-s-place-in-kotlin-15498.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/an-optionals-place-in-kotlin>)

Author: Jake Wharton

Published: 2017-05-14T16:18:21Z

Content type: article

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Java](<https://devfeed.tech/topics/java.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [optional](<https://devfeed.tech/tags/optional.md>), [releases](<https://devfeed.tech/tags/releases.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

Kotlin's nullability support does not eliminate every use for Optional. Because RxJava 2 streams do not allow null values, Retrofit 2.3.0 adds converters that wrap potentially null deserialization results in Optional-like types from Guava and Java 8.

### Source excerpt

With nullability being a first-class citizen in Kotlin's type system, is there any need for an Optional type?

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