# syntax

Published articles for syntax.

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

## Babel in Khan Academy's i18n Toolchain

DevFeed: [Babel in Khan Academy's i18n Toolchain](<https://devfeed.tech/articles/babel-in-khan-academy-s-i18n-toolchain-27381.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/i18n-babel-plugin.htm>)

Author: Khan Academy

Published: 2015-06-22T22:00:00Z

Content type: tutorial

Language: en

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

Topics: [Babel](<https://devfeed.tech/topics/babel.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [es6](<https://devfeed.tech/topics/es6.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Universal Syntax Tree.](<https://devfeed.tech/topics/unist.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [babel](<https://devfeed.tech/tags/babel.md>), [build](<https://devfeed.tech/tags/build.md>), [build-system](<https://devfeed.tech/tags/build-system.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [es6](<https://devfeed.tech/tags/es6.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [news](<https://devfeed.tech/tags/news.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [source](<https://devfeed.tech/tags/source.md>), [structure](<https://devfeed.tech/tags/structure.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tests](<https://devfeed.tech/tags/tests.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [types](<https://devfeed.tech/tags/types.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Khan Academy describes switching its ES6 and JSX frontend compilation from jstransform to Babel. The article explains a custom Babel plugin for preserving the project's internationalization behavior and discusses matching generated output, line numbers, whitespace, and the existing build chain.

### Source excerpt

By Kevin Barabash We've been using ES6 (along with JSX) for sometime at Khan Academy. Right now, we're ... Read more

## Kotlin 2.4.20 Collection Checks and Experimental Context-Sensitive Resolution

DevFeed: [Kotlin 2.4.20 Collection Checks and Experimental Context-Sensitive Resolution](<https://devfeed.tech/articles/features-you-waited-for-so-long-in-kotlin-22944.md>)

Original publisher: [Read original article](<https://proandroiddev.com/features-you-waited-for-so-long-in-kotlin-6c822e9e344a?source=rss----c72404660798---4>)

Author: Andrii Dubovyk

Published: 2026-09-14T06:32:51Z

Content type: tutorial

Language: en

Sources: [ProAndroidDev - Medium](<https://devfeed.tech/sources/proandroiddev-medium.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [collections](<https://devfeed.tech/tags/collections.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [features](<https://devfeed.tech/tags/features.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [list](<https://devfeed.tech/tags/list.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

The article explains two Kotlin features: allDistinctBy and allEqualBy in Kotlin 2.4.20 for checking collection values, and experimental context-sensitive resolution introduced in Kotlin 2.2 to reduce repetition when the expected type is known.

### Source excerpt

Kotlin 2.4.20 gives your collections opinions, and 2.2's compiler finally learns to read the room Some Kotlin features get a lot of attention when they arrive. Others are much less noticeable, but still make everyday code a little easier to write. Two examples of the latter are allDistinctBy/ allEqualBy in Kotlin 2.4.20 and context-sensitive resolution, which was introduced experimentally in Kotlin 2.2. allDistinctBy/ allEqualBy: A Simpler Way to Check Collections For years, checking whether all values in a collection were unique often looked something like this: val users = listOf( User(name = "A", age = 20), User(name = "B", age = 25), User(name = "C", age = 30) ) users.map { it.age }.distinct().size == users.size // true It works, but it creates another list, removes duplicates, counts the result, and then compares the sizes just to get a Boolean answer. Kotlin 2.4.20 adds a more direct way to express the same check: users.allDistinctBy { it.age } // true users.allEqualBy { it.age } // false allDistinctBy returns false as soon as it finds a duplicate, so it doesn't need to process the entire collection or create a separate Set. allEqualBy does the opposite: it checks whether all elements produce the same value when passed through the selector. Both functions work with Iterable, Sequence, and arrays. They use structural equality. For floating-point values, they follow Double.equals semantics, so NaN is considered equal to NaN, while -0.0 is different from 0.0. They're still @ExperimentalStdlibApi, so you'll need to opt in before using them in production code. The underlying allDistinct() and allEqual() requests have also been around in YouTrack for quite a while, which makes their appearance in the standard library feel long overdue. Context-Sensitive Resolution: Less Repetition in when The second feature is more about syntax. When the compiler already knows the type you're working with, you can sometimes leave out the type qualifier. Before: enum class Problem {

## Rust Function Overloading - Call for Experimentation

DevFeed: [Rust Function Overloading - Call for Experimentation](<https://devfeed.tech/articles/rust-function-overloading-call-for-experimentation-15104.md>)

Original publisher: [Read original article](<https://blog.rust-lang.org/inside-rust/2026/08/19/overloading-experiment/>)

Author: teor

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

Content type: release

Language: en

Sources: [Inside Rust Blog](<https://devfeed.tech/sources/inside-rust-blog.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [languages](<https://devfeed.tech/tags/languages.md>), [rust](<https://devfeed.tech/tags/rust.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The Rust Project is experimenting with function and method overloading for FFI bindings through the incomplete nightly "splat" compiler feature. The experiment aims to assess implementation complexity and improve interoperability with C++, while its design may change or be removed.

### Source excerpt

In partnership with the Rust Foundation's Rust-C++ Interop Initiative, the Rust Project has been experimenting with function overloading for FFI bindings. This experiment is now at a stage where compiler and interop tool developers can start exploring function overloading. Stable Rust already supports a form of overloading using tuples and traits, but calling these overloaded functions looks strange, because the overloaded arguments have to be passed as a single tuple argument, like this: hypot((2.0, 3.0, 6.0)). Stable Rust also allows overloading of built-in operators with user-defined types, via traits like Add (the + operator) and Neg (the - value negation operator). We are running an unstable nightly Rust language experiment to answer questions like: How much overloading can we do with Rust's existing trait system? Could this help us call C++ from Rust ergonomically? In the tradition of yeet (to avoid bikeshedding), we are using basic syntax in the first stage of the experiment: the #[rustc_splat] attribute. Alternative syntaxes can be considered later, if the experiment generates useful outcomes. Experimental Function Overloading Rust nightly builds from 2026-07-31 onwards have experimental support for more ergonomic function and method overloading, using the incomplete "splat" compiler feature; if you're a compiler or interop tool developer, we encourage you to experiment with it! This experiment lets overloaded functions be called with separate arguments, like this: hypot(2.0, 3.0, 6.0). No double parentheses required! But type inference and type checking still happen as they would in a stable Rust overload. We are experimenting with splat to get a feel for the complexity of the implementation, and to see if it solves some language interoperability use cases. Like most Rust language experiments, this nightly feature has no RFC, and can change or be removed at any time. Experiment Design We expect the feature to change significantly in future, or to be replace

## How to Stop or Skip Cypress Test Commands

DevFeed: [How to Stop or Skip Cypress Test Commands](<https://devfeed.tech/articles/can-t-stop-won-t-stop-28877.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/cant-stop-wont-stop/>)

Author: Gleb Bahmutov

Published: 2026-08-07T04: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>), [test](<https://devfeed.tech/topics/test.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [condition](<https://devfeed.tech/tags/condition.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [object](<https://devfeed.tech/tags/object.md>), [products](<https://devfeed.tech/tags/products.md>), [skip](<https://devfeed.tech/tags/skip.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains three ways to stop or skip Cypress test execution: using Cypress.stop, skipping the current Mocha test, and skipping the remaining commands in the Cypress command queue. It describes the trade-offs of each approach, including whether later tests run and whether completed commands remain visible.

### Source excerpt

Let's say you have a long-ish Cypress test and you know a place where it might fail. You want to stop / skip the test commands.

## YAML for DevOps Beginners, Syntax, Rules and Common Mistakes

DevFeed: [YAML for DevOps Beginners, Syntax, Rules and Common Mistakes](<https://devfeed.tech/articles/yaml-for-devops-beginners-syntax-rules-and-common-mistakes-17492.md>)

Original publisher: [Read original article](<https://kodekloud.com/blog/yaml-for-devops-beginners-syntax-rules-mistakes/>)

Author: Pramodh Kumar M

Published: 2026-08-06T17:16:19Z

Content type: tutorial

Language: en

Sources: [Kubernetes - KodeKloud Blog | DevOps, Cloud, Kubernetes, AI Tutorials & More](<https://devfeed.tech/sources/kubernetes-kodekloud-blog-devops-cloud-kubernetes-ai-tutorials-more.md>)

Topics: [YAML](<https://devfeed.tech/topics/yaml.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [DevOps](<https://devfeed.tech/topics/devops.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [block-scalars](<https://devfeed.tech/tags/block-scalars.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [devops](<https://devfeed.tech/tags/devops.md>), [errors](<https://devfeed.tech/tags/errors.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [json](<https://devfeed.tech/tags/json.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [kubernetes-yaml-manifests](<https://devfeed.tech/tags/kubernetes-yaml-manifests.md>), [linter](<https://devfeed.tech/tags/linter.md>), [mistakes](<https://devfeed.tech/tags/mistakes.md>), [multi-document-yaml](<https://devfeed.tech/tags/multi-document-yaml.md>), [structure](<https://devfeed.tech/tags/structure.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [validation](<https://devfeed.tech/tags/validation.md>), [yaml](<https://devfeed.tech/tags/yaml.md>), [yaml-anchors-and-aliases](<https://devfeed.tech/tags/yaml-anchors-and-aliases.md>), [yaml-common-mistakes](<https://devfeed.tech/tags/yaml-common-mistakes.md>), [yaml-for-devops](<https://devfeed.tech/tags/yaml-for-devops.md>), [yaml-indentation-rules](<https://devfeed.tech/tags/yaml-indentation-rules.md>), [yaml-norway-problem](<https://devfeed.tech/tags/yaml-norway-problem.md>), [yaml-syntax-rules](<https://devfeed.tech/tags/yaml-syntax-rules.md>), [yaml-vs-json](<https://devfeed.tech/tags/yaml-vs-json.md>), [yamllint-validation](<https://devfeed.tech/tags/yamllint-validation.md>)

### AI overview

A tutorial explaining YAML syntax, implicit typing, indentation rules, block scalars, anchors, aliases, and merge keys. It emphasizes that YAML can silently reinterpret unquoted values and recommends linting and schema validation in CI pipelines.

### Source excerpt

YAML tries to guess what you meant, and that is the entire problem. Once you know which values it silently reinterprets and why, the manifests that mysteriously break stop being mysterious.

## Rich Text And Code Editing: RichTextArea And A Syntax-Highlighting CodeEditor

DevFeed: [Rich Text And Code Editing: RichTextArea And A Syntax-Highlighting CodeEditor](<https://devfeed.tech/articles/rich-text-and-code-editing-richtextarea-and-a-syntax-highlighting-codeeditor-19497.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/rich-text-and-code-editing/>)

Author: Shai Almog

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

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [Code](<https://devfeed.tech/topics/code.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Web](<https://devfeed.tech/topics/web.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Python](<https://devfeed.tech/topics/python.md>), [CSS](<https://devfeed.tech/topics/css.md>), [JSON](<https://devfeed.tech/topics/json.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [css](<https://devfeed.tech/tags/css.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [python](<https://devfeed.tech/tags/python.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [web](<https://devfeed.tech/tags/web.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article describes RichTextArea and CodeEditor, two Codename One visual editors built on a shared semantic abstraction. A bundled cross-platform web-view engine is the default backend, while ports can provide optional native peers. The CodeEditor supports syntax highlighting for eight languages, themes, automatic bracket and quote closing, and asynchronous code completion.

### Source excerpt

RichTextArea and a syntax-highlighting CodeEditor, both built on a shared editor abstraction with a cross-platform web-view engine and an optional native peer.

## The Four Kotlin Versions in a Gradle Project

DevFeed: [The Four Kotlin Versions in a Gradle Project](<https://devfeed.tech/articles/the-four-kotlin-versions-in-a-gradle-project-24698.md>)

Original publisher: [Read original article](<https://blog.gradle.org/three-kotlin-versions-in-a-gradle-project>)

Author: Laura Kassovic

Published: 2026-06-12T04:00:00Z

Content type: article

Language: en

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

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This article explains the four Kotlin versions that can matter in a Gradle project: the Kotlin compiler version selected through the Kotlin Gradle Plugin, the language version targeted for project code, the Kotlin compiler bundled with Gradle for build logic, and the language version Gradle pins for that build logic.

### Source excerpt

Do you know what version of Kotlin your Gradle build is using? There are four Kotlin versions you need to know about in a project built with Gradle. They're easy to mix up, and mixing them up can lead to some confusion (and the occasional compiler error). The trick is that there are really only two compilers in play, and each one carries its own language-version dial. Two compilers, two dials, four numbers. Let's take them one at a time. This post was updated on June 16, 2026. 1. The Kotlin that compiles your code This is the version most people look for. If your application or library code is written in Kotlin and gets compiled by the Kotlin Gradle Plugin, you pick its version in your build: // build.gradle.kts plugins { kotlin("jvm") version "1.9.25" } Change the KGP version, and you change the Kotlin compiler used to compile your project. This is the version you control directly. 2. The Kotlin language version for your code Picking the KGP version chooses which compiler runs over your code. But that compiler has a second dial: the language version, which decides what Kotlin syntax it will accept. You set it through KGP: // build.gradle.kts kotlin { compilerOptions { languageVersion = KotlinVersion.KOTLIN_1_8 } } By default it matches the language version associated with your KGP version, so most projects never touch it. You can pin it lower, for example to keep a library compilable by projects still on an older Kotlin. #1 is the compiler; this is the language level you ask that compiler to target. 3. The Kotlin embedded in Gradle (that compiles your build logic) Now the other compiler. Gradle ships its own Kotlin compiler and standard library inside the distribution. It's the compiler that builds your Kotlin DSL scripts and Gradle-managed build logic, and its standard library is available on the classpath used by build scripts and plugins. You never declare this one. It comes bundled with whatever Gradle version you use. In Gradle 9.6.0: # gradle/wrapper/gradle-w

## Kotlin 2.4 Brings Swift-Style Collection Syntax \[\]

DevFeed: [Kotlin 2.4 Brings Swift-Style Collection Syntax \[\]](<https://devfeed.tech/articles/kotlin-2-4-brings-swift-style-collection-syntax-25983.md>)

Original publisher: [Read original article](<https://proandroiddev.com/kotlin-2-4-brings-swift-style-collection-syntax-0ab7097aa166?source=rss-711ab22c5c77------2>)

Author: Nav Singh

Published: 2026-06-04T16:32:23Z

Content type: article

Language: en

Sources: [Stories by Nav Singh 🇨🇦 on Medium](<https://devfeed.tech/sources/stories-by-nav-singh-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [collection](<https://devfeed.tech/tags/collection.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-2](<https://devfeed.tech/tags/kotlin-2.md>), [kotlin-standard-library](<https://devfeed.tech/tags/kotlin-standard-library.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This article explains Kotlin 2.4's experimental collection literals, which allow collections to be initialized with bracket syntax instead of functions such as listOf() or mutableListOf(). It also covers enabling the feature with the compiler option and discusses explicit declarations and type inference.

### Source excerpt

Image generated using Perplexity In Kotlin 2.4, collection literals are introduced, making collection initialization more concise and readable. To define collections, we no longer need to use functions like listOf() or mutableListOf(). This reduces boilerplate and makes intent clearer at a glance, especially when working with simple, static data. It's currently an experimental feature. We need to opt in, and the syntax or behavior may evolve in future releases. Add the Xcollection-literals compiler option to the build file kotlin { jvmToolchain(21) compilerOptions { freeCompilerArgs.add("-Xcollection-literals") } }Code samples Bracket syntax [] + explicit declaration // Mutable list with explicit type declaration // val plFNames: MutableList<String> = mutableListOf("Joe", "Alice") // Mutable list with brackets syntax val plFNames: MutableList<String> = ["Joe", "Alice"] println(plFNames) // ["Joe", "Alice" ] Bracket syntax [] + type inference As per docs:Compiler defaults to List if it lacks sufficient information to infer the collection type.But it seems like Array as we can see in the screenshot 📸 👇 val plFNames = ["Joe", "Alice"] println(plFNames) // ["Joe", "Alice" ]Screenshot type inference -- typeReferences What's new in Kotlin 2.4.0 | Kotlin Kotlin 2.4 Brings Swift-Style Collection Syntax [] was originally published in ProAndroidDev on Medium, where people are continuing the conversation by highlighting and responding to this story.

## A guide to Transformer architecture in modern language models

DevFeed: [A guide to Transformer architecture in modern language models](<https://devfeed.tech/articles/a-deep-dive-into-the-transformer-architecture-33578.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/transformer-architecture>)

Author: Ashish Pratap Singh

Published: 2026-05-14T04:15:11Z

Content type: tutorial

Language: en

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

Topics: [Transformer architecture](<https://devfeed.tech/topics/transformer-architecture.md>), [LLMs](<https://devfeed.tech/topics/llms.md>), [Transformer](<https://devfeed.tech/topics/transformer.md>)

Tags: [architecture-pattern](<https://devfeed.tech/tags/architecture-pattern.md>), [better](<https://devfeed.tech/tags/better.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [layer](<https://devfeed.tech/tags/layer.md>), [llms](<https://devfeed.tech/tags/llms.md>), [model](<https://devfeed.tech/tags/model.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [performance](<https://devfeed.tech/tags/performance.md>), [semantics](<https://devfeed.tech/tags/semantics.md>), [sequence](<https://devfeed.tech/tags/sequence.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [transformer-architecture](<https://devfeed.tech/tags/transformer-architecture.md>), [transformers](<https://devfeed.tech/tags/transformers.md>)

### AI overview

This tutorial explains the Transformer architecture, including its original encoder-decoder design for translation and the decoder-only variant used for modern language generation. It describes decoder components such as masked multi-head self-attention, feed-forward networks, layer normalization, and residual connections, and introduces the Pre-LayerNorm pattern.

### Source excerpt

A single 2017 research paper changed the future of AI forever and gave rise to multiple unicorn companies.

## Why JOIN USING Can Lead to Errors in SQL

DevFeed: [Why JOIN USING Can Lead to Errors in SQL](<https://devfeed.tech/articles/why-join-using-can-lead-to-errors-in-sql-28973.md>)

Original publisher: [Read original article](<https://blog.jooq.org/why-join-using-can-lead-to-errors-in-sql/>)

Author: lukaseder

Published: 2026-05-04T14:02:39Z

Content type: tutorial

Language: en

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

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [audit-columns](<https://devfeed.tech/tags/audit-columns.md>), [errors](<https://devfeed.tech/tags/errors.md>), [join](<https://devfeed.tech/tags/join.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [production](<https://devfeed.tech/tags/production.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>), [statement](<https://devfeed.tech/tags/statement.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [table](<https://devfeed.tech/tags/table.md>)

### AI overview

The article explains why JOIN USING and NATURAL JOIN can make SQL queries fragile as schemas evolve. Adding a same-named column can introduce ambiguity or change join behavior, causing existing queries to fail, so explicit join conditions are recommended for production queries.

### Source excerpt

Some SQL operators are as esoteric as they're powerful. One of the oldest operator that you've likely hardly ever used in real world applications is NATURAL JOIN which is the default in relational algebra. We've covered a funky use-case for NATURAL JOIN earlier on this blog. The main reason why it's not very useful is ... Continue reading Why JOIN USING Can Lead to Errors in SQL ->

## Comparing Python and Kotlin for Backend Development

DevFeed: [Comparing Python and Kotlin for Backend Development](<https://devfeed.tech/articles/from-python-to-kotlin-a-transition-worth-making-39369.md>)

Original publisher: [Read original article](<https://kt.academy/article/python-to-kotlin>)

Published: 2026-03-09T00: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>), [Python](<https://devfeed.tech/topics/python.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [backend-development](<https://devfeed.tech/tags/backend-development.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [python](<https://devfeed.tech/tags/python.md>), [switching](<https://devfeed.tech/tags/switching.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The article compares Python and Kotlin for backend development, explaining why teams may switch to Kotlin and examining differences in performance, type and mutability safety, concurrency, syntax, and default arguments.

### Source excerpt

Exploring the benefits of switching from Python to Kotlin for modern backend development.

## What Happens to an SQL Query?

DevFeed: [What Happens to an SQL Query?](<https://devfeed.tech/articles/what-happens-to-an-sql-query-34693.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/what-happens-to-an-sql-query>)

Author: Saurabh Dashora

Published: 2026-03-04T03:14:28Z

Content type: tutorial

Language: en

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

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [syntax](<https://devfeed.tech/topics/syntax.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [diagram](<https://devfeed.tech/tags/diagram.md>), [errors](<https://devfeed.tech/tags/errors.md>), [execution](<https://devfeed.tech/tags/execution.md>), [locks](<https://devfeed.tech/tags/locks.md>), [rollback](<https://devfeed.tech/tags/rollback.md>), [sql](<https://devfeed.tech/tags/sql.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This tutorial explains how an SQL query moves through a database. It covers transport and access checks, parsing and optimization into an execution plan, execution through the storage engine, and supporting components such as transactions, locks, buffering, and recovery.

### Source excerpt

The Journey Through the DB

## The experimental CSS border-shape property for non-rectangular elements

DevFeed: [The experimental CSS border-shape property for non-rectangular elements](<https://devfeed.tech/articles/border-shape-the-future-of-the-non-rectangular-web-28777.md>)

Original publisher: [Read original article](<https://una.im/border-shape/>)

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

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Chrome Canary](<https://devfeed.tech/topics/chrome-canary.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [chrome-canary](<https://devfeed.tech/tags/chrome-canary.md>), [code](<https://devfeed.tech/tags/code.md>), [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [property](<https://devfeed.tech/tags/property.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>)

### AI overview

This article introduces the experimental CSS border-shape property, which defines custom border geometry for non-rectangular elements. It explains how backgrounds, borders, outlines, and shadows follow the new shape, compares it with border-radius, and demonstrates creating tooltips with a fallback.

### Source excerpt

Learn about new geometry capabilities with this game-changing experimental CSS feature.

## Split Diffs are Here

DevFeed: [Split Diffs are Here](<https://devfeed.tech/articles/split-diffs-are-here-13537.md>)

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

Author: Cole Miller

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

Content type: article

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Git](<https://devfeed.tech/topics/git.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [feature](<https://devfeed.tech/tags/feature.md>), [files](<https://devfeed.tech/tags/files.md>), [git](<https://devfeed.tech/tags/git.md>), [scale](<https://devfeed.tech/tags/scale.md>), [sync](<https://devfeed.tech/tags/sync.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Zed introduces split diffs as the default in version 0.224. The article explains how the feature uses two multibuffers, reuses the old file versions and syntax trees, and inserts spacers to keep corresponding lines aligned while reviewing changes across multiple files.

### Source excerpt

View your code changes in a split diff view in Zed.

## Range-Over Functions in Go

DevFeed: [Range-Over Functions in Go](<https://devfeed.tech/articles/range-over-functions-in-go-22234.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/04/range-over-functions-in-go.html>)

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

Content type: article

Language: en

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

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [examples](<https://devfeed.tech/tags/examples.md>), [generators](<https://devfeed.tech/tags/generators.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This article explains Go's range-over-functions experiment, which proposes a standardized iterator model while preserving the familiar for range syntax. It introduces the iter package and sequence abstractions, compares iteration patterns, and uses stack examples to show how iterator logic can be implemented.

### Source excerpt

Iteration has long been one of the more fragmented areas of Go, with developers relying on ad hoc patterns to traverse custom data structures. This article explores the range-over-functions experiment, a proposed evolution of the language that introduces a standardized iterator model while preserving Go's familiar for range syntax. Using the new iter package and sequence abstractions, it shows how iteration logic can be expressed more clearly, flexibly, and idiomatically. Originally published in April 2024, the concepts remain highly relevant as Go continues to evolve toward more expressive yet simple language features.

## AI-Augmented Development Does Not Eliminate the Craft of Software

DevFeed: [AI-Augmented Development Does Not Eliminate the Craft of Software](<https://devfeed.tech/articles/is-the-craft-dead-21854.md>)

Original publisher: [Read original article](<https://www.hanselman.com/blog/is-the-craft-dead>)

Author: Scott Hanselman

Published: 2026-02-09T05:50:59Z

Content type: opinion

Language: en

Sources: [Scott Hanselman](<https://devfeed.tech/sources/scott-hanselman.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software](<https://devfeed.tech/topics/software.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [musings](<https://devfeed.tech/tags/musings.md>), [software](<https://devfeed.tech/tags/software.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The author argues that AI-augmented development may produce impressive results and change how developers work, but software remains difficult and still requires craftsmanship, good judgment, and the ability to build cohesive systems.

### Source excerpt

The Japanese are really good at woodworking. And I love watching the Yankee workshop, my dad makes Native American bows and arrows completely from scratch in his workshop with trees that he finds. This is all different from the stuff you get at IKEA, but I've been coding now for money for 35 years and systems are still complicated, computers still do dumb stuff, humans still do dumb stuff, this is just like the move from assembler to C, like the introduction of syntax highlighting, the introduction of intellisense, and the copy paste directly into production shift when stack overflow happened. There is value in good taste, there is value in craftsmanship, and there is value in human judgment. The furniture might be differently designed, but we're still interior designers and putting together a cohesive system is non-trivial. Don't let them gaslight you with one shot Minecraft clones and one shot C compilers. Software is still hard, it's just that you're no longer I/O bound with the speed of your fingertips. I think that there will be lots of work for us cleaning up after the slop, but if you know what you're doing AI augmented development is going to get you some amazing results and I am enjoying learning a ton during this momentous era shift - but the craft still exists. © 2025 Scott Hanselman. All rights reserved.

## Nice and Naughty Cases of Pattern Matching

DevFeed: [Nice and Naughty Cases of Pattern Matching](<https://devfeed.tech/articles/nice-and-naughty-cases-of-pattern-matching-23025.md>)

Original publisher: [Read original article](<https://www.javaadvent.com/2025/12/nice-and-naughty-cases-of-pattern-matching.html>)

Author: Cay Horstmann

Published: 2025-12-08T02:02:26Z

Content type: article

Language: en

Sources: [Java Advent Calendar](<https://devfeed.tech/sources/java-advent-calendar.md>)

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

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [article](<https://devfeed.tech/tags/article.md>), [enums](<https://devfeed.tech/tags/enums.md>), [exhaustive](<https://devfeed.tech/tags/exhaustive.md>), [expression](<https://devfeed.tech/tags/expression.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [programming](<https://devfeed.tech/tags/programming.md>), [sealed](<https://devfeed.tech/tags/sealed.md>), [statement](<https://devfeed.tech/tags/statement.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This article examines Java pattern matching in switch and instanceof, explaining when it fits data-oriented programming, when it becomes an antipattern, and how it interacts with legacy behavior. It uses sealed interfaces, records, enums, and JSON values to illustrate exhaustive pattern matching.

### Source excerpt

Since Java 14, the Java switch and instanceof statements have been enhanced, in multiple phases, to support pattern matching and a "data-oriented" programming style. In this article, I explore when this programming style is beneficial, and why. I look at the sweet spot of perfect pattern usage, absolute antipatterns where it should not be used, [...] The post Nice and Naughty Cases of Pattern Matching appeared first on JVM Advent.

## Zed Has Rainbow Brackets

DevFeed: [Zed Has Rainbow Brackets](<https://devfeed.tech/articles/zed-has-rainbow-brackets-13528.md>)

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

Author: Kirill Bulatov

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

Content type: article

Language: en

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

Topics: [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [vs-code](<https://devfeed.tech/topics/vs-code.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [feature](<https://devfeed.tech/tags/feature.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [rust](<https://devfeed.tech/tags/rust.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>)

### AI overview

Zed introduces rainbow brackets, a feature that colors each nesting level differently to help users follow matching brackets. The article explains how Zed implemented it using tree-sitter queries and existing language-extension query files rather than maintaining complete syntax trees in memory.

### Source excerpt

A whole new world of color comes to Zed.

## IOS/XR Route Redistribution Configuration Mess

DevFeed: [IOS/XR Route Redistribution Configuration Mess](<https://devfeed.tech/articles/ios-xr-route-redistribution-configuration-mess-11278.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/11/iosxr-redistribute-config-mess/>)

Published: 2025-11-24T06:43:00Z

Content type: article

Language: en

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

Topics: [Cisco](<https://devfeed.tech/topics/cisco.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Network](<https://devfeed.tech/topics/network.md>), [BGP](<https://devfeed.tech/topics/bgp.md>), [IS-IS](<https://devfeed.tech/topics/is-is.md>), [networking](<https://devfeed.tech/topics/networking.md>)

Tags: [bgp](<https://devfeed.tech/tags/bgp.md>), [boot](<https://devfeed.tech/tags/boot.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [is-is](<https://devfeed.tech/tags/is-is.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [network](<https://devfeed.tech/tags/network.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [routing](<https://devfeed.tech/tags/routing.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article examines route redistribution on Cisco IOS/XR, showing that OSPFv2/OSPFv3, IS-IS, and BGP use inconsistent syntax for the source protocol in redistribute commands. The inconsistencies make reusable configuration templates more difficult to create.

### Source excerpt

One would hope that the developers of a network operating system wouldn't feel the irresistible urge to reinvent what should have been a common configuration feature for every routing protocol. Alas, the IOS/XR developers failed to get that memo. I decided to implement route redistribution (known as route import in netlab) for OSPFv2/OSPFv3, IS-IS, and BGP on IOS/XR (Cisco 8000v running IOS/XR release 24.4.1) and found that each routing protocol uses a different syntax for the source routing protocol part of the redistribute command. Read more ...

## Range Syntax for Style Queries

DevFeed: [Range Syntax for Style Queries](<https://devfeed.tech/articles/range-syntax-for-style-queries-28832.md>)

Original publisher: [Read original article](<https://una.im/range-style-queries/>)

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

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [example](<https://devfeed.tech/tags/example.md>), [function](<https://devfeed.tech/tags/function.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [properties](<https://devfeed.tech/tags/properties.md>), [range](<https://devfeed.tech/tags/range.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

A tutorial on using range syntax in CSS style queries and the if() function. It explains comparisons involving custom properties, literal values, and function results, with examples for responsive components, weather cards, grid placement, and styling effects.

### Source excerpt

Learn how to use the new range syntax for CSS style queries and the if() function.

## Compiling a Call to a Block

DevFeed: [Compiling a Call to a Block](<https://devfeed.tech/articles/compiling-a-call-to-a-block-31809.md>)

Original publisher: [Read original article](<https://patshaughnessy.net/2025/11/3/compiling-a-call-to-a-block>)

Author: Pat Shaughnessy

Published: 2025-11-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pat Shaughnessy](<https://devfeed.tech/sources/pat-shaughnessy.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [language](<https://devfeed.tech/tags/language.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [updating-ruby-under-a-microscope](<https://devfeed.tech/tags/updating-ruby-under-a-microscope.md>)

### AI overview

An excerpt from a revised edition of Ruby Under a Microscope explains how Ruby's compiler handles a call to the 10.times method with a block. It examines the Prism parser's redesigned abstract syntax tree and the corresponding YARV instruction generation.

### Source excerpt

I've started working on a new edition of Ruby Under a Microscope that covers Ruby 3.x. I'm working on this in my spare time, so it will take a while. Leave a comment or drop me a line and I'll email you when it's finished. This week's excerpt

## Parsing: How Ruby Understands Your Code

DevFeed: [Parsing: How Ruby Understands Your Code](<https://devfeed.tech/articles/parsing-how-ruby-understands-your-code-31806.md>)

Original publisher: [Read original article](<https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code>)

Author: Pat Shaughnessy

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

Content type: article

Language: en

Sources: [Pat Shaughnessy](<https://devfeed.tech/sources/pat-shaughnessy.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [tokenization](<https://devfeed.tech/topics/tokenization.md>), [Code](<https://devfeed.tech/topics/code.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [code](<https://devfeed.tech/tags/code.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tokenization](<https://devfeed.tech/tags/tokenization.md>), [updating-ruby-under-a-microscope](<https://devfeed.tech/tags/updating-ruby-under-a-microscope.md>)

### AI overview

This excerpt explains how Ruby parses source code after tokenization. It describes syntax matching, recursive parsing of subexpressions, and syntax errors when no pattern matches.

### Source excerpt

I've started working on a new edition of Ruby Under a Microscope that covers Ruby 3.x. I'm working on this in my spare time, so it will take a while. Leave a comment or drop me a line and I'll email you when it's finished. Update

## vimrc: settings based on terminal background

DevFeed: [vimrc: settings based on terminal background](<https://devfeed.tech/articles/vimrc-settings-based-on-terminal-background-30278.md>)

Original publisher: [Read original article](<https://www.netmeister.org/blog/vim-color-by-bg.html>)

Published: 2025-09-05T17:22:45Z

Content type: tutorial

Language: en

Sources: [Signs of Triviality](<https://devfeed.tech/sources/signs-of-triviality.md>)

Topics: [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [based](<https://devfeed.tech/tags/based.md>), [highlighting](<https://devfeed.tech/tags/highlighting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [set](<https://devfeed.tech/tags/set.md>), [settings](<https://devfeed.tech/tags/settings.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [syntax-highlighting](<https://devfeed.tech/tags/syntax-highlighting.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A tutorial on configuring Vim syntax-highlighting colorschemes based on the current terminal background.

### Source excerpt

How to set e.g., syntax highlighting colorschemes based on the current terminal's background.

## A Lean Syntax Primer

DevFeed: [A Lean Syntax Primer](<https://devfeed.tech/articles/a-lean-syntax-primer-36158.md>)

Original publisher: [Read original article](<https://overreacted.io/a-lean-syntax-primer/>)

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

Content type: tutorial

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [programming](<https://devfeed.tech/tags/programming.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

An opinionated introduction to Lean syntax covering definitions, assignment and comparison syntax, type inference, explicit type annotations, natural numbers, integers, and running code in the online playground or VS Code. It also introduces the distinction between executing Lean code and proving facts about it.

### Source excerpt

Programming with proofs.

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