# formatting

Published articles for formatting.

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

## Using static analysis in Python, JavaScript and more to make your system safer

DevFeed: [Using static analysis in Python, JavaScript and more to make your system safer](<https://devfeed.tech/articles/using-static-analysis-in-python-javascript-and-more-to-make-your-system-safer-27419.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/using-static-analysis-in-Python-and-JavaScript-to-make-your-system-safer.htm>)

Author: Khan Academy

Published: 2018-07-26T22:00:00Z

Content type: article

Language: en

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

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>), [Python](<https://devfeed.tech/topics/python.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lint](<https://devfeed.tech/tags/lint.md>), [news](<https://devfeed.tech/tags/news.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This article describes how Khan Academy uses custom linters and static analysis across JavaScript, Python, and Kotlin to prevent known bad patterns, keep duplicated logic or shared interfaces synchronized, and enforce frontend migration practices.

### Source excerpt

By Kevin Dangoor "Linting" source code to look for errors is nothing new (the original "lint" tool turned ... Read more

## CodeSOD: The Big Family

DevFeed: [CodeSOD: The Big Family](<https://devfeed.tech/articles/codesod-the-big-family-28514.md>)

Original publisher: [Read original article](<https://thedailywtf.com/articles/the-big-family>)

Author: Remy Porter

Published: 2026-08-27T06:30:00Z

Content type: opinion

Language: en

Sources: [The Daily WTF](<https://devfeed.tech/sources/the-daily-wtf.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [data](<https://devfeed.tech/topics/data.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Localization (l10n)](<https://devfeed.tech/topics/localization.md>), [formatting](<https://devfeed.tech/topics/formatting.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [code](<https://devfeed.tech/tags/code.md>), [codesod](<https://devfeed.tech/tags/codesod.md>), [fetch](<https://devfeed.tech/tags/fetch.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [html](<https://devfeed.tech/tags/html.md>), [humor](<https://devfeed.tech/tags/humor.md>), [php](<https://devfeed.tech/tags/php.md>), [programming](<https://devfeed.tech/tags/programming.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This commentary examines a large, generalized PHP code sample that builds hierarchical output from a presumed database source. It highlights probable SQL injection risk, unused array keys, dynamic localization fields, extensive number formatting and HTML string manipulation, string-based date-time parsing, and repeated code for child and sibling records.

### Source excerpt

Some time ago, Charles shared with us some awful PHP, aka the most common sort. Today's code sample is maybe a little too big to sum up, but I'll let Charles take a crack at it. It's so bad that even analyzing and laughing at it feels impossible. But it's so bad, I couldn't not share it. I'm the only one handling all the IT-related tasks at my company, and I don't have anyone here to vent or laugh about this kind of thing with. So, I figured, why not share it here? I'm hoping it'll provide at least a little bit of catharsis or some dark humor. To make sure the confidentiality of the codebase was respected, I took the liberty of generalizing it. You might notice some inconsistencies, but that's just me trying to keep things neutral while protecting the original structure and functionality. Apologies if it looks a bit patchy - the goal was to avoid revealing any specific details or sensitive code. The whole block is north of 400 lines, and it's doing a lot. Or well, maybe it's not, as you'll see. Let's star with the outermost layer. $resm_data = $data_source->fetchData("group=" . $item_id); foreach ($resm_data as $key => $value) { // rest of the code here } We fetch data from a data source, presumably a database, passing our condition as a string, which reeks of probable SQL injection, but I don't know what library they're using. I also note they're using the key/value style of array iteration, but never actually check the key. $option_id = $value->option_id; $resm_details = $detail_source->fetch($option_id); if ($resm_details) { $label = $resm_details->{"label$lang"}; $description = $resm_details->{"description$lang"}; $category = $resm_details->category; Nice little bit of "meta" programming to get their localization working, it'll fetch labelen or labelde as needed. Definitely not a horrible, dangerous way to solve that problem. We use that again to get our currency figured out. That lets us do number formatting. So much number formatting code. if ($category == 0)

## Introducing sqlfmt: an SQL gofmt-style formatter

DevFeed: [Introducing sqlfmt: an SQL gofmt-style formatter](<https://devfeed.tech/articles/introducing-sqlfmt-an-sql-gofmt-style-formatter-34619.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2026/08/introducing-sqlfmt-an-sql-gofmt-style-formatter/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2026-08-11T12:30:37Z

Content type: release

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [formatting](<https://devfeed.tech/topics/formatting.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [formatting](<https://devfeed.tech/tags/formatting.md>), [go](<https://devfeed.tech/tags/go.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The article introduces sqlfmt, a gofmt-style SQL formatter based on the author's SQL indentation conventions from The Art of PostgreSQL. It uses a single opinionated style with no configuration options, including river alignment and specific rules for keywords, commas, continuation lines, data types, and comments. The formatter is available through a CLI and a WebAssembly-based web tool.

### Source excerpt

Formatting SQL tends to bring some of the same questions again and again: should we uppercase clause keywords? should we put the separating comma at the start of a line to ease refactoring? how to align the SQL clauses with one-another? Over the years I have grown my own SQL style and didn't find tooling that would implement it. Also, I've been asked here and there if there is a tool that would replicate The Art of PostgreSQL SQL indentation style... and now there is finally a good answer to that question! sqlfmt is a gofmt-style formatter that implements my own favorite SQL indentation style. One opinionated style, no configuration knobs. Run it, commit the result, move on.

## Checking code with lint, formatting it with prettier

DevFeed: [Checking code with lint, formatting it with prettier](<https://devfeed.tech/articles/checking-code-with-lint-formatting-it-with-prettier-22415.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/checking-code-with-lint-formatting-it.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-10T23:23:45Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [ESLint](<https://devfeed.tech/topics/eslint.md>), [Prettier](<https://devfeed.tech/topics/prettier.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [bun](<https://devfeed.tech/tags/bun.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [linter](<https://devfeed.tech/tags/linter.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial explains how to add ESLint for static analysis and Prettier for consistent code formatting in a Playwright project. It also discusses eslint-plugin-playwright and using eslint-config-prettier to reduce conflicts between ESLint and Prettier.

### Source excerpt

Now that we've installed bun, Anthropic's package manager, scaffolded a Playwright framework and closely examined the results, and added typechecking with TypeScript's compiler, it's time to add ways to check the code with lint, and reformat the code with prettier. We will be using: ESLint, as the static-analysis tool to review the code without running it. Little bits of fluff -- like syntax errors, structural bugs, anti-patterns, and code style violations -- can collect on your code, so it helps to run a linter to help catch it all, such as ESLint. There is also a linter, eslint-plugin-playwright, for Playwright tests. Prettier enforces a consistent code style across your entire codebase. Because ESLint and Prettier can conflict, we will be using Prettier's eslint-config-prettier, which turns off all rules that are unnecessary or might conflict with ESLint. What is a Linter? According to the Wikiwand entry for Lint, "Stephen C. Johnson, a computer scientist at Bell Labs, came up with the term 'lint' in 1978 while debugging the yacc grammar he was writing for C and dealing with portability issues stemming from porting Unix to a 32-bit machine. The term was borrowed from lint, the tiny bits of fiber and fluff shed by clothing, as the command he wrote would act like a lint trap in a clothes dryer, capturing waste fibers while leaving whole fabrics intact. The lint program was released outside of Bell Labs in Unix V7, in 1979. "In his 1978 paper, Johnson explained his reasons for creating a new program to detect errors: '...the general notion of having two programs is a good one' because they concentrate on different things, thereby allowing the programmer to 'concentrate at one stage of the programming process solely on the algorithms, data structures, and correctness of the program, and then later retrofit, with the aid of lint, the desirable properties of universality and portability' " What is ESLint? Website: https://eslint.org/ GitHub: https://github.com/eslint/e

## Pure Codename One Text Editing Without Native Overlays

DevFeed: [Pure Codename One Text Editing Without Native Overlays](<https://devfeed.tech/articles/pure-codename-one-text-editing-without-native-overlays-19552.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/text-input-without-native-overlay/>)

Author: Shai Almog

Published: 2026-07-27T00:00:00Z

Content type: article

Language: en

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

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

Tags: [component](<https://devfeed.tech/tags/component.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [gif](<https://devfeed.tech/tags/gif.md>), [image](<https://devfeed.tech/tags/image.md>), [jpeg](<https://devfeed.tech/tags/jpeg.md>), [native](<https://devfeed.tech/tags/native.md>), [port](<https://devfeed.tech/tags/port.md>)

### AI overview

A new semantic port contract lets Codename One handle text painting, selection, rich editing, clipboard formats, and bidirectional layout while platform ports provide keyboard and input-method events. The opt-in path supports text composition, undo and redo, selection geometry, and multi-format clipboard content without a visible native field.

### Source excerpt

A semantic port contract lets Codename One own text painting, selection, rich editing, clipboard formats, and bidirectional layout while the platform supplies keyboard and IME operations.

## Introducing Kempt

DevFeed: [Introducing Kempt](<https://devfeed.tech/articles/introducing-kempt-39037.md>)

Original publisher: [Read original article](<https://www.zacsweers.dev/introducing-kempt/>)

Author: Zac Sweers

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

Content type: release

Language: en

Sources: [Zac Sweers](<https://devfeed.tech/sources/zac-sweers.md>)

Topics: [formatting](<https://devfeed.tech/topics/formatting.md>), [pre-commit](<https://devfeed.tech/topics/pre-commit.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [ci](<https://devfeed.tech/topics/ci.md>), [repo](<https://devfeed.tech/topics/repo.md>), [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pre-commit](<https://devfeed.tech/tags/pre-commit.md>), [repo](<https://devfeed.tech/tags/repo.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article introduces Kempt, a small project designed to replace heavy Gradle-based formatting setups with a repo-local pipeline for formatting and commit hooks. It supports Kotlin, Java, and Rust, and can run locally, in pre-commit hooks, and in CI.

### Source excerpt

Formatting should be boring, in the best possible way.

## Monotonic Indentation

DevFeed: [Monotonic Indentation](<https://devfeed.tech/articles/monotonic-indentation-35605.md>)

Original publisher: [Read original article](<https://www.yegor256.com/2026/05/24/monotonic-indentation.html>)

Author: Yegor Bugayenko (yegor256@gmail.com)

Published: 2026-05-23T21:00:00Z

Content type: opinion

Language: en

Sources: [Yegor Bugayenko](<https://devfeed.tech/sources/yegor-bugayenko.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [formatting](<https://devfeed.tech/topics/formatting.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-formatting-style](<https://devfeed.tech/tags/code-formatting-style.md>), [code-indentation-rule](<https://devfeed.tech/tags/code-indentation-rule.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [indentation-in-java](<https://devfeed.tech/tags/indentation-in-java.md>), [monotonic-indentation](<https://devfeed.tech/tags/monotonic-indentation.md>), [off-side-rule](<https://devfeed.tech/tags/off-side-rule.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [python](<https://devfeed.tech/tags/python.md>), [style](<https://devfeed.tech/tags/style.md>)

### AI overview

The article proposes monotonic indentation as a source-code formatting rule: indentation may increase by exactly one unit between adjacent lines but may decrease by any number of units. It presents the rule as an optional check for existing style checkers or as a standalone tool, and compares it with Python's off-side rule.

### Source excerpt

Between two adjacent lines, indentation may grow by one unit only, but may shrink by any number of units -- a rule that resolves most code formatting disputes.

## How Malicious Instructions in Retrieved Content Can Manipulate LLM-Powered Agents

DevFeed: [How Malicious Instructions in Retrieved Content Can Manipulate LLM-Powered Agents](<https://devfeed.tech/articles/the-dumbest-ai-hack-ever-might-be-the-most-dangerous-32381.md>)

Original publisher: [Read original article](<https://brianjenney.substack.com/p/the-dumbest-ai-hack-ever-might-be>)

Author: Brian Jenney

Published: 2026-03-30T15:28:41Z

Content type: opinion

Language: en

Sources: [Brian Jenney](<https://devfeed.tech/sources/brian-jenney.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [trust](<https://devfeed.tech/topics/trust.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [llms](<https://devfeed.tech/tags/llms.md>), [payload](<https://devfeed.tech/tags/payload.md>), [repo](<https://devfeed.tech/tags/repo.md>), [trust](<https://devfeed.tech/tags/trust.md>)

### AI overview

This opinion article describes an experiment in which an agent searched a knowledge base, called an API, and answered questions. The author inserted unrelated, concealed instructions into an otherwise normal document, and reports that the model followed them. The article argues that malicious instructions embedded in webpages, PDFs, or GitHub repositories can pose a risk when retrieved by LLM-powered systems.

### Source excerpt

"Humans wrote bad code way before AI."

## How to render timestamp with a timezone that is different from current?

DevFeed: [How to render timestamp with a timezone that is different from current?](<https://devfeed.tech/articles/how-to-render-timestamp-with-a-timezone-that-is-different-from-current-33675.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/01/27/how-to-render-timestamp-with-a-timezone-that-is-different-from-current/>)

Author: depesz

Published: 2026-01-27T09:25:04Z

Content type: tutorial

Language: en

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

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

Tags: [formatting](<https://devfeed.tech/tags/formatting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [irc](<https://devfeed.tech/tags/irc.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [timestamptz](<https://devfeed.tech/tags/timestamptz.md>), [timezone](<https://devfeed.tech/tags/timezone.md>), [to-char](<https://devfeed.tech/tags/to-char.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [utc](<https://devfeed.tech/tags/utc.md>)

### AI overview

A PostgreSQL tutorial explaining why timestamptz values are displayed in the client's local timezone and how to render a timestamp with an offset for another timezone. It presents a custom function that returns text, preserves the client timezone, and optionally applies to_char formatting.

### Source excerpt

This question appeared on IRC, and while I wasn't there while it happened, it caught my eye: " Can I not render this with timezone offset: select '2026-01-09 04:35:46.9824-08'::timestamp with time zone at time zone 'UTC'; " Returns '2026-01-09 12:35:46.9824' which is without the offset. Let's see what can be done about it. First, let's ... Continue reading "How to render timestamp with a timezone that is different from current?"

## Small improvement for pretty-printing in paste.depesz.com

DevFeed: [Small improvement for pretty-printing in paste.depesz.com](<https://devfeed.tech/articles/small-improvement-for-pretty-printing-in-paste-depesz-com-33672.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/01/06/improvement-for-pretty-printing-in-paste-depesz-com/>)

Author: depesz

Published: 2026-01-06T15:13:10Z

Content type: release

Language: en

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

Topics: [pretty printing](<https://devfeed.tech/topics/pretty-printing.md>), [JOIN](<https://devfeed.tech/topics/join.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Script](<https://devfeed.tech/topics/script.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [announcements](<https://devfeed.tech/tags/announcements.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [irc](<https://devfeed.tech/tags/irc.md>), [join](<https://devfeed.tech/tags/join.md>), [paste-depesz-com](<https://devfeed.tech/tags/paste-depesz-com.md>), [perl](<https://devfeed.tech/tags/perl.md>), [pg-prettify](<https://devfeed.tech/tags/pg-prettify.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [pretty](<https://devfeed.tech/tags/pretty.md>), [pretty-printing](<https://devfeed.tech/tags/pretty-printing.md>), [script](<https://devfeed.tech/tags/script.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

The article describes an improvement to the pretty printer on paste.depesz.com that produces better indentation for complex SQL join conditions. It also notes that the printer can be used from the command line or through a previously described script without storing content on the site.

### Source excerpt

As you maybe know, some time ago I made paste service, mostly to use for queries, or related text to share on IRC. One part of it is that it also has pretty printer of provided queries. Recently I realized that in case of complex join conditions, the output is, well, sub-optimal. For example: SELECT ... Continue reading "Small improvement for pretty-printing in paste.depesz.com"

## KotlinPoet 2.0 is here!

DevFeed: [KotlinPoet 2.0 is here!](<https://devfeed.tech/articles/kotlinpoet-2-0-is-here-29011.md>)

Original publisher: [Read original article](<https://code.cash.app/kotlinpoet-2-is-here>)

Author: Egor Andreevich

Published: 2024-11-05T00:00:00Z

Content type: release

Language: en

Sources: [Cash App Code Blog](<https://devfeed.tech/sources/cash-app-code-blog.md>)

Topics: [Library](<https://devfeed.tech/topics/library.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [github](<https://devfeed.tech/tags/github.md>), [issue-tracker](<https://devfeed.tech/tags/issue-tracker.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

KotlinPoet 2.0 is a source- and binary-compatible major release of the Kotlin and Java API for generating Kotlin source files. It changes space wrapping so spaces do not wrap by default, while a newly introduced character marks spaces that are safe to wrap.

### Source excerpt

KotlinPoet 2.0 is the next, source- and binary-compatible major release of the library, that has important behavior changes.

## Features to consider when choosing a documentation editor

DevFeed: [Features to consider when choosing a documentation editor](<https://devfeed.tech/articles/7-must-have-features-in-a-documentation-editor-in-2025-30962.md>)

Original publisher: [Read original article](<https://developerhub.io/blog/what-to-look-for-in-a-documentation-editor/>)

Author: Zaid Daba'een

Published: 2024-10-13T19:01:46Z

Content type: article

Language: en

Sources: [DeveloperHub.io](<https://devfeed.tech/sources/developerhub-io.md>)

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

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [blocks](<https://devfeed.tech/tags/blocks.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [customizable](<https://devfeed.tech/tags/customizable.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [editor](<https://devfeed.tech/tags/editor.md>), [features](<https://devfeed.tech/tags/features.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [images](<https://devfeed.tech/tags/images.md>), [search](<https://devfeed.tech/tags/search.md>), [syntax-highlighting](<https://devfeed.tech/tags/syntax-highlighting.md>), [technical](<https://devfeed.tech/tags/technical.md>), [version-control](<https://devfeed.tech/tags/version-control.md>)

### AI overview

This article explains how technical writers can evaluate documentation editors. It discusses formatting options, blocks and custom elements, multimedia embedding, collaboration tools, version control, and search functionality.

### Source excerpt

Selecting the right documentation editor is essential for technical writers. Look for features like advanced formatting, customizable blocks, version control, and powerful search functionality. These tools enhance collaboration and ensure your documentation is clear, accessible, and easy to manage.

## Critique of Enforced Automated Code Formatters

DevFeed: [Critique of Enforced Automated Code Formatters](<https://devfeed.tech/articles/acab-fire-the-code-style-cop-in-your-head-30457.md>)

Original publisher: [Read original article](<https://dev.to/autonomousapps/acab-fire-the-code-style-cop-in-your-head-m8b>)

Author: Tony Robalik

Published: 2024-09-29T18:47:32Z

Content type: opinion

Language: en

Sources: [DEV Community: Tony Robalik](<https://devfeed.tech/sources/dev-community-tony-robalik.md>)

Topics: [formatting](<https://devfeed.tech/topics/formatting.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>)

Tags: [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

An opinion piece arguing against enforced automated code formatters, especially in the author's Kotlin, Gradle, and IntelliJ IDEA workflow. It distinguishes formatting enforcement from linting and questions whether consistent whitespace alone improves readability, maintainability, flow, or error prevention.

### Source excerpt

Photo by Karsten Winegeart on Unsplash Let's get something out of the way right at the start: I hate enforced automated code style formatters. This post started because I had an axe to grind, and I made the ill-advised decision to haul my grindstone out into the public square. Multiple times. Over weeks. Disclaimer! I primarily write Kotlin code that I build with Gradle, in Intellij IDEA (in order of importance). Since many of my complaints are about specific implementation-level issues with code style formatting tools, if you don't also build Kotlin with Gradle, don't worry about it! I'm just an internet crank and you are relieved from the duty of telling me how wrong I am. Second disclaimer! Enforced code style is not the same thing as linting for usage issues. I like linters! Please tell me I forgot to close a stream, or am calling a Java API with ambiguous nullability. Ok, let's gooooo. Arguments in favor of enforcement of consistent code style Consistent code style is better than inconsistent code style Sure. But what do we mean by better? The general claims are: More readable More maintainable Aids with achieving flow Contains fewer errors I think we've already run into an issue, which is we need to clarify what "style" means. Are we just talking about where we break lines and how long those lines are? Or do we mean something deeper? If we are talking about line breaks, I think the argument is pretty weak. Sure, all else being equal, if two pieces of source code follow the same general style, I will have an easier time with pattern-matching and "understanding" them. But what if my pattern-matching misleads me? What if I gloss over the fact that two structurally-identical blocks contain a single semantic difference that entirely changes the behavior? Maybe that single difference is easier to spot if the whitespace is identical, or maybe it's easier to miss because my brain too-readily dismisses the second block as identical to the first. This is actually what c

## Zed Weekly: Channel Chat, Semantic Index Updates, Prettier Integration, and Autocomplete Docs

DevFeed: [Zed Weekly: Channel Chat, Semantic Index Updates, Prettier Integration, and Autocomplete Docs](<https://devfeed.tech/articles/zed-weekly-20-13589.md>)

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

Author: Mikayla Maki

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

Content type: article

Language: en

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

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Prettier](<https://devfeed.tech/topics/prettier.md>), [AI search](<https://devfeed.tech/topics/ai-search.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [remote-development](<https://devfeed.tech/topics/remote-development.md>)

Tags: [autocomplete](<https://devfeed.tech/tags/autocomplete.md>), [chat](<https://devfeed.tech/tags/chat.md>), [code](<https://devfeed.tech/tags/code.md>), [docs](<https://devfeed.tech/tags/docs.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [integration](<https://devfeed.tech/tags/integration.md>), [remote-development](<https://devfeed.tech/tags/remote-development.md>), [search](<https://devfeed.tech/tags/search.md>), [testing](<https://devfeed.tech/tags/testing.md>), [weekly](<https://devfeed.tech/tags/weekly.md>)

### AI overview

This weekly development update covers progress on Zed's channel chat system, a moving and linking channels project, fixes for hint and LSP status bugs, and local Prettier integration. It also reports Semantic Index support for modified open buffers, an evaluation framework for the engine, planned integration with the inline code assistant, and continued autocomplete documentation work.

### Source excerpt

Shipping channel chat, GPUI2 code samples, and autocomplete docs, and adding replace to our buffer search!

## Interfaces 101 : Go's Logging Interface Ep. 4

DevFeed: [Interfaces 101 : Go's Logging Interface Ep. 4](<https://devfeed.tech/articles/interfaces-101-go-s-logging-interface-ep-4-22214.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2023/02/interfaces-101-go-logging-interface.html>)

Published: 2023-02-21T00: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>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [enum](<https://devfeed.tech/tags/enum.md>), [enumerators](<https://devfeed.tech/tags/enumerators.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [function](<https://devfeed.tech/tags/function.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [log-interface](<https://devfeed.tech/tags/log-interface.md>), [pretty-printing](<https://devfeed.tech/tags/pretty-printing.md>), [server-logs](<https://devfeed.tech/tags/server-logs.md>)

### AI overview

This video tutorial explains Go interfaces through error-interface nil behavior and custom string formatting. It covers defining an enumerated type, implementing the required interface method, and controlling how values are represented and printed.

### Source excerpt

Introduction In episode 3, Miki implemented a type that satisfied Go's error interface. The odd thing about his type was it would be considered not-nil although no value was set for it. To get a better understanding of the situation, Miki gives a brief explanation of how Go determines if an error value is nil, and in this case, Miki specified the type of the variable returned to be a pointer of his custom error type which blindsided Go's mechanism to determine a nil value. Miki chose this example because it demonstrated the importance of declaring an error with its type set as the error interface.

## Understanding Go's Time Format

DevFeed: [Understanding Go's Time Format](<https://devfeed.tech/articles/understanding-go-s-time-format-22196.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2022/12/understanding-go-time-format.html>)

Published: 2022-12-16T00: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>), [Go](<https://devfeed.tech/topics/go.md>)

Tags: [c-time-functions](<https://devfeed.tech/tags/c-time-functions.md>), [display](<https://devfeed.tech/tags/display.md>), [format](<https://devfeed.tech/tags/format.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [go](<https://devfeed.tech/tags/go.md>), [go-time-formatting](<https://devfeed.tech/tags/go-time-formatting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [international-standards-organisation](<https://devfeed.tech/tags/international-standards-organisation.md>), [iso](<https://devfeed.tech/tags/iso.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [strftime](<https://devfeed.tech/tags/strftime.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

A video tutorial explains Go's unique time format specification, showing how to build intuition for time layouts, format and display the current time, and avoid common formatting pitfalls.

### Source excerpt

Introduction Most apps that work with time values eventually need to display time to a user. Go has a unique way of allowing you to specify how to display time values that is different from the C library function strftime. The strftime function tends to be the standard for languages and tooling to format time. Go developed its own format specification instead of using any existing format with the idea of being able to maintain a mental model for formatting time.

## Filtering and modifying text input in Jetpack Compose way

DevFeed: [Filtering and modifying text input in Jetpack Compose way](<https://devfeed.tech/articles/filtering-and-modifying-text-input-in-jetpack-compose-way-25720.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/filtering-and-modifying-text-input-in-jetpack-compose-way/>)

Author: Shreyas Patil

Published: 2021-12-20T12:15:05Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [compose](<https://devfeed.tech/tags/compose.md>), [filter](<https://devfeed.tech/tags/filter.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

A tutorial on formatting numeric input and preserving ordinary messages in a Jetpack Compose TextField. It explains why filtering text directly in the input callback can cause keyboard mode and cursor-position problems, and presents a visual transformation approach that changes the displayed text without modifying the edit buffer.

### Source excerpt

Learn how to filter and modify user text input in Jetpack Compose. A guide to implementing input constraints and formatting for TextField.

## Presenting @trivago/prettier-plugin-sort-imports

DevFeed: [Presenting @trivago/prettier-plugin-sort-imports](<https://devfeed.tech/articles/presenting-trivago-prettier-plugin-sort-imports-28016.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2021-12-17-aprettierpluginthatsortsyourimports/>)

Author: Ayush Sharma Software Engineer; Learner; Open Source Enthusiast Follow

Published: 2021-12-17T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Prettier](<https://devfeed.tech/topics/prettier.md>), [import](<https://devfeed.tech/topics/import.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [modules](<https://devfeed.tech/topics/modules.md>), [formatting](<https://devfeed.tech/topics/formatting.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [import](<https://devfeed.tech/tags/import.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [modules](<https://devfeed.tech/tags/modules.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

trivago released @trivago/prettier-plugin-sort-imports, a Prettier plugin that sorts TypeScript and JavaScript import declarations according to a configured order. The article explains its motivation, configuration, and handling of third-party and local modules.

### Source excerpt

I'm happy to share that trivago has released a Prettier plugin which sorts import declarations in TypeSCript and JavaScript modules for a given configured order. Throughout this article, I'll explain to you the motivation behind this Prettier plugin and how it works in detail.

## Introducing the OSS Quickstart Archetype

DevFeed: [Introducing the OSS Quickstart Archetype](<https://devfeed.tech/articles/introducing-the-oss-quickstart-archetype-18838.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/introducing-oss-quickstart-archetype/>)

Published: 2021-12-02T17:30:00Z

Content type: release

Language: en

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

Topics: [Maven](<https://devfeed.tech/topics/maven.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [ci](<https://devfeed.tech/tags/ci.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [java](<https://devfeed.tech/tags/java.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [oss](<https://devfeed.tech/tags/oss.md>), [projects](<https://devfeed.tech/tags/projects.md>)

### AI overview

The article announces the OSS Quickstart Archetype, a Maven project template for bootstrapping open-source projects with current plugin and dependency versions, license handling, GitHub Actions CI, code and import formatting, and optional module-info.java support.

### Source excerpt

Table of Contents The Challenge The OSS Quickstart Archetype Outlook I am very happy to announce the availability of the OSS Quickstart Archetype! Part of the ModiTect family of open-source projects, this is a Maven archetype which makes it very easy to bootstrap new Maven-based open-source projects, satisfying common requirements such as configuring plug-in versions, and adhering to best practices like auto-formatting the source code. Think Maven Quickstart Archetype and friends, but more modern, complete, and opinionated.

## 8 Common Web Development Mistakes and How to Avoid Them

DevFeed: [8 Common Web Development Mistakes and How to Avoid Them](<https://devfeed.tech/articles/8-common-web-development-mistakes-and-how-to-avoid-them-35047.md>)

Original publisher: [Read original article](<https://markushatvan.com/blog/8-common-web-development-mistakes-and-how-to-avoid-them/>)

Published: 2020-10-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Markus Hatvan](<https://devfeed.tech/sources/markus-hatvan.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>), [ESLint](<https://devfeed.tech/topics/eslint.md>), [formatting](<https://devfeed.tech/topics/formatting.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial describes eight common web development mistakes and recommends practices to avoid them. It emphasizes setting realistic project scope, establishing code quality tools early, and using ESLint to identify inconsistent or error-prone code before it requires major refactoring.

### Source excerpt

To save you valuable time on your web development projects in the future, make sure to avoid these eight common web development mistakes.

## Scripting file templates for Android Studio

DevFeed: [Scripting file templates for Android Studio](<https://devfeed.tech/articles/scripting-file-templates-for-android-studio-25657.md>)

Original publisher: [Read original article](<https://adambennett.dev/2020/03/scripting-file-templates-for-android-studio/>)

Published: 2020-03-10T09:31:04Z

Content type: tutorial

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [jetbrains-toolbox](<https://devfeed.tech/topics/jetbrains-toolbox.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [automated](<https://devfeed.tech/tags/automated.md>), [bash](<https://devfeed.tech/tags/bash.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [files](<https://devfeed.tech/tags/files.md>), [finance](<https://devfeed.tech/tags/finance.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [functional](<https://devfeed.tech/tags/functional.md>), [github](<https://devfeed.tech/tags/github.md>), [growth](<https://devfeed.tech/tags/growth.md>), [install](<https://devfeed.tech/tags/install.md>), [java](<https://devfeed.tech/tags/java.md>), [jetbrains-toolbox](<https://devfeed.tech/tags/jetbrains-toolbox.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [onboarding](<https://devfeed.tech/tags/onboarding.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [script](<https://devfeed.tech/tags/script.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [team](<https://devfeed.tech/tags/team.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how Cuvva automated installing Android Studio file templates for team members across standard and JetBrains Toolbox installations. It also describes combining the setup with scripts that configure ktlint formatting, code style, and pre-commit hooks to streamline developer onboarding.

### Source excerpt

As we've started locking down our architecture at Cuvva we reached a point where every new feature required very similar boilerplate, and building all of this by hand was getting tedious. The obvious solution here was to create file templates using Android Studio. I won't go into much detail as to how these are made (there's some good resources available for this already), but I wanted to quickly share how we automated setting these up for team members.

## The First Prettier Plugin For Twig is Here

DevFeed: [The First Prettier Plugin For Twig is Here](<https://devfeed.tech/articles/the-first-prettier-plugin-for-twig-is-here-27988.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2020-03-10-thefirstprettierpluginfortwigishere/>)

Author: Tom Bartel

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

Content type: article

Language: en

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

Topics: [Prettier](<https://devfeed.tech/topics/prettier.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Symfony](<https://devfeed.tech/topics/symfony.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [cognitive-load](<https://devfeed.tech/tags/cognitive-load.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [php](<https://devfeed.tech/tags/php.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [symfony](<https://devfeed.tech/tags/symfony.md>)

### AI overview

trivago open sourced a Prettier plugin for the Twig template language under the Apache 2.0 license. The article explains that the plugin formats Twig templates consistently and is being used in trivago's core product, reducing manual formatting and related code-review discussion.

### Source excerpt

trivago open sourced a Prettier plugin for the Twig template language. It is available under the Apache 2.0 license, and you can access it on trivago's Github space.The trivago core p...

## Avoiding fake italic and bold text on Android

DevFeed: [Avoiding fake italic and bold text on Android](<https://devfeed.tech/articles/avoiding-fake-italic-and-bold-text-on-android-29017.md>)

Original publisher: [Read original article](<https://saket.me/android-fake-vs-true-bold-and-italic/>)

Author: Saket Narayan

Published: 2019-12-18T00:08:59Z

Content type: tutorial

Language: en

Sources: [Saket Narayan](<https://devfeed.tech/sources/saket-narayan.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Font](<https://devfeed.tech/topics/font.md>), [formatting](<https://devfeed.tech/topics/formatting.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [fonts](<https://devfeed.tech/tags/fonts.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [legibility](<https://devfeed.tech/tags/legibility.md>), [textview](<https://devfeed.tech/tags/textview.md>)

### AI overview

This Android typography tutorial explains that fake bold and italic styling is produced when the platform cannot find the requested font variant. It describes the resulting effects on visual differentiation and legibility, and recommends applying the complete font family so true variants can be selected.

### Source excerpt

Changing line heights in Android using LineHeightSpan has this ugly side-effect where the cursor ends up being very tall, extending till the full line height instead of just the text height. I've decided to go to extreme lengths to fix this over the next few days. For science. pic.twitter.com/2tWLvDq1rz -- Saket Narayan (@Saketme) November 24, [...] The post Avoiding fake italic and bold text on Android appeared first on Saket Narayan.

## Using M and L Patterns in Java SimpleDateFormat

DevFeed: [Using M and L Patterns in Java SimpleDateFormat](<https://devfeed.tech/articles/simmmmplllledateformat-38617.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2019_07_21_simmmmplllledateformat/>)

Published: 2019-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Java 8](<https://devfeed.tech/topics/java-8.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [format](<https://devfeed.tech/tags/format.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [java](<https://devfeed.tech/tags/java.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [locale](<https://devfeed.tech/tags/locale.md>)

### AI overview

This article explains the difference between the M and L pattern letters in Java SimpleDateFormat. It shows that they can produce the same results in English and German but differ in Russian, where M is used for dates with contextual month names and L for standalone month names.

### Source excerpt

Introduction Using SimpleDateFormat to format dates and times is a common thing (as Java 8 Time API is not that available on Android yet). Usually it looks like: val formatter = SimpleDateFormat("dd MMMM yyyy", Locale.ENGLISH) formatter.format(date) We can use different formats and locales with not only providing correct translations, but also some additional locale-specific formatting rules. One tricky thing about SimpleDateFormat formats is why we have M and L when they look identical?

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