# Argument

Published articles for Argument.

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

## \[Crypto\] Time-based one-time password (TOTP) for 2FA, part I

DevFeed: [\[Crypto\] Time-based one-time password (TOTP) for 2FA, part I](<https://devfeed.tech/articles/crypto-time-based-one-time-password-totp-for-2fa-part-i-20550.md>)

Original publisher: [Read original article](<https://yurichev.com/blog/TOTP1/>)

Published: 2026-09-09T22:00:00Z

Content type: tutorial

Language: en

Sources: [Dennis Yurichev](<https://devfeed.tech/sources/dennis-yurichev.md>)

Topics: [passwords](<https://devfeed.tech/topics/passwords.md>), [QR Code](<https://devfeed.tech/topics/qrcode.md>), [Google](<https://devfeed.tech/topics/google.md>), [Python](<https://devfeed.tech/topics/python.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [App](<https://devfeed.tech/topics/app.md>), [email](<https://devfeed.tech/topics/email.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [app](<https://devfeed.tech/tags/app.md>), [argument](<https://devfeed.tech/tags/argument.md>), [backup](<https://devfeed.tech/tags/backup.md>), [code](<https://devfeed.tech/tags/code.md>), [crypto](<https://devfeed.tech/tags/crypto.md>), [env-file-security](<https://devfeed.tech/tags/env-file-security.md>), [github](<https://devfeed.tech/tags/github.md>), [google](<https://devfeed.tech/tags/google.md>), [password](<https://devfeed.tech/tags/password.md>), [protection](<https://devfeed.tech/tags/protection.md>), [python](<https://devfeed.tech/tags/python.md>), [run](<https://devfeed.tech/tags/run.md>), [server](<https://devfeed.tech/tags/server.md>), [smartphone](<https://devfeed.tech/tags/smartphone.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

This tutorial explains how time-based one-time passwords work for two-factor authentication. It covers importing a base32-encoded secret from a QR code into Google Authenticator, generating 6-digit login codes, and calculating them with HMAC-SHA-1 from the secret and Unix time. It also discusses backup codes and securely storing TOTP secrets separately from passwords.

### Source excerpt

[Crypto] Time-based one-time password (TOTP) for 2FA, part I

## How To Type Function Mocha Context With Cypress Aliases

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

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

Author: Gleb Bahmutov

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

Content type: tutorial

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Partial Function Application is coming in PHP 8.6

DevFeed: [Partial Function Application is coming in PHP 8.6](<https://devfeed.tech/articles/partial-function-application-is-coming-in-php-8-6-20473.md>)

Original publisher: [Read original article](<https://www.amitmerchant.com/partial-function-application-php-86/>)

Author: Amit Merchant

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

Content type: tutorial

Language: en

Sources: [Amit Merchant](<https://devfeed.tech/sources/amit-merchant.md>)

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

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [callback](<https://devfeed.tech/tags/callback.md>), [closure](<https://devfeed.tech/tags/closure.md>), [function](<https://devfeed.tech/tags/function.md>), [http](<https://devfeed.tech/tags/http.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [request](<https://devfeed.tech/tags/request.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial introduces Partial Function Application in PHP 8.6. It explains how placeholders create pre-configured Closures, covers multiple holes, named and variadic arguments, and shows a practical example for adding an Authorization header to HTTP requests.

### Source excerpt

Ever reach for a simple callback and end up writing a tiny novella--an arrow function stuffed with types, reordered parameters, and boilerplate just to pass one value through?

## Why Kafka and Postgres Serve Different Purposes

DevFeed: [Why Kafka and Postgres Serve Different Purposes](<https://devfeed.tech/articles/you-don-t-need-kafka-just-use-postgres-considered-harmful-18892.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/you-dont-need-kafka-just-use-postgres-considered-harmful/>)

Published: 2025-11-03T17:02:00Z

Content type: opinion

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [queue](<https://devfeed.tech/tags/queue.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>)

### AI overview

The article argues that Postgres and Kafka serve different purposes and that choosing between them should depend on the problem being solved. It challenges advice to use Postgres instead of Kafka, noting that Kafka is not primarily a queue and that building a robust queue on Postgres can introduce operational difficulties.

### Source excerpt

Looking to make it to the front page of HackerNews? Then writing a post arguing that "Postgres is enough", or why "you don't need Kafka at your scale" is a pretty failsafe way of achieving exactly that. No matter how often it has been discussed before, this topic is always doing well. And sure, what's not to love about that? I mean, it has it all: Postgres, everybody's most favorite RDBMS--check! Keeping things lean and easy--sure, count me in! A somewhat spicy take--bring it on!

## Nee je kan niet meer je overheid en maatschappij verhuizen naar Amerikaanse servers

DevFeed: [Nee je kan niet meer je overheid en maatschappij verhuizen naar Amerikaanse servers](<https://devfeed.tech/articles/nee-je-kan-niet-meer-je-overheid-en-maatschappij-verhuizen-naar-amerikaanse-servers-36493.md>)

Original publisher: [Read original article](<https://berthub.eu/articles/posts/nee-je-kan-niet-meer-je-overheid-bouwen-op-de-us/>)

Published: 2025-02-20T06:00:00Z

Content type: opinion

Language: nl

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

Topics: [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [servers](<https://devfeed.tech/topics/servers.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [autonomie](<https://devfeed.tech/tags/autonomie.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [google](<https://devfeed.tech/tags/google.md>), [servers](<https://devfeed.tech/tags/servers.md>)

### AI overview

The article argues that moving Dutch government and societal systems to American cloud providers creates unacceptable dependence on US goodwill and exposes weaknesses in legal and cost-based justifications. It specifically questions sending AIVD applicants' data to Google and disputes the claim that Google cannot see their IP addresses.

### Source excerpt

De hele korte versie: het is waanzin om onze maatschappij en overheid over te zetten op Amerikaanse clouds. Niet alleen is het een dom idee gezien wat de "Koning van Amerika" allemaal roept, de juridische fijnslijperij waarmee men dit rechtpraat, zoals bijvoorbeeld te vinden in deze onzinbrief van het kabinet gisteren, is inmiddels door Trump zelf ongeldig gemaakt. En waarom doen we dit? Gebruiksgemak. Maar het is heel eng om met dit argument je samenleving 24/7 afhankelijk te maken van de goeie wil van de Amerikanen.

## Neurodivergence and accountability in free software

DevFeed: [Neurodivergence and accountability in free software](<https://devfeed.tech/articles/neurodivergence-and-accountability-in-free-software-20800.md>)

Original publisher: [Read original article](<https://drewdevault.com/blog/Neurodivergence-and-accountability-in-free-software/>)

Author: September

Published: 2024-09-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Drew DeVault](<https://devfeed.tech/sources/drew-devault.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Fediverse](<https://devfeed.tech/topics/fediverse.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [article](<https://devfeed.tech/tags/article.md>), [community](<https://devfeed.tech/tags/community.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

The article argues that invoking Richard Stallman's alleged neurodivergence to excuse or explain problematic behavior is ableist and harmful to neurodivergent people. It examines how this defense relates to accountability, sexism, and norms in the free-software community, including responses gathered from neurodivergent people.

### Source excerpt

In November of last year, I wrote Richard Stallman's political discourse on sex, which argues that Richard Stallman, the founder of and present-day voting member of the board of directors of the Free Software Foundation (FSF), endorses and advocates for a harmful political agenda which legitimizes adult attraction to minors, consistently defends adults accused of and convicted of sexual crimes with respect to minors, and more generally erodes norms of consent and manipulates language regarding sexual harassment and sexual assault in his broader political program. In response to this article, and on many occasions when I have re-iterated my position on Stallman in other contexts, a common response is to assert that my calls to censure Stallman are ableist, on the basis that Stallman is neurodivergent (ND). This line of reasoning suggests that Stallman's awkward and zealous views on sex are in line with his awkward and zealous positions on other matters (such as his insistence on "GNU/Linux" terminology rather than "Linux"), and that together this illustrates a pattern which suggests neurodivergence is at play. This argumentation is flawed, but I think it presents us with a good opportunity to talk about how neurodivergence and sexism presents in our community. Neurodivergence (antonymous with "neurotypical") is an umbrella term that encompasses a wide variety of human experiences, including autism, ADHD, personality disorders, bipolar disorder, and others. The particular claims I've heard about Stallman suggest that he is "obviously" autistic, or has Asperger syndrome.1 The allegation of ableism in my criticisms of Stallman are rooted in this presumption of neurodivergence in Stallman: the argument goes that I am putting his awkwardness on display and mocking him for it, that calling for the expulsion of someone on the basis of being awkward is ableist, and that this has a chilling effect on our community, which is generally thought to have a high incidence of neurod

## How to create a parameterized base test class in Kotlin

DevFeed: [How to create a parameterized base test class in Kotlin](<https://devfeed.tech/articles/how-to-create-a-parameterized-base-test-class-in-kotlin-25575.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2023/parameterized-kotlin-base-test/>)

Author: Marco Gomiero

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

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

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

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [class](<https://devfeed.tech/tags/class.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains how to create a parameterized base test class in Kotlin using JUnit 4's Parameterized test runner. It describes defining test arguments in a companion object, accepting an argument in the base-class constructor, and having test classes reuse the shared setup while running with different arguments.

### Source excerpt

One exciting feature of JUnit 4 (and 5 as well, but this post will be focused on JUnit 4) is the possibility of running the same test with different input arguments. That is made possible by a custom test runner called Parameterized, which will inject the provided arguments in the constructor of the test class. Instead, the different arguments must be defined in the companion object of the test class.

## The Cloud is Not a Railroad - An Argument Against the Vertical Separation of Cloud Providers

DevFeed: [The Cloud is Not a Railroad - An Argument Against the Vertical Separation of Cloud Providers](<https://devfeed.tech/articles/the-cloud-is-not-a-railroad-an-argument-against-the-vertical-separation-of-cloud-providers-27899.md>)

Original publisher: [Read original article](<http://highscalability.com/blog/2022/10/24/the-cloud-is-not-a-railroad-an-argument-against-the-vertical.html>)

Author: HighScalability Team

Published: 2022-10-24T11:52:23Z

Content type: opinion

Language: en

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

Topics: [Cloud](<https://devfeed.tech/topics/cloud.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [platform](<https://devfeed.tech/tags/platform.md>), [providers](<https://devfeed.tech/tags/providers.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

An argument against vertically separating cloud providers. The article contends that structural separation would not solve the underlying problems and could limit the quality of software developers build by restricting the services cloud providers can offer.

### Source excerpt

There's a move to regulate cloud providers by vertically separating the services they offer. Like railroads of yore, who were not allowed to provide freight services on top of their base services, cloud providers would not be allowed to provide services on top of their base platform services. Vertical separation would be new to the cloud industry. Is it a good idea? Would it actually solve any problems? My answers are no and no, but probably not for the reasons you think. Let's dive in. Here are a few useful resources for exploring this argument: Maintaining monopolies with the cloud by Cory Doctorow. https://pluralistic.net/2022/09/28/other-peoples-computers. A group advocating for fair licensing. https://www.fairsoftwarelicensing.com/our-principles. Cloud Infrastructure Services -- An analysis of potentially anti-competitive practices by Professor Frédéric Jenny. https://www.fairsoftwarestudy.com/. Now Cory is about 100x times smarter than I am, but this analogy is wrong: That's why the trustbusters were so big on "structural separation": the principle that a business can own a platform or use the platform, but not both. So this remedy is also wrong: Rather than trying to construct rules that kept the referee honest even when they played on one of the teams, they ordered the companies to choose one role - either you were the ref, or you were a player, but you couldn't referee a match where you were also in the competition. Because this idea, while trivially true, misses the point: There is no cloud, there is only other people's computers. This is like saying there is no human body, it's just a collection of cells. While true, it is the lesser truth that fails to recognize the importance of the body, organs, and the adaptive function of the brain. That's what a cloud provider is; it's the body electric for the cloud. The report by Professor Jenny seems to be the main support for cleaving cloud providers in two. I've read the report. Is there a smoking gun? Not that

## Essential programming nomenclature

DevFeed: [Essential programming nomenclature](<https://devfeed.tech/articles/essential-programming-nomenclature-39367.md>)

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

Published: 2022-08-11T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Java](<https://devfeed.tech/topics/java.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [type](<https://devfeed.tech/tags/type.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

An explanatory guide to essential programming terminology, including variables, functions, parameters, arguments, values, objects, statements, expressions, classes, constructors, types, and code elements.

### Source excerpt

Find out what you need to know, before you start writing documentations, books or articles about programming.

## Functions

DevFeed: [Functions](<https://devfeed.tech/articles/functions-25056.md>)

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

Author: author@typealias.com (Dave Leeds)

Published: 2020-04-07T00: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>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.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>), [parameter](<https://devfeed.tech/tags/parameter.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

A Kotlin tutorial chapter introduces functions as a way to calculate the circumference of circles of different sizes without repeating the same code.

### Source excerpt

In the last chapter, we wrote some Kotlin code to calculate the circumference of individual circles. Once we start calculating the circumference of many circles of different sizes, we can easily end up writing the same code over and over again. In this chapter, we're going to write functions, which will make it easy to calculate the circumference of any circle--without repeating ourselves! Introduction to Functions In the last chapter, we saw that it's easy to calculate the circumference of a circle.

## Parameters and Arguments: An Easy Way to Remember the Difference

DevFeed: [Parameters and Arguments: An Easy Way to Remember the Difference](<https://devfeed.tech/articles/parameters-and-arguments-an-easy-way-to-remember-the-difference-25042.md>)

Original publisher: [Read original article](<https://typealias.com/guides/parameters-arguments/>)

Author: author@typealias.com (Dave Leeds)

Published: 2018-06-27T00: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: [generics](<https://devfeed.tech/topics/generics.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [article](<https://devfeed.tech/tags/article.md>), [generics](<https://devfeed.tech/tags/generics.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mnemonic](<https://devfeed.tech/tags/mnemonic.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [programming](<https://devfeed.tech/tags/programming.md>), [type-argument](<https://devfeed.tech/tags/type-argument.md>), [type-parameter](<https://devfeed.tech/tags/type-parameter.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

A tutorial explaining the difference between parameters and arguments in functions and generic classes. Parameters are used inside definitions, while arguments are supplied outside them; the article also discusses Kotlin type inference.

### Source excerpt

If you've ever had trouble remembering the difference between parameters and arguments, today's article is for you! Understanding this distinction can help when we're talking about functions, and it can help even more when we're talking about generics. Parameters and Arguments - the TL;DR It's a parameter when you're inside the definition. It's an argument when you're outside the definition. The easiest way to recall the difference between the two is to associate the word argument with the word outside, by remembering this phrase:

## Higher-Order Function

DevFeed: [Higher-Order Function](<https://devfeed.tech/articles/higher-order-function-25016.md>)

Original publisher: [Read original article](<https://typealias.com/concepts/higher-order-function/>)

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: [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [class](<https://devfeed.tech/tags/class.md>), [function](<https://devfeed.tech/tags/function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [product](<https://devfeed.tech/tags/product.md>), [programming](<https://devfeed.tech/tags/programming.md>), [val](<https://devfeed.tech/tags/val.md>), [widget](<https://devfeed.tech/tags/widget.md>)

### AI overview

This article explains that a higher-order function accepts a function as an argument, returns a function as a result, or does both, with Kotlin examples including calculateCost() and getDiscount().

### Source excerpt

A higher-order function is a function does at least one of these: It accepts a function as an argument It returns a function as a result Kotlin supports higher-order functions. In the following example, calculateCost() accepts a function as an argument, and getDiscount() returns a function as a result. Example class Product(val name: String, val price: Double) val shippingCost = 4.0 val taxRate = 0.08 fun main(args: Array<String>) { val product = Product("Widget", 10.

## First-Class Function

DevFeed: [First-Class Function](<https://devfeed.tech/articles/first-class-function-25013.md>)

Original publisher: [Read original article](<https://typealias.com/concepts/first-class-function/>)

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: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [class](<https://devfeed.tech/tags/class.md>), [examples](<https://devfeed.tech/tags/examples.md>), [function](<https://devfeed.tech/tags/function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [reference](<https://devfeed.tech/tags/reference.md>)

### AI overview

This article explains first-class functions in Kotlin. It covers assigning functions to variables, passing functions as arguments, and returning functions as results, with examples using anonymous functions, lambdas, and function references.

### Source excerpt

A programming language that supports first-class functions allows you to: Assign a function to a variable Pass a function to another function as an argument Return a function from another function as a result Kotlin allows you to do all three of these. Assigning Functions There are a few different ways that you can assign a function to a variable in Kotlin. Anonymous Function val add = fun(a: Int, b: Int) = a + b Lambda val subtract = { a: Int, b: Int -> a - b } Function Reference If the method already exists, you can assign it by means of a function reference

## Two Perspectives on the End-to-End Principle

DevFeed: [Two Perspectives on the End-to-End Principle](<https://devfeed.tech/articles/two-perspectives-on-the-end-to-end-principle-21951.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/end-to-end-principle/>)

Author: Nelson Elhage

Published: 2017-06-11T20:42:01Z

Content type: opinion

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Complex Systems](<https://devfeed.tech/topics/complex-systems.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [complex-systems](<https://devfeed.tech/tags/complex-systems.md>), [perspectives](<https://devfeed.tech/tags/perspectives.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [systems-engineering](<https://devfeed.tech/tags/systems-engineering.md>)

### AI overview

The article reflects on the end-to-end principle as a general systems-design heuristic. It explains that functions such as correctness may be better handled at the ends of a system rather than at every lower-level interface, and questions whether complex systems can be made correct simply by composing correct subsystems.

### Source excerpt

Back when I was an undergraduate, as part of a class called "Computer Systems Engineering", we read numerous classic papers of systems design. I enjoyed and learned a great deal from many of these papers, but one that paper that has stuck with me in particular was Saltzer et al's "End-to-End Arguments in Systems Design". The paper is a very general tract on systems design - it does explore several examples of concrete systems or applications, but it ultimately expounds upon the end-to-end principle as a perspective or design heuristic that can apply to virtually any system design.

## Process descriptors in FreeBSD-Capsicum

DevFeed: [Process descriptors in FreeBSD-Capsicum](<https://devfeed.tech/articles/process-descriptors-in-freebsd-capsicum-21555.md>)

Original publisher: [Read original article](<http://lackingrhoticity.blogspot.com/2010/10/process-descriptors-in-freebsd-capsicum.html>)

Author: Mark Seaborn (noreply@blogger.com)

Published: 2010-10-23T15:10:00Z

Content type: opinion

Language: en

Sources: [Mark Seaborn](<https://devfeed.tech/sources/mark-seaborn.md>)

Topics: [Processes](<https://devfeed.tech/topics/processes.md>), [POSIX](<https://devfeed.tech/topics/posix.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [fork](<https://devfeed.tech/tags/fork.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [memory](<https://devfeed.tech/tags/memory.md>), [posix](<https://devfeed.tech/tags/posix.md>), [process](<https://devfeed.tech/tags/process.md>), [processes](<https://devfeed.tech/tags/processes.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [sandbox](<https://devfeed.tech/tags/sandbox.md>), [signal](<https://devfeed.tech/tags/signal.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

The article examines Capsicum process descriptors in FreeBSD. It explains how pdfork(), pdwait(), and pdkill() replace PID-based process operations with file-descriptor-based operations, improving delegation, polling, and protection against PID-reuse race conditions. It also criticizes the design in which closing the last process descriptor terminates the process.

### Source excerpt

Capsicum is a set of new features for FreeBSD that adds better support for sandboxing, adding a capability mode in which the capabilities are Unix file descriptors (FDs). The features Capsicum adds are orthogonal, which is nice. One of the new features is process descriptors. Capsicum adds a replacement for fork() called pdfork(), which returns a process descriptor (a new type of FD) rather than a PID. Similarly, there are replacements for wait() and kill() -- pdwait() and pdkill() -- which take FDs as arguments instead of PIDs. The reason for the new interface is that kill() is not safe to allow in Capsicum's sandbox, because it provides ambient authority: it looks up its PID argument in a global namespace. But even if you ignore sandboxing issues, this new interface is a significant improvement on POSIX process management: It allows the ability to wait on a process to be delegated to another process. In contrast, with wait()/waitpid(), a process's exit status can only be read by the process's parent. Process descriptors can be used with poll(). This avoids the awkwardness of having to use SIGCHLD, which doesn't work well if multiple libraries within the same process want to wait() for child processes. It gets rid of the race condition associated with kill(). Sending a signal to a PID is dodgy because the original process with this PID could have exited, and the kernel could have recycled the PID for an unrelated process, especially on a system where processes are spawned and exit frequently. kill() is only really safe when used by a parent process on its child, and only when the parent makes sure to use it before wait() has returned the child's exit status. pdkill() gets rid of this problem. In future, process descriptors can be extended to provide access to the process's internal state for debugging purposes, e.g. for reading registers and memory, or modifying memory mappings or the FD table. This would be an improvement on Linux's ptrace() interface. However, th