# Parameter

Published articles for Parameter.

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

## Vertical Small LLMs: A Deep Dive

DevFeed: [Vertical Small LLMs: A Deep Dive](<https://devfeed.tech/articles/vertical-small-llms-a-deep-dive-17913.md>)

Original publisher: [Read original article](<https://newsletter.systemdesign.one/p/fine-tuning-small-language-models>)

Author: Neo Kim

Published: 2026-08-03T10:27:31Z

Content type: tutorial

Language: en

Sources: [System Design Newsletter](<https://devfeed.tech/sources/system-design-newsletter.md>)

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [llms](<https://devfeed.tech/tags/llms.md>), [model](<https://devfeed.tech/tags/model.md>), [models](<https://devfeed.tech/tags/models.md>), [parameter](<https://devfeed.tech/tags/parameter.md>)

### AI overview

A deep dive into vertical small language models, including how a fine-tuned 3-billion-parameter model can outperform frontier models for a specific job and how to build one.

### Source excerpt

#166: How a fine-tuned 3-billion-parameter model beats today's frontier models at one job, and how to build one this weekend

## Tap Detection on Arbitrary Shapes with Compose

DevFeed: [Tap Detection on Arbitrary Shapes with Compose](<https://devfeed.tech/articles/tap-detection-on-arbitrary-shapes-with-compose-25609.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2025/arbitrary-shape-tap-detection/>)

Author: Romain Guy

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

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developer](<https://devfeed.tech/tags/developer.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [image](<https://devfeed.tech/tags/image.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

This tutorial explains how to use Jetpack Compose's PathHitTester API to detect taps and test whether 2D coordinates lie inside arbitrary paths. It covers coordinate transformations, efficient repeated hit testing, updating the tester after path changes, and generating paths from images with the pathway library.

### Source excerpt

Detecting whether a user tapped on an arbitrary shape represented by a Path is an unfortunately difficult task on Android. The Path class does not offer any API to do this, and the workaround I have seen folks use (representing the tap as a small rectangle/circle and computing the intersection with the test shape) is inefficient and sometimes fails. Thankfully, Jetpack Compose a simple way to perform this task. The video below shows how the Compose APIs can be used to detect taps, or generally perform any test requiring to check whether a specific 2D coordinate is contained inside a Path:

## Create animated stripes in Jetpack Compose

DevFeed: [Create animated stripes in Jetpack Compose](<https://devfeed.tech/articles/create-animated-stripes-in-jetpack-compose-25770.md>)

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

Author: sinasamaki

Published: 2025-12-05T18:11:39Z

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

Tags: [app](<https://devfeed.tech/tags/app.md>), [article](<https://devfeed.tech/tags/article.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [design](<https://devfeed.tech/tags/design.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [learn](<https://devfeed.tech/tags/learn.md>), [list](<https://devfeed.tech/tags/list.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [repeat](<https://devfeed.tech/tags/repeat.md>), [rotation](<https://devfeed.tech/tags/rotation.md>)

### AI overview

A tutorial on creating and animating repeating stripe patterns in Jetpack Compose using gradients, color stops, tiling, offsets, and a helper function based on weighted colors, repetition width, and angle.

### Source excerpt

Use default gradients to create mesmerizing patterns in your app

## 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?

## SOTA OCR with Core ML and dots.ocr

DevFeed: [SOTA OCR with Core ML and dots.ocr](<https://devfeed.tech/articles/sota-ocr-with-core-ml-and-dots-ocr-7174.md>)

Original publisher: [Read original article](<https://huggingface.co/blog/dots-ocr-ne>)

Author: Christopher Fleetwood; Pedro Cuenca

Published: 2025-10-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Hugging Face - Blog](<https://devfeed.tech/sources/hugging-face-blog.md>)

Topics: [MLX](<https://devfeed.tech/topics/mlx.md>), [PyTorch](<https://devfeed.tech/topics/pytorch.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [battery](<https://devfeed.tech/tags/battery.md>), [coreml](<https://devfeed.tech/tags/coreml.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [developers](<https://devfeed.tech/tags/developers.md>), [framework](<https://devfeed.tech/tags/framework.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [high-performance](<https://devfeed.tech/tags/high-performance.md>), [images](<https://devfeed.tech/tags/images.md>), [mlx](<https://devfeed.tech/tags/mlx.md>), [model](<https://devfeed.tech/tags/model.md>), [ocr](<https://devfeed.tech/tags/ocr.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [precision](<https://devfeed.tech/tags/precision.md>), [pytorch](<https://devfeed.tech/tags/pytorch.md>), [repo](<https://devfeed.tech/tags/repo.md>), [tools](<https://devfeed.tech/tags/tools.md>), [vision](<https://devfeed.tech/tags/vision.md>)

### AI overview

This tutorial explains how to convert dots.ocr from PyTorch to Core ML for on-device execution on Apple hardware. It discusses the roles of the Neural Engine, GPU, MLX, and Core ML, then outlines a staged conversion process beginning with GPU execution, FLOAT32 precision, and static shapes.

### Source excerpt

We're on a journey to advance and democratize artificial intelligence through open source and open science.

## Repeater Strike: manual testing, amplified

DevFeed: [Repeater Strike: manual testing, amplified](<https://devfeed.tech/articles/repeater-strike-manual-testing-amplified-7694.md>)

Original publisher: [Read original article](<https://portswigger.net/research/repeater-strike-manual-testing-amplified>)

Author: Gareth Heyes

Published: 2025-07-15T13:46:37Z

Content type: article

Language: en

Sources: [PortSwigger Research](<https://devfeed.tech/sources/portswigger-research.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Extension](<https://devfeed.tech/topics/extension.md>), [Regular expression](<https://devfeed.tech/topics/regular-expression.md>), [JSON](<https://devfeed.tech/topics/json.md>), [API keys](<https://devfeed.tech/topics/api-keys.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-models](<https://devfeed.tech/tags/ai-models.md>), [extension](<https://devfeed.tech/tags/extension.md>), [json](<https://devfeed.tech/tags/json.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [re](<https://devfeed.tech/tags/re.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

This article introduces Repeater Strike, an AI-powered Burp Suite extension that automates vulnerability hunting from Repeater traffic. It analyzes requests and responses, generates regular expressions, scans proxy history for related IDOR and similar vulnerabilities, and validates findings before creating reusable Strike Rules.

### Source excerpt

Manual testing doesn't have to be repetitive. In this post, we're introducing Repeater Strike - a new AI-powered Burp Suite extension designed to automate the hunt for IDOR and similar vulnerabilities

## Mistral Saba

DevFeed: [Mistral Saba](<https://devfeed.tech/articles/mistral-saba-7075.md>)

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

Published: 2025-02-17T14:00:00Z

Content type: news

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Language models](<https://devfeed.tech/topics/language-models.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [API](<https://devfeed.tech/topics/api.md>), [GPU](<https://devfeed.tech/topics/gpu.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [arabic](<https://devfeed.tech/tags/arabic.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [datasets](<https://devfeed.tech/tags/datasets.md>), [financial](<https://devfeed.tech/tags/financial.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [healthcare](<https://devfeed.tech/tags/healthcare.md>), [language](<https://devfeed.tech/tags/language.md>), [language-models](<https://devfeed.tech/tags/language-models.md>), [mistral](<https://devfeed.tech/tags/mistral.md>), [models](<https://devfeed.tech/tags/models.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [responses](<https://devfeed.tech/tags/responses.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [train](<https://devfeed.tech/tags/train.md>)

### AI overview

Mistral Saba is a 24B-parameter regional language model trained on curated datasets from the Middle East and South Asia. It supports Arabic and several Indian-origin languages, can be accessed through an API or deployed locally, and is designed for fast, lower-cost responses on single-GPU systems.

### Source excerpt

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

## Limit the Scope of Git Diff

DevFeed: [Limit the Scope of Git Diff](<https://devfeed.tech/articles/limit-the-scope-of-git-diff-11136.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/02/limit-scope-git-diff/>)

Published: 2025-02-17T06:41:00Z

Content type: tutorial

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [Regular expression](<https://devfeed.tech/topics/regular-expression.md>), [BGP](<https://devfeed.tech/topics/bgp.md>)

Tags: [display](<https://devfeed.tech/tags/display.md>), [expression](<https://devfeed.tech/tags/expression.md>), [files](<https://devfeed.tech/tags/files.md>), [flag](<https://devfeed.tech/tags/flag.md>), [git](<https://devfeed.tech/tags/git.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [tests](<https://devfeed.tech/tags/tests.md>), [time](<https://devfeed.tech/tags/time.md>), [worth-reading](<https://devfeed.tech/tags/worth-reading.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

This article explains how to use Git diff options to identify meaningful changes in YAML-based netlab integration test results when timestamps and version metadata make ordinary diffs noisy. It discusses filtering diffs with a regular expression and limiting output to files or test suites containing relevant changes.

### Source excerpt

The results of netlab integration tests are stored in YAML files, making it easy to track changes improvements with Git. However, once I added the time of test and netlab version to the test results, I could no longer use git diff to figure out which test results changed after a test run - everything changed. For example, these are partial test results from the OSPFv2 tests: Read more ...

## netlab: How do I Specify VLAN Interface Parameters

DevFeed: [netlab: How do I Specify VLAN Interface Parameters](<https://devfeed.tech/articles/netlab-how-do-i-specify-vlan-interface-parameters-11088.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2024/10/netlab-vlan-interface-parameters/>)

Published: 2024-10-28T05:53:00Z

Content type: tutorial

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

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

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [github](<https://devfeed.tech/tags/github.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [parameter](<https://devfeed.tech/tags/parameter.md>)

### AI overview

This article explains how to specify VLAN interface parameters in netlab. Parameters should be defined in the node's VLAN definition, such as setting an OSPF cost for one node's VLAN interface. Copying parameters from the first VLAN link is discouraged, and some related bugs are being fixed.

### Source excerpt

Similarly to how it handles VRFs, netlab automatically creates VLANs on a lab device if the device uses them on any access- or trunk link or if the VLAN is mentioned in the node vlans dictionary. If the VLAN is an IRB VLAN (which can be modified globally or per node with the VLAN mode parameter), netlab also creates the VLAN (or SVI, or BVI) interface. But how do you specify the parameters of the VLAN interface? Read more ...

## 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

## SharedFlow vs StateFlow

DevFeed: [SharedFlow vs StateFlow](<https://devfeed.tech/articles/sharedflow-vs-stateflow-39374.md>)

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

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

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [backend](<https://devfeed.tech/tags/backend.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [messages](<https://devfeed.tech/tags/messages.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [progress](<https://devfeed.tech/tags/progress.md>), [service](<https://devfeed.tech/tags/service.md>), [sharedflow](<https://devfeed.tech/tags/sharedflow.md>), [state](<https://devfeed.tech/tags/state.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [users](<https://devfeed.tech/tags/users.md>), [value](<https://devfeed.tech/tags/value.md>), [websocket](<https://devfeed.tech/tags/websocket.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains the distinction between Kotlin's StateFlow and SharedFlow. StateFlow represents observable application state, while SharedFlow broadcasts events to observers. It discusses replay, required initial values, distinct updates, conflation, and examples for Android and backend services.

### Source excerpt

When to use SharedFlow and when to use StateFlow.

## Avoid the Long Parameter List

DevFeed: [Avoid the Long Parameter List](<https://devfeed.tech/articles/avoid-the-long-parameter-list-23855.md>)

Original publisher: [Read original article](<http://testing.googleblog.com/2024/05/avoid-long-parameter-list.html>)

Author: Google Testing Bloggers (noreply@blogger.com)

Published: 2024-05-20T13:42:00Z

Content type: tutorial

Language: en

Sources: [Google Testing Blog](<https://devfeed.tech/sources/google-testing-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Java](<https://devfeed.tech/topics/java.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [code-health](<https://devfeed.tech/tags/code-health.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [gene-volovich](<https://devfeed.tech/tags/gene-volovich.md>), [google](<https://devfeed.tech/tags/google.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [language](<https://devfeed.tech/tags/language.md>), [list](<https://devfeed.tech/tags/list.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [post](<https://devfeed.tech/tags/post.md>), [python](<https://devfeed.tech/tags/python.md>), [series](<https://devfeed.tech/tags/series.md>), [tott](<https://devfeed.tech/tags/tott.md>)

### AI overview

This Google Code Health article explains how long parameter lists make method calls difficult to understand and maintain. It recommends grouping related parameters into meaningful value objects, with language-specific options including Java records, Kotlin data classes, C++ option structs, Python keyword arguments and defaults, and the Java Builder pattern.

### Source excerpt

This is another post in our Code Health series. A version of this post originally appeared in Google bathrooms worldwide as a Google Testing on the Toilet episode. You can download a printer-friendly version to display in your office. By Gene Volovich Have you seen code like this? void transform(String fileIn, String fileOut, String separatorIn, String separatorOut); This seems simple enough, but it can be difficult to remember the parameter ordering. It gets worse if you add more parameters (e.g., to specify the encoding, or to email the resulting file): void transform(String fileIn, String fileOut, String separatorIn, String separatorOut, String encoding, String mailTo, String mailSubject, String mailTemplate); To make the change, will you add another (overloaded) transform method? Or add more parameters to the existing method, and update every single call to transform? Neither seems satisfactory. One solution is to encapsulate groups of the parameters into meaningful objects. The CsvFile class used here is a "value object" -- simply a holder for the data. class CsvFile { CsvFile(String filename, String separator, String encoding) { ... } String filename() { return filename; } String separator() { return separator; } String encoding() { return encoding; } } // ... and do the same for the EmailMessage class void transform(CsvFile src, CsvFile target, EmailMessage resultMsg) { ... } How to define a value object varies by language. For example, in Java, you can use a record class, which is available in Java 16+ (for older versions of Java, you can use AutoValue to generate code for the value object); in Kotlin, you can use a data class; in C++, you can use an option struct. Using a value object this way may still result in a long parameter list when instantiating it. Solutions for this vary by language. For example, in Python, you can use keyword arguments and default parameter values to shorten the parameter list; in Java, one option is to use the Builder pattern, wh

## Extending an Interactive ADB 🔀

DevFeed: [Extending an Interactive ADB 🔀](<https://devfeed.tech/articles/extending-an-interactive-adb-26171.md>)

Original publisher: [Read original article](<https://zarah.dev/2023/09/21/adb-devices.html>)

Author: Zarah Dominguez

Published: 2023-09-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Zarah Dominguez](<https://devfeed.tech/sources/zarah-dominguez.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Script](<https://devfeed.tech/topics/script.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [commands](<https://devfeed.tech/tags/commands.md>), [devices](<https://devfeed.tech/tags/devices.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [script](<https://devfeed.tech/tags/script.md>), [usb](<https://devfeed.tech/tags/usb.md>)

### AI overview

This tutorial extends an interactive ADB script that helps choose among multiple attached devices when running commands. It addresses counting unauthorized devices and explores passing command stubs as arguments or making the script retrieve a serial number for reuse across commands.

### Source excerpt

A few weeks ago, I wrote about a script for making adb a little bit more interactive. The script makes the process of running an adb command much smoother if there are multiple devices attached by presenting a chooser. For example, when sending a deeplink: ➜ ~ deeplink https://zarah.dev Multiple devices found: 1 - R5CR7039LBJ 2 - emulator-5554 3 - emulator-5556 Select device:

## Understanding Flow

DevFeed: [Understanding Flow](<https://devfeed.tech/articles/understanding-flow-39242.md>)

Original publisher: [Read original article](<https://kt.academy/article/cc-understanding-flow>)

Published: 2023-05-29T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [interface](<https://devfeed.tech/topics/interface.md>), [function](<https://devfeed.tech/topics/function.md>), [object](<https://devfeed.tech/topics/object.md>), [Parameter](<https://devfeed.tech/topics/parameter.md>), [Type Parameter](<https://devfeed.tech/topics/type-parameter.md>)

Tags: [coroutines](<https://devfeed.tech/tags/coroutines.md>), [function](<https://devfeed.tech/tags/function.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [object](<https://devfeed.tech/tags/object.md>), [parameter](<https://devfeed.tech/tags/parameter.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 Kotlin Coroutines Flow by deriving its implementation from a suspending lambda, then introducing a functional interface, receiver, object expression, builder function, and generic type parameter. It concludes that the basic builder closely models how flow, emit, and collect are implemented.

### Source excerpt

We will explore how flow and its processing really works.

## Writing an HTTP handler function in Go

DevFeed: [Writing an HTTP handler function in Go](<https://devfeed.tech/articles/writing-an-http-handler-function-in-go-22210.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2023/01/writing-an-http-handler-function-in-go.html>)

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

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [API](<https://devfeed.tech/topics/api.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [docker](<https://devfeed.tech/tags/docker.md>), [function](<https://devfeed.tech/tags/function.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [handler](<https://devfeed.tech/tags/handler.md>), [healthcheck](<https://devfeed.tech/tags/healthcheck.md>), [http](<https://devfeed.tech/tags/http.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [interface](<https://devfeed.tech/tags/interface.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [route](<https://devfeed.tech/tags/route.md>), [routing](<https://devfeed.tech/tags/routing.md>), [webservice](<https://devfeed.tech/tags/webservice.md>)

### AI overview

This video tutorial explains how Go function types can define API contracts and demonstrates implementing an HTTP handler function for a health check. It covers HandlerFunc parameters, routing the handler, and common pitfalls.

### Source excerpt

Introduction When an API requires implementation details from the user, many developers use an interface for help. However, another way to allow developers to provide implementation details for an API is to accept a function instead. Go supports declaring function types which can be used to define a contract similar to how interfaces define a contract. A good example of an API that uses functions over an interface is the HTTP package. The HTTP package has the user bind a handler function into different routes.

## Your first program in Kotlin

DevFeed: [Your first program in Kotlin](<https://devfeed.tech/articles/your-first-program-in-kotlin-39332.md>)

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

Published: 2023-01-10T00:01: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>), [function](<https://devfeed.tech/topics/function.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Java](<https://devfeed.tech/topics/java.md>), [Parameter](<https://devfeed.tech/topics/parameter.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ide](<https://devfeed.tech/tags/ide.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [java](<https://devfeed.tech/tags/java.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [playground](<https://devfeed.tech/tags/playground.md>), [run](<https://devfeed.tech/tags/run.md>), [templates](<https://devfeed.tech/tags/templates.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A beginner Kotlin tutorial that explains how to write and run a minimal program, use IntelliJ live templates, and investigate how Kotlin code is compiled for the JVM.

### Source excerpt

How to write your first program, how can we use it in real-life projects, and how to explore what Kotlin is compiled to.

## Functions in Kotlin

DevFeed: [Functions in Kotlin](<https://devfeed.tech/articles/functions-in-kotlin-39334.md>)

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

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

Content type: tutorial

Language: en

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

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [functions](<https://devfeed.tech/tags/functions.md>), [generics](<https://devfeed.tech/tags/generics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A Kotlin tutorial explaining functions as core program building blocks, including function definitions and calls, naming conventions, parameters and return types, backticks for names, single-expression syntax, and inferred result types.

### Source excerpt

Learn about what functions can offer us in Kotlin.

## 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.

## Lazy layouts contentPadding

DevFeed: [Lazy layouts contentPadding](<https://devfeed.tech/articles/lazy-layouts-contentpadding-22661.md>)

Original publisher: [Read original article](<https://www.valueof.io/blog/lazy-layouts-lazyrow-lazycolumn-contentpadding-compose>)

Author: James Shvarts

Published: 2022-05-22T12:57:51Z

Content type: tutorial

Language: en

Sources: [Android Blog - Mobile Dev Notes](<https://devfeed.tech/sources/android-blog-mobile-dev-notes.md>)

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [issue](<https://devfeed.tech/tags/issue.md>), [layout](<https://devfeed.tech/tags/layout.md>), [padding](<https://devfeed.tech/tags/padding.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [recyclerview](<https://devfeed.tech/tags/recyclerview.md>)

### AI overview

A Compose tutorial explains how to use contentPadding in lazy layouts so the first and last items receive padding without clipping the items between them. It contrasts contentPadding with padding and identifies clipping caused by using padding on the layout.

### Source excerpt

Controlling padding for first and last item in a lazy layout in Compose

## Hands on Jetpack Compose VisualTransformation to create a phone number formatter

DevFeed: [Hands on Jetpack Compose VisualTransformation to create a phone number formatter](<https://devfeed.tech/articles/hands-on-jetpack-compose-visualtransformation-to-create-a-phone-number-formatter-25943.md>)

Original publisher: [Read original article](<https://medium.com/google-developer-experts/hands-on-jetpack-compose-visualtransformation-to-create-a-phone-number-formatter-99b0347fc4f6?source=rss-cbfc736ddcd3------2>)

Author: Julien Salvi

Published: 2021-12-21T15:05:42Z

Content type: tutorial

Language: en

Sources: [Stories by Julien Salvi on Medium](<https://devfeed.tech/sources/stories-by-julien-salvi-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [aircall](<https://devfeed.tech/tags/aircall.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [component](<https://devfeed.tech/tags/component.md>), [compose](<https://devfeed.tech/tags/compose.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [filter](<https://devfeed.tech/tags/filter.md>), [function](<https://devfeed.tech/tags/function.md>), [google](<https://devfeed.tech/tags/google.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [transformation](<https://devfeed.tech/tags/transformation.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to use Jetpack Compose's VisualTransformation to format phone-number input for international display. It covers the filter() function, TransformedText, and OffsetMapping for mapping positions between original and transformed text.

### Source excerpt

At Aircall, we are currently rewriting our design system with Jetpack Compose, the new UI framework made by Google. One of our UI component is a text input that formats a phone number to its international format according to its origin country. With the View UI toolkit, we can use a PhoneNumberFormattingTextWatcher, which is available since API 1, to format the input text. But no equivalent has been implemented with Jetpack Compose so far. In this article we are going to cover how we managed to create a reliable alternative for Compose with VisualTransformation. VisualTransformation explained First, let's have a look at the VisualTransformation interface to understand how it works under the hood and how you can use it to format the input text of a TextField as you wish. https://medium.com/media/bb42609ef6212c4b0f63f06f83c0534c/href In order to filter the text, you will need to implement the filter() function which takes the original text to transform as a parameter and returns a TransformedText where all the magic happens! If we take a look at the constructor it takes a text (which will be transformed) and an OffsetMapping which provides a bidirectional mapping between the original text and the new one. Which means that we'll need to implement the transformation from and to the original. Let's have a look at the password transformation that the framework provides to see the OffsetMapping in action: https://medium.com/media/5e50cd5af8fd0d3acd9300d03665735b/href Here, the implementation is pretty straightforward as we just need to transform the input text where every character will be replaced by a mask, so the text will have the same length. The transformed text will contain the mapped text and the offsetMapping will handle the transformation. Here, as we don't have any extra character to be displayed in the returned text, the two functions will return the original offset. The two transformations can become a bit more complex if we need to display additional characte

## Data Science with Nix: Parameter Sweeps

DevFeed: [Data Science with Nix: Parameter Sweeps](<https://devfeed.tech/articles/data-science-with-nix-parameter-sweeps-34136.md>)

Original publisher: [Read original article](<https://blog.nixbuild.net/posts/2021-04-26-data-science-with-nix-parameter-sweeps.html>)

Author: support@nixbuild.net

Published: 2021-04-26T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Data Science](<https://devfeed.tech/topics/data-science.md>), [Simulation](<https://devfeed.tech/topics/simulation.md>), [builds](<https://devfeed.tech/topics/builds.md>)

Tags: [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [data-science](<https://devfeed.tech/tags/data-science.md>), [hpc](<https://devfeed.tech/tags/hpc.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [simulation](<https://devfeed.tech/tags/simulation.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This practical article explains parameter sweeps in scientific computing and their equivalent in software build matrices. It demonstrates how Nix and nixbuild.net can manage tasks involving many input-parameter combinations, including simulations, builds, and benchmarks.

### Source excerpt

Parameter sweeping is a technique often utilized in scientific computing and HPC settings. In the mainstream software industry the concept is called a build matrix. The idea is that you have a task you want to perform with varying input parameters. If the task takes multiple parameters, and you'd like to try it out with multiple values for each parameter, it is easy to end up with a combinatorial explosion. This blog post gives a practical demonstration showing how Nix is a perfect companion for managing parameter sweeps and build matrices, and how nixbuild.net can be used to supercharge your workflow. My hope is that this text can interest readers that don't know anything about Nix as well as experienced Nix users. Use Cases In scientific computing, it is common to run simulations of physical processes. The list of things simulated is endless: weather forecasting, molecular dynamics, celestial movements, FEM analysis, particle physics etc. A simulation is usually implemented directly as a computer program or as a description for a higher level simulation framework. A simulation generally has a set of input parameters that can be defined. These parameters can describe initial states, environmental aspects or tweak the behavior of the simulation algorithm itself. Scientists are interested in comparing simulation results for a range of different parameter values, and the process of doing so is referred to as a parameter sweep. Parameter sweeping is often built into simulation frameworks. For simulations implemented directly as specialized programs, scientists will simply run the program over and over again with different parameters, collecting and comparing the results. When supercomputers are used for running the simulations, the job scheduler usually has some support for launching multiple simulation instances with varying parameters. In the software industry, the term build matrix is used to mean basically the same thing as parameter sweeping. Regularly, build matr

## Security: Laravel 6.20.12, 7.30.3 Released

DevFeed: [Security: Laravel 6.20.12, 7.30.3 Released](<https://devfeed.tech/articles/security-laravel-6-20-12-7-30-3-released-3901.md>)

Original publisher: [Read original article](<https://laravel.com/blog/security-laravel-62012-7303-released>)

Author: Taylor Otwell

Published: 2021-01-15T15:41:00Z

Content type: release

Language: en

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

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [Security](<https://devfeed.tech/topics/security.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [framework](<https://devfeed.tech/tags/framework.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [security](<https://devfeed.tech/tags/security.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

Laravel 6.20.12 and 7.30.3 address a security problem with query parameter binding. New illuminate/database versions were tagged because the earlier releases preceded completion of the Git sub-tree splits, leaving some standalone component and Lumen users without the updates.

### Source excerpt

Earlier this week we released a security update to address a problem with query parameter binding in Laravel. However, the 6.x and 7.x releases were done before the Git sub-tree splits had completed r...

## Sample Data in Compose Previews

DevFeed: [Sample Data in Compose Previews](<https://devfeed.tech/articles/sample-data-in-compose-previews-25973.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/sample-data-in-compose-previews-bec32b62370f?source=rss-8efc0359e234------2>)

Author: Jossi Wolf

Published: 2020-07-05T17:45:51Z

Content type: tutorial

Language: en

Sources: [Stories by Jossi Wolf on Medium](<https://devfeed.tech/sources/stories-by-jossi-wolf-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android](<https://devfeed.tech/topics/android.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [data](<https://devfeed.tech/tags/data.md>), [design-systems](<https://devfeed.tech/tags/design-systems.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [stories](<https://devfeed.tech/tags/stories.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-components](<https://devfeed.tech/tags/ui-components.md>)

### AI overview

This tutorial explains how to provide sample data for Jetpack Compose previews using the @PreviewParameter annotation and PreviewParameterProvider. It addresses previews for parameterized Composables and lists, while noting that the annotation can be used on only one function parameter.

### Source excerpt

This post was written for Compose 0.1.0. Jetpack Compose is Google's new Android UI Toolkit, currently in development. If you already want to have a look, you can play around with it and learn some exciting new things! One area where Compose shines is previews. By annotating Composables with @Preview , you can preview the Composables inside Android Studio. This is very useful when working with e.g. Design Systems, or you just want to explore different variants of your UI components. But often, your Composables will take parameters, like our Project Composable. https://medium.com/media/9384b6a63c4a8ba376843a4ee3b90717/href In these cases, you can't use the Preview annotation on your Composable -- after all, Compose doesn't know where to obtain those parameters. One solution to this is to create "wrapper" Composables without any parameters. https://medium.com/media/d1f3459d8cd4af796160f696d97eb84d/href This has one big downside: You will end up creating lots of preview Composables, cluttering your code. In other cases, you might have a list and want to provide some sample data. With XML, supplying data for the preview was easily doable with the tools namespace. https://medium.com/media/16d547ae6a634bce91bb44023d4919e3/hrefPreviewParameter to the Rescue Luckily, Jetpack Compose has the @PreviewParameter annotation. It can be applied to any parameter of a @Preview. It needs PreviewParameterProvider , a simple interface which we can implement. https://medium.com/media/e1c92b209a2fdff94bb2a44662eee97f/href Finally, we can use the @Preview annotation with our @PreviewParameter -annotated arguments. https://medium.com/media/25d1c0eb02a8bfd7591af59dabce8885/href One caveat is that @PreviewParameter is only allowed on one parameter of a function, which is why we assign a default value to our second parameter. With this, previews become a lot more powerful in Compose. Let me know if this is useful in your day-to-day work and comment with any thoughts on this! Sample Data in Com

## 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.

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