# function

In programming, a function is an abstraction that expresses a computational process and performs a defined job.

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

## What's New in PHP 8.6

DevFeed: [What's New in PHP 8.6](<https://devfeed.tech/articles/what-s-new-in-php-8-6-33305.md>)

Original publisher: [Read original article](<https://freek.dev/3192-whats-new-in-php-86>)

Author: Freek Van der Herten (freek@spatie.be)

Published: 2026-09-16T12:30:30Z

Content type: release

Language: en

Sources: [freek.dev - all blogposts](<https://devfeed.tech/sources/freek-dev-all-blogposts.md>)

Topics: [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [PHP](<https://devfeed.tech/topics/php.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [improvements](<https://devfeed.tech/tags/improvements.md>), [language](<https://devfeed.tech/tags/language.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>)

### AI overview

An overview of upcoming PHP 8.6 changes, including partial function application, clamp(), the Duration class, and other language and standard library improvements.

### Source excerpt

A concise overview of what's coming in PHP 8.6, including partial function application, clamp(), the new Duration class, and several smaller language and standard library improvements. Read more

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

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

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

Author: daroc

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

Content type: article

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## How big are factorials?

DevFeed: [How big are factorials?](<https://devfeed.tech/articles/how-big-are-factorials-35142.md>)

Original publisher: [Read original article](<https://eli.thegreenplace.net/2026/how-big-are-factorials/>)

Author: Eli Bendersky

Published: 2026-08-28T01:52:00Z

Content type: tutorial

Language: en

Sources: [Eli Bendersky](<https://devfeed.tech/sources/eli-bendersky.md>)

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

Tags: [function](<https://devfeed.tech/tags/function.md>), [gamma](<https://devfeed.tech/tags/gamma.md>), [math](<https://devfeed.tech/tags/math.md>), [misc](<https://devfeed.tech/tags/misc.md>), [number](<https://devfeed.tech/tags/number.md>)

### AI overview

This tutorial explains how to estimate the number of digits in factorials, using 52! as an example. It introduces the Gamma function and outlines Stirling's approximation and its derivation using Laplace's method.

### Source excerpt

The other day, I found myself wondering how big 52! (52 factorial) is, and that led me to ponder how these could be estimated without a calculator or a computer. It turns out there's some fairly interesting math behind being able to estimate the size (number of digits) of ...

## A revised algorithm for converting Gregorian dates to day counts

DevFeed: [A revised algorithm for converting Gregorian dates to day counts](<https://devfeed.tech/articles/counting-the-days-revisited-36232.md>)

Original publisher: [Read original article](<https://dotat.at/@/2026-08-09-rata-die.html>)

Published: 2026-08-09T02:29:48Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [DateTime](<https://devfeed.tech/topics/datetime.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [function](<https://devfeed.tech/tags/function.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

The article revisits an algorithm for converting Gregorian dates into Julian Day numbers or related day counts such as rata die. It explains the March-based month pattern, leap-year corrections, integer arithmetic, and limitations caused by overflow in the output data type.

### Source excerpt

Many years ago I wrote about how to convert Gregorian dates to Julian Day numbers or similar counts such as rata die as used in Calendrical Calculations. This algorithm is the core of C's mktime() function that converts a broken-down date-time into linear time_t. I recently learned from Ben Joffe that I was missing a few tricks, and my old code wasn't as good as it could have been. Here's a better version (using conventional not C numbering): if m > 2 { m -= 2; } else { m += 10; y -= 1; } y*365 + y/4 - y/100 + y/400 + m*979/32 + d - 336 the main idea Julian years Gregorian correction the month pattern the epoch domains and ranges leap year test length of month the main idea There's a helpful coincidence in the Gregorian calendar. Although the month lengths aren't obviously regular, there's a repeating 5 month pattern that becomes easier to see when you start from March, as illustrated by the table below. This pattern resets at the end of February, midway through its third repeat, coincidentally at the same point that leap days occur. Thus the first line of the code above adjusts the month and year numbers so that January and February are counted at the end of the previous year, and the coincidental alignment occurs at the boundary between the adjusted year numbers. I'll explain the details of the adjustment as I discuss the relevant parts of the second line March 31 days April 30 days May 31 days June 30 days July 31 days August 31 days September 30 days October 31 days November 30 days December 31 days January 31 days February 28 or 29 Julian years The first part of the main formula counts the number of days before the start of year y, in terms of normal years and leap days. y * 365 + y / 4 The adjustment subtracts one from the year in January and February. The effect is that the leap day in year 4 is counted as a day before the start of the adjusted beginning of year 4, i.e. before March, i.e. exactly the right place. I previously combined this part of the express

## What's new in PHP 8.6

DevFeed: [What's new in PHP 8.6](<https://devfeed.tech/articles/what-s-new-in-php-8-6-33288.md>)

Original publisher: [Read original article](<https://freek.dev/3174-whats-new-in-php-86>)

Author: Freek Van der Herten (freek@spatie.be)

Published: 2026-08-05T12:14:26Z

Content type: article

Language: en

Sources: [freek.dev - all blogposts](<https://devfeed.tech/sources/freek-dev-all-blogposts.md>)

Topics: [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [PHP](<https://devfeed.tech/topics/php.md>), [API](<https://devfeed.tech/topics/api.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [features](<https://devfeed.tech/tags/features.md>), [function](<https://devfeed.tech/tags/function.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [news](<https://devfeed.tech/tags/news.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>)

### AI overview

The article surveys notable additions coming in PHP 8.6, including partial function application, a new polling API, readonly property defaults, and smaller improvements and deprecations.

### Source excerpt

Brent surveys the most notable additions coming in PHP 8.6, including partial function application, the new polling API, readonly property defaults, and several smaller improvements and deprecations. Read more

## Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)

DevFeed: [Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)](<https://devfeed.tech/articles/waiting-for-postgresql-19-sql-property-graph-queries-sql-pgq-33693.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/07/31/waiting-for-postgresql-19-sql-property-graph-queries-sql-pgq/>)

Author: depesz

Published: 2026-07-31T16:57:44Z

Content type: opinion

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [function](<https://devfeed.tech/topics/function.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>)

Tags: [function](<https://devfeed.tech/tags/function.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [pgq](<https://devfeed.tech/tags/pgq.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [property](<https://devfeed.tech/tags/property.md>), [sql](<https://devfeed.tech/tags/sql.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article discusses PostgreSQL's SQL/PGQ implementation for property graph queries, including GRAPH_TABLE, graph pattern matching, and related DDL commands. It notes that the change was later rolled back and expresses the author's uncertainty about the practical benefits and usability of the syntax.

### Source excerpt

Important update This change has been rolled back. Discussion can be found here. On 16th of March 2026, Peter Eisentraut committed patch: SQL Property Graph Queries (SQL/PGQ) Implementation of SQL property graph queries, according to SQL/PGQ standard (ISO/IEC 9075-16:2023). This adds: - GRAPH_TABLE table function for graph pattern matching - DDL commands ... Continue reading "Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)"

## Test & Set

DevFeed: [Test & Set](<https://devfeed.tech/articles/test-set-32253.md>)

Original publisher: [Read original article](<https://publicobject.com/2026/07/13/test-set/>)

Author: Jesse Wilson

Published: 2026-07-13T22:22:27Z

Content type: tutorial

Language: en

Sources: [Public Object](<https://devfeed.tech/sources/public-object.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [flaky-tests](<https://devfeed.tech/tags/flaky-tests.md>), [function](<https://devfeed.tech/tags/function.md>), [programming](<https://devfeed.tech/tags/programming.md>), [tests](<https://devfeed.tech/tags/tests.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

An article about managing concurrency in threaded programs. It discusses the limits of simple and stress tests, describes a trusted concurrency pattern, and presents a helper function that separates business logic from concurrency logic while retrying after a lost race.

### Source excerpt

Working with threads always feels hazardous to me. Non-determinism limits how much we can exercise with simple tests. Stress tests can shake out some bugs, but they're slow and potentially flaky. I don't like flaky tests. So I have a few concurrency patterns that I trust, and I

## Adding accurate AsyncImage previews in Coil 3 with a Compose wrapper

DevFeed: [Adding accurate AsyncImage previews in Coil 3 with a Compose wrapper](<https://devfeed.tech/articles/adding-accurate-asyncimage-previews-in-coil-3-with-a-compose-wrapper-38570.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/coil-asyncimage-previews/>)

Author: Jake Lee

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

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [context](<https://devfeed.tech/topics/context.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [coil](<https://devfeed.tech/tags/coil.md>), [compose](<https://devfeed.tech/tags/compose.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [image](<https://devfeed.tech/tags/image.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A practical guide to improving Coil 3 AsyncImage previews in Jetpack Compose by overriding remote image fetching with a wrapper that supplies preview drawables.

### Source excerpt

I recently migrated from Coil 2 to Coil 3, allowing remote image fetching to be overridden for better previews! Here's a simple wrapper implementation.

## Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command

DevFeed: [Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command](<https://devfeed.tech/articles/waiting-for-postgresql-19-implement-alter-table-merge-split-partitions-command-33671.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/01/04/waiting-for-postgresql-19-implement-alter-table-merge-split-partitions-command/>)

Author: depesz

Published: 2026-01-04T17:30:47Z

Content type: opinion

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [command](<https://devfeed.tech/tags/command.md>), [locking](<https://devfeed.tech/tags/locking.md>), [merge](<https://devfeed.tech/tags/merge.md>), [partition](<https://devfeed.tech/tags/partition.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [partitions](<https://devfeed.tech/tags/partitions.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [split](<https://devfeed.tech/tags/split.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

A PostgreSQL 19 development update describes the ALTER TABLE command for merging and splitting partitions. The patch was rolled back after earlier discussion, then recommitted; testing showed it worked as expected, with slightly less locking observed. Further changes may be needed before the feature reaches the final release.

### Source excerpt

Important update This has been rolled back after some discussion. On 14th of December 2025, Alexander Korotkov committed patch: Implement ALTER TABLE ... MERGE PARTITIONS ... command This new DDL command merges several partitions into a single partition of the target table. The target partition is created using the new createPartitionTable() function with the ... Continue reading "Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command"

## mac-volume: A CLI to control device volume

DevFeed: [mac-volume: A CLI to control device volume](<https://devfeed.tech/articles/mac-volume-a-cli-to-control-device-volume-39470.md>)

Original publisher: [Read original article](<https://akrabat.com/mac-volume-a-cli-to-control-device-volume/>)

Author: Rob

Published: 2025-10-07T10:00:00Z

Content type: article

Language: en

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

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [C](<https://devfeed.tech/topics/c.md>), [floating-point](<https://devfeed.tech/topics/floating-point.md>), [function](<https://devfeed.tech/topics/function.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [audio](<https://devfeed.tech/tags/audio.md>), [c](<https://devfeed.tech/tags/c.md>), [cli](<https://devfeed.tech/tags/cli.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [github](<https://devfeed.tech/tags/github.md>), [mac](<https://devfeed.tech/tags/mac.md>), [swift](<https://devfeed.tech/tags/swift.md>), [volume](<https://devfeed.tech/tags/volume.md>)

### AI overview

The article explains why Mac volume controls can be inconvenient when calls use a separate audio device. It describes a Swift command-line utility called mac-volume that uses Core Audio to control volume by device name, including listing devices and incrementing or decrementing volume, with integration through StreamDeck and Keyboard Maestro.

### Source excerpt

I've set my Mac up such that video calls such as Zoom use the microphone and earphones attached to my Behringer UMC204HD, which all other audio plays through the my normal speakers which are the default. One issue I have with this is that it's quite hard to change the volume when a call as the volume buttons on the Mac are connected to the default output. This finally annoyed me enough that I looked... continue reading.

## Running Cloudflare Workers Inside Spin Apps

DevFeed: [Running Cloudflare Workers Inside Spin Apps](<https://devfeed.tech/articles/running-cloudflare-workers-inside-spin-apps-15333.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/running-cloudflare-workers-inside-spin-apps>)

Author: Matt Butcher

Published: 2025-08-04T12:00:00Z

Content type: article

Language: en

Sources: [Fermyon - Experience the next wave of cloud computing.](<https://devfeed.tech/sources/fermyon-experience-the-next-wave-of-cloud-computing.md>)

Topics: [Cloudflare Workers](<https://devfeed.tech/topics/cloudflare-workers.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [function](<https://devfeed.tech/topics/function.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>)

Tags: [apps](<https://devfeed.tech/tags/apps.md>), [can](<https://devfeed.tech/tags/can.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [cloudflare-workers](<https://devfeed.tech/tags/cloudflare-workers.md>), [function](<https://devfeed.tech/tags/function.md>), [run](<https://devfeed.tech/tags/run.md>), [running](<https://devfeed.tech/tags/running.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [workers](<https://devfeed.tech/tags/workers.md>)

### AI overview

The article states that Cloudflare Workers are a type of serverless function and can run within Spin apps.

### Source excerpt

Cloudflare Workers are another flavor of serverless function. You can run them from within Spin apps.

## clamp / median / range

DevFeed: [clamp / median / range](<https://devfeed.tech/articles/clamp-median-range-36218.md>)

Original publisher: [Read original article](<https://dotat.at/@/2025-07-02-cmp.html>)

Published: 2025-07-02T01:33:08Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [iteration](<https://devfeed.tech/topics/iteration.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [function](<https://devfeed.tech/tags/function.md>), [languages](<https://devfeed.tech/tags/languages.md>), [sequence](<https://devfeed.tech/tags/sequence.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The article explores stylistic conventions for comparison operators, including chained comparisons, ordering values from least to greatest, and arranging clamp arguments to match that order. It then considers median-of-three implementations that are insensitive to argument order and proposes a speculative range syntax for pattern matching, iteration, and slicing.

### Source excerpt

Here are a few tangentially-related ideas vaguely near the theme of comparison operators. comparison style clamp style clamp is median clamp in range range style style clash? comparison style Some languages such as BCPL, Icon, Python have chained comparison operators, like if min <= x <= max: ... In languages without chained comparison, I like to write comparisons as if they were chained, like, if min <= x && x <= max { // ... } A rule of thumb is to prefer less than (or equal) operators and avoid greater than. In a sequence of comparisons, order values from (expected) least to greatest. clamp style The clamp() function ensures a value is between some min and max, def clamp(min, x, max): if x < min: return min if max < x: return max return x I like to order its arguments matching the expected order of the values, following my rule of thumb for comparisons - and the description of what clamp() does. (I used this flavour of clamp() in my article about GCRA.) But I seem to be unusual in this preference, based on a few examples I have seen recently. clamp is median Last month, Fabian Giesen pointed out a way to resolve this difference of opinion: A function that returns the median of three values is equivalent to a clamp() function that doesn't care about the order of its arguments. This version is written so that it returns NaN if any of its arguments is NaN. (When an argument is NaN, both of its comparisons will be false.) fn med3(a: f64, b: f64, c: f64) -> f64 { match (a <= b, b <= c, c <= a) { (false, false, false) => f64::NAN, (false, false, true) => b, // a > b > c (false, true, false) => a, // c > a > b (false, true, true) => c, // b <= c <= a (true, false, false) => c, // b > c > a (true, false, true) => a, // c <= a <= b (true, true, false) => b, // a <= b <= c (true, true, true) => b, // a == b == c } } When two of its arguments are constant, med3() should compile to the same code as a simple clamp(); but med3()'s misuse-resistance comes at a small cost when t

## 1000 Instances of flake-utils

DevFeed: [1000 Instances of flake-utils](<https://devfeed.tech/articles/1000-instances-of-flake-utils-32425.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/1000-instances-of-flake-utils/>)

Author: Marijan Petričević

Published: 2025-05-26T00:00:00Z

Content type: article

Language: en

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

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [function](<https://devfeed.tech/tags/function.md>), [guide](<https://devfeed.tech/tags/guide.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This article examines flake-utils as a dependency for reducing repetition when declaring Nix Flake outputs across systems. It discusses obscurity around default systems and argues that a simple custom function can often provide the needed behavior without flake-utils.

### Source excerpt

Let's look at flake-utils' hidden downsides! This guide quickly demystifies it through simple rewrite, offering insights you likely haven't encountered before.

## A satirical commentary on strategic ignorance in software work and leadership

DevFeed: [A satirical commentary on strategic ignorance in software work and leadership](<https://devfeed.tech/articles/what-is-code-37560.md>)

Original publisher: [Read original article](<https://colintheshots.com/writing/what-is-code/>)

Published: 2025-05-06T10:01:33Z

Content type: opinion

Language: en

Sources: [Colin The Shots](<https://devfeed.tech/sources/colin-the-shots.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [jira](<https://devfeed.tech/topics/jira.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.md>), [government](<https://devfeed.tech/tags/government.md>), [ide](<https://devfeed.tech/tags/ide.md>), [jira](<https://devfeed.tech/tags/jira.md>), [leadership](<https://devfeed.tech/tags/leadership.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

A satirical commentary argues that strategic ignorance can become a leadership style, applying the idea to software work through empty pull requests, riddling estimates, emotionally framed Jira tickets, and disengagement from technical understanding.

### Source excerpt

The President said this week that he isn't sure if he's supposed to uphold the Constitution or if it's all just historical fanfic. The State Department spokesperson said she doesn't know what Marco

## Function Types in Nix

DevFeed: [Function Types in Nix](<https://devfeed.tech/articles/function-types-in-nix-32422.md>)

Original publisher: [Read original article](<https://garnix.io/blog/typed-function-types>)

Published: 2024-08-27T00:00:00Z

Content type: article

Language: en

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

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [custom](<https://devfeed.tech/tags/custom.md>), [function](<https://devfeed.tech/tags/function.md>), [functions](<https://devfeed.tech/tags/functions.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

A short note about custom typing for functions in Nix.

### Source excerpt

A short note about custom typing for functions in Nix

## Mastering Nixpkgs Overlays: Techniques and Best Practice

DevFeed: [Mastering Nixpkgs Overlays: Techniques and Best Practice](<https://devfeed.tech/articles/mastering-nixpkgs-overlays-techniques-and-best-practice-32438.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/mastering-nixpkgs-overlays-techniques-and-best-practice/>)

Author: Jacek Galowicz

Published: 2024-08-01T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [function](<https://devfeed.tech/topics/function.md>), [monorepo](<https://devfeed.tech/topics/monorepo.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Fuzzing/Fuzz testing](<https://devfeed.tech/topics/fuzzing.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [function](<https://devfeed.tech/tags/function.md>), [fuzzing](<https://devfeed.tech/tags/fuzzing.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [patches](<https://devfeed.tech/tags/patches.md>), [systems](<https://devfeed.tech/tags/systems.md>), [techniques](<https://devfeed.tech/tags/techniques.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This tutorial explains how Nixpkgs overlays help compose package collections and build different package or system-image variants. It covers the problems overlays solve, how to apply them to package trees and system images, and positive and negative examples.

### Source excerpt

Overlays in Nixpkgs are a powerful mechanism, but they are also complex to grasp. We tell you everything you need to know about Nixpkgs overlays.

## Fixing the iterative damping interpolation in video games

DevFeed: [Fixing the iterative damping interpolation in video games](<https://devfeed.tech/articles/fixing-the-iterative-damping-interpolation-in-video-games-26115.md>)

Original publisher: [Read original article](<http://blog.pkh.me/p/41-fixing-the-iterative-damping-interpolation-in-video-games.html>)

Published: 2024-05-18T12:22:15Z

Content type: article

Language: en

Sources: [The Last Static Blog RSS](<https://devfeed.tech/sources/the-last-static-blog-rss.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [callback](<https://devfeed.tech/topics/callback.md>), [function](<https://devfeed.tech/topics/function.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [fps](<https://devfeed.tech/tags/fps.md>), [game](<https://devfeed.tech/tags/game.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [games](<https://devfeed.tech/tags/games.md>), [math](<https://devfeed.tech/tags/math.md>), [physics](<https://devfeed.tech/tags/physics.md>), [prog](<https://devfeed.tech/tags/prog.md>)

### AI overview

This article explains why repeatedly applying linear interpolation for damping can make game behavior depend on the refresh rate. Using Godot examples, it analyzes the iterative formula and motivates a frame-rate-independent solution.

### Source excerpt

As I'm exploring the fantastic world of indie game development lately, I end up watching a large number of video tutorials on the subject. Even though the quality of the content is pretty variable, I'm very grateful to the creators for it. That being said, I couldn't help noticing this particular bit times and times again: a = lerp(a, B, delta * RATE) Behind this apparent banal call hides a terrible curse, forever perpetrated by innocent souls on the Internet. In this article we will study what it's trying to achieve, how it works, why it's wrong, and then we'll come up with a good solution to the initial problem. The usual warning: I don't have a mathematics or academic background, so the article is addressed at other neanderthals like myself, who managed to understand that pressing keys on a keyboard make pixels turn on and off. What is it? Let's start from the beginning. We're in a game engine main loop callback called at a regular interval (roughly), passing down the time difference from the last call. In Godot engine, it looks like this: func _physics_process(delta: float): ... If the game is configured to refresh at 60 FPS, we can expect this function to be called around 60 times per second with delta = 1/60 = 0.01666.... As a game developer, we want some smooth animations for all kind of transformations. For example, we may want the speed of the player to go down to zero as they release the moving key. We could do that linearly, but to make the stop less brutal and robotic we want to slow down the speed progressively. Linear (top) versus smooth/exponential (bottom) animation Virtually every tutorial will suggest updating some random variable with something like that: velocity = lerp(velocity, 0, delta * RATE) At 60 FPS, a decay RATE defined to 3.5, and an initial velocity of 100, the velocity will go down to 0 following this curve: Example curve of a decaying variable Note velocity is just a variable name example, it can be found in many other contexts If you

## Kotlin/Wasm interop with Javascript - Gustavo Fão Valvassori

DevFeed: [Kotlin/Wasm interop with Javascript - Gustavo Fão Valvassori](<https://devfeed.tech/articles/kotlin-wasm-interop-with-javascript-gustavo-fao-valvassori-38285.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-wasm-js-interop>)

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

Content type: tutorial

Language: en

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

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

Tags: [functions](<https://devfeed.tech/tags/functions.md>), [interop](<https://devfeed.tech/tags/interop.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-wasm](<https://devfeed.tech/tags/kotlin-wasm.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [web-assembly](<https://devfeed.tech/tags/web-assembly.md>)

### AI overview

This tutorial explains bidirectional interoperability between Kotlin/Wasm and JavaScript. It covers calling JavaScript from Kotlin/Wasm, exposing Kotlin/Wasm functions to JavaScript, export limitations, name collisions, and using JavaScript-defined types and browser APIs.

### Source excerpt

Kotlin/Wasm provides a bi-directional interoperability between Kotlin and Javascript, allowing you to call functions on either side. Let's dive into the topic and explore its limitations and workarounds.

## Generics in Kotlin

DevFeed: [Generics in Kotlin](<https://devfeed.tech/articles/generics-in-kotlin-39335.md>)

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

Published: 2024-03-18T00:01:00Z

Content type: tutorial

Language: en

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

Topics: [generics](<https://devfeed.tech/topics/generics.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Type Parameter](<https://devfeed.tech/topics/type-parameter.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [kotlin compiler](<https://devfeed.tech/topics/kotlin-compiler.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [functions](<https://devfeed.tech/tags/functions.md>), [generics](<https://devfeed.tech/tags/generics.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [programming](<https://devfeed.tech/tags/programming.md>), [type-parameter](<https://devfeed.tech/tags/type-parameter.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how generics work in Kotlin. It covers generic functions, classes, and interfaces, including type parameters, type arguments, explicit specification, compiler inference, and relationships between argument and result types.

### Source excerpt

The essence of how generics work in Kotlin.

## Item 25: Each function should be written in terms of a single level of abstraction

DevFeed: [Item 25: Each function should be written in terms of a single level of abstraction](<https://devfeed.tech/articles/item-25-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-39291.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-single-layer-of-abstraction>)

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

Content type: tutorial

Language: en

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

Topics: [abstraction](<https://devfeed.tech/topics/abstraction.md>), [function](<https://devfeed.tech/topics/function.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [code](<https://devfeed.tech/tags/code.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [function](<https://devfeed.tech/tags/function.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [programming](<https://devfeed.tech/tags/programming.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The article explains why each function should be written at a single level of abstraction. It introduces abstraction layers from hardware and machine instructions through Assembly, compilers, and higher-level languages, arguing that well-separated layers reduce the need to understand lower-level implementation details.

### Source excerpt

Why each function should be written in terms of a single level of abstraction and how to achieve it.

## Exploring Health Connect pt. 3 - Updating and Deleting Data

DevFeed: [Exploring Health Connect pt. 3 - Updating and Deleting Data](<https://devfeed.tech/articles/exploring-health-connect-pt-3-updating-and-deleting-data-38472.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2024-01-28/exploring-health-connect-pt-3-updating-and-deleting-data/>)

Author: Eevis Panula

Published: 2025-06-11T04:24:54.677000Z

Content type: tutorial

Language: en

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

Topics: [data](<https://devfeed.tech/topics/data.md>), [App](<https://devfeed.tech/topics/app.md>), [function](<https://devfeed.tech/topics/function.md>), [ui](<https://devfeed.tech/topics/ui.md>), [enum](<https://devfeed.tech/topics/enum.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [data](<https://devfeed.tech/tags/data.md>), [function](<https://devfeed.tech/tags/function.md>), [ui](<https://devfeed.tech/tags/ui.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

This tutorial, the third and final post in a series, explains how to update and delete menstruation-period records in Health Connect. It shows the supporting changes in the Health Connect manager, view model, and UI, including refreshing records after updates and obtaining record identifiers for deletion.

### Source excerpt

I've been building a period tracking app for myself, and my other goal has been to explore Health Connect. There are already two blog posts in this series: Exploring Health Connect Pt. 1 - Setting Up Permissions Exploring Health Connect Pt. 2 - Reading and Writing Data This is the third (and last) blog post of the MVP version of this period tracker. We'll look into updating and deleting Health Connect data. After changes in this blog post, the app will look like this: So, let's start with allowing the user to update data. Update Records Updating records is pretty straightforward after the changes we made in the context of the last blog post. First, in Health Connect Manager, we add updateMenstruationRecords-function: // HealthConnectManager.kt suspend fun updateMenstruationRecords( menstruationPeriodRecord: MenstruationPeriodRecord ) { try { healthConnectClient.updateRecords( listOf(menstruationPeriodRecord), ) Toast.makeText(context, "Successfully updated records", Toast.LENGTH_SHORT).show() } catch (e: Exception) { Toast.makeText(context, e.message.toString(), Toast.LENGTH_SHORT).show() Log.e("Error", "Message: ${e.message}") } } It works the same way as writing - takes in a record, calls Health Connect Client's function updateRecords with a list of records, and then shows a toast message if an update is successful. Then, in the view model, we add a function to call updateMenstruationRecords in Health Connect Manager: // PeriodViewModel.kt fun updateMenstruationRecord( menstruationPeriodRecord: MenstruationPeriodRecord ) { viewModelScope.launch { tryWithPermissionsCheck { healthConnectManager .updateMenstruationRecords( menstruationPeriodRecord ) getPeriodRecords() } } } After a successful update, we re-read the records from Health Connect to update our UI as we did with the write-action. Then, in the UI layer, we don't need to modify the DateRangePickerDialog, as the functionality already returns an updated record when the user presses the "Save"-button. However,

## Exploring Health Connect Pt. 2 - Reading and Writing Data

DevFeed: [Exploring Health Connect Pt. 2 - Reading and Writing Data](<https://devfeed.tech/articles/exploring-health-connect-pt-2-reading-and-writing-data-38471.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2024-01-19/exploring-health-connect-pt-2-reading-and-writing-data/>)

Author: Eevis Panula

Published: 2025-06-11T04:24:50.059000Z

Content type: tutorial

Language: en

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

Topics: [implementation](<https://devfeed.tech/topics/implementation.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>), [function](<https://devfeed.tech/topics/function.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>)

### AI overview

A tutorial on reading and writing menstruation-period data with Health Connect while building a personal period-tracking app. It introduces Health Connect Toolbox for inspecting records and demonstrates a Kotlin function that requests records from the previous 12 months, reads them through the Health Connect client, and stores the results in a view model after checking permissions.

### Source excerpt

I've been building a period tracking app for myself with the help of Health Connect. Last week, I published the first blog post where I explained how to set up Health Connect and asked the user to give permission to use their data. I initially thought I'd write one blog post about building this app - now, it's turning into (at least) three. But I have to say that I've enjoyed this process a lot. This blog post will look into reading and writing data with Health Connect. There will be one more blog post about updating and deleting data before we get to the point where the app looks like in this video: Reading and Writing Data Before going into code, I want to mention one handy app: Health Connect Toolbox. With its help, you can write and read data from Health Connect, which helps debug issues like if the data was saved at all. Trust me, I know. Health Connect Toolbox also helps with the first task we're looking into: Reading records. If you don't have any other app writing that particular type of data to Health Connect, you can use the Health Connect Toolbox to write data and then see that data in your own app. Now, we have the permissions to read and write data from/to Health Connect, so we can add the implementation for those actions. Read Records The first action we're implementing is reading data. Let's start from the closest point to Health Connect: HealthConnectManager, which we defined in the previous blog post. We need a function to read data from Health Connect: // HealthConnectManager.kt suspend fun readMenstruationRecords(): List<MenstruationPeriodRecord> { val request = ReadRecordsRequest( recordType = MenstruationPeriodRecord::class, timeRangeFilter = TimeRangeFilter.after( LocalDateTime.now().minusMonths(12) ), ) val response = healthConnectClient.readRecords(request) return response.records } First, we define the request, which is ReadRecordsRequest. The type is MenstruationPeriodRecord::class, as we want to read menstruation period data from Health Co

## Kotlin Reflection: Type references

DevFeed: [Kotlin Reflection: Type references](<https://devfeed.tech/articles/kotlin-reflection-type-references-39216.md>)

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

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

Content type: tutorial

Language: en

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

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [example](<https://devfeed.tech/tags/example.md>), [generator](<https://devfeed.tech/tags/generator.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [practical](<https://devfeed.tech/tags/practical.md>), [type-argument](<https://devfeed.tech/tags/type-argument.md>), [type-parameter](<https://devfeed.tech/tags/type-parameter.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Kotlin reflection type references. It explains how types differ from classes, how type references expose nullability, type arguments, and classifiers, and how to use them in a random-value generator.

### Source excerpt

Using type references, with practical example of random value generator.

## Kotlin Reflection: Method and property references

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

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

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

Content type: tutorial

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

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