# copy

Published articles for copy.

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

## Copy-pasting more than just text

DevFeed: [Copy-pasting more than just text](<https://devfeed.tech/articles/copy-pasting-more-than-just-text-27370.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/copy-pasting-more-than-just-text.htm>)

Author: Khan Academy

Published: 2015-08-31T22:00:00Z

Content type: tutorial

Language: en

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

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [React](<https://devfeed.tech/topics/react.md>), [interactive website](<https://devfeed.tech/topics/interactive-website.md>)

Tags: [alt-text](<https://devfeed.tech/tags/alt-text.md>), [copy](<https://devfeed.tech/tags/copy.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [interactive-content](<https://devfeed.tech/tags/interactive-content.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [news](<https://devfeed.tech/tags/news.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>), [widget](<https://devfeed.tech/tags/widget.md>)

### AI overview

Sam Lau describes how Khan Academy improved copy-pasting in Perseus, its interactive exercise and article editor, by moving widget metadata alongside copied text. The change preserves information such as image URLs and a number line's starting value, making it easier for content creators to move or duplicate widgets.

### Source excerpt

By Sam Lau The Result I'll skip to the happy ending. This little feature implements more sophisticated copy-pasting ... Read more

## A Safe, Copyable AI Workflow for Engineering Teams

DevFeed: [A Safe, Copyable AI Workflow for Engineering Teams](<https://devfeed.tech/articles/this-is-for-engineers-falling-behind-on-ai-28480.md>)

Original publisher: [Read original article](<https://strategizeyourcareer.com/p/software-engineers-and-ai>)

Author: Fran Soto

Published: 2026-06-21T05:00:33Z

Content type: opinion

Language: en

Sources: [Strategize Your Career](<https://devfeed.tech/sources/strategize-your-career.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Frontier AI](<https://devfeed.tech/topics/frontier-ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [copy](<https://devfeed.tech/tags/copy.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

The article argues that most engineering teams need a safe AI workflow that other engineers can copy, rather than frontier AI.

### Source excerpt

Most teams do not need frontier AI. They need one safe workflow other engineers can copy.

## Introducing Compose Loaders: a curated collection of copy-paste animated loaders for Jetpack Compose 🌀

DevFeed: [Introducing Compose Loaders: a curated collection of copy-paste animated loaders for Jetpack Compose 🌀](<https://devfeed.tech/articles/introducing-compose-loaders-a-curated-collection-of-copy-paste-animated-loaders-for-jetpack-compose-37918.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/introducing-compose-loaders-a-curated>)

Author: Jorge Castillo

Published: 2026-04-03T13:37:34Z

Content type: release

Language: en

Sources: [Effective Android](<https://devfeed.tech/sources/effective-android.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [collection](<https://devfeed.tech/tags/collection.md>), [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [copy](<https://devfeed.tech/tags/copy.md>), [free](<https://devfeed.tech/tags/free.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>)

### AI overview

Compose Loaders is a free collection of copy-paste animated loader components for Jetpack Compose, created by porting loading animations originally built for React.

### Source excerpt

A few days ago I stumbled upon a sick loading animation someone built for React... so I decided to port it to Jetpack Compose.

## Waiting for PostgreSQL 19 - json format for COPY TO

DevFeed: [Waiting for PostgreSQL 19 - json format for COPY TO](<https://devfeed.tech/articles/waiting-for-postgresql-19-json-format-for-copy-to-33684.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/03/29/waiting-for-postgresql-19-json-format-for-copy-to/>)

Author: depesz

Published: 2026-03-29T12:34:22Z

Content type: article

Language: en

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

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [JSON](<https://devfeed.tech/topics/json.md>), [export](<https://devfeed.tech/topics/export.md>), [data](<https://devfeed.tech/topics/data.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>)

Tags: [command](<https://devfeed.tech/tags/command.md>), [copy](<https://devfeed.tech/tags/copy.md>), [data](<https://devfeed.tech/tags/data.md>), [developers](<https://devfeed.tech/tags/developers.md>), [export](<https://devfeed.tech/tags/export.md>), [json](<https://devfeed.tech/tags/json.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [stream](<https://devfeed.tech/tags/stream.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article discusses a PostgreSQL 19 patch adding a JSON format option to COPY TO. It allows table data or query results to be exported as a stream of JSON objects, one object per line, with an option to wrap the output in an array.

### Source excerpt

On 20th of March 2026, Andrew Dunstan committed patch: json format for COPY TO This introduces the JSON format option for the COPY TO command, allowing users to export query results or table data directly as a stream of JSON objects (one per line, NDJSON style). The JSON format is currently supported only ... Continue reading "Waiting for PostgreSQL 19 - json format for COPY TO"

## Waiting for PostgreSQL 19 - Support COPY TO for partitioned tables.

DevFeed: [Waiting for PostgreSQL 19 - Support COPY TO for partitioned tables.](<https://devfeed.tech/articles/waiting-for-postgresql-19-support-copy-to-for-partitioned-tables-33666.md>)

Original publisher: [Read original article](<https://www.depesz.com/2025/10/22/waiting-for-postgresql-19-support-copy-to-for-partitioned-tables/>)

Author: depesz

Published: 2025-10-22T10:05:08Z

Content type: article

Language: en

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

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

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

### AI overview

The article discusses a PostgreSQL patch committed by Masahiko Sawada that adds direct COPY TO support for partitioned tables. Previously, users had to use COPY (SELECT ...) TO as a workaround. The author's test found similar performance, with COPY from a table slightly slower in the reported case.

### Source excerpt

On 20th of October 2025, Masahiko Sawada committed patch: Support COPY TO for partitioned tables. Previously, COPY TO command didn't support directly specifying partitioned tables so users had to use COPY (SELECT ...) TO variant. This commit adds direct COPY TO support for partitioned tables, improving both usability and performance. Performance tests show ... Continue reading "Waiting for PostgreSQL 19 - Support COPY TO for partitioned tables."

## Exploding Words: An Interactive Canvas Demo

DevFeed: [Exploding Words: An Interactive Canvas Demo](<https://devfeed.tech/articles/exploding-words-28089.md>)

Original publisher: [Read original article](<https://jlongster.com/exploding-words>)

Author: James Long

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

Content type: article

Language: en

Sources: [James Long](<https://devfeed.tech/sources/james-long.md>)

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

Tags: [array](<https://devfeed.tech/tags/array.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [copy](<https://devfeed.tech/tags/copy.md>), [equals](<https://devfeed.tech/tags/equals.md>), [experiment](<https://devfeed.tech/tags/experiment.md>), [function](<https://devfeed.tech/tags/function.md>), [object](<https://devfeed.tech/tags/object.md>), [return](<https://devfeed.tech/tags/return.md>), [svg](<https://devfeed.tech/tags/svg.md>)

### AI overview

An interactive canvas demo titled "Exploding words," accompanied by JavaScript code defining vector creation, comparison, copying, subtraction, multiplication, and addition operations.

### Source excerpt

body { background-image: url(https://static.jlongster.com/20251008/purple-grain.svg); background-size: 500px 500px; background-color: #2E264E; } ^67fd6e <div class="demo-full-screen"> <div class="relative" style="width: 100%; height: 100%; max-width: 800px; max-height: 700px;"> <canvas style="width: 100%; height: 100%; object-fit: contain"></canvas> <div class="demo-touch-area absolute" style="top: 25%; left: 25%; right: 25%; bottom: 25%; user-select: no-repeat"></div> </div> </div> ^043ea2 (function () { 'use strict'; var X = 0; var Y = 1; var Z = 2; var W = 3; function vec(x, y, z, w) { var arr; var len = w != undefined ? 4 : z != undefined ? 3 : y != undefined ? 2 : 1; if (typeof ArrayBuffer !== 'undefined') { var buffer = new ArrayBuffer(4 * len); arr = new Float32Array(buffer); } else { arr = []; } arr[X] = x; len >= 2 && (arr[Y] = y); len >= 3 && (arr[Z] = z); len == 4 && (arr[W] = w); return arr; } function vec_equals(v1, v2) { function fleq(x, y) { if (isNaN(x) && isNaN(y)) return true; return Math.abs(x - y) < 0.0000000001; } return ( fleq(v1[X], v2[X]) && fleq(v1[Y], v2[Y]) && fleq(v1[Z], v2[Z]) && fleq(v1[W], v2[W]) ); } function vec_copy(v1) { if (typeof Float32Array !== 'undefined' && v1 instanceof Float32Array) { var buffer = new ArrayBuffer(4 * v1.length); var arr = new Float32Array(buffer); arr[X] = v1[X]; arr[Y] = v1[Y]; arr[Z] = v1[Z]; arr[W] = v1[W]; return arr; } return Array.prototype.slice.call(v1); } function vec_pure_operation(op) { return function(v1, v2) { v1 = vec_copy(v1); op(v1, v2); return v1; }; } function _vec_subtract(v1, v2) { v1[X] = v1[X] - v2[X]; v1.length >= 2 && (v1[Y] = v1[Y] - v2[Y]); v1.length >= 3 && (v1[Z] = v1[Z] - v2[Z]); v1.length == 4 && (v1[W] = v1[W] - v2[W]); } var vec_subtract = vec_pure_operation(_vec_subtract); function _vec_multiply(v1, v2) { v1[X] = v1[X] * v2[X]; v1.length >= 2 && (v1[Y] = v1[Y] * v2[Y]); v1.length >= 3 && (v1[Z] = v1[Z] * v2[Z]); v1.length == 4 && (v1[W] = v1[W] * v2[W]); } function _vec_add(

## Integrating Snapshotter with a memory datastore in Golang

DevFeed: [Integrating Snapshotter with a memory datastore in Golang](<https://devfeed.tech/articles/integrating-snapshotter-with-a-memory-datastore-in-golang-39634.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2025-02-16_Integrating-Snapshotter-with-a-memory-datastore-in-Golang>)

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

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

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

Tags: [copy](<https://devfeed.tech/tags/copy.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [interface](<https://devfeed.tech/tags/interface.md>), [iteration](<https://devfeed.tech/tags/iteration.md>), [object](<https://devfeed.tech/tags/object.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

A practical guide to integrating copy-on-write snapshotting with an in-memory datastore in Go. It describes goals for concurrent snapshots and restore operations, outlines how snapshot state is tracked across stores and shards, and discusses possible latency and memory impacts for reads and writes.

### Source excerpt

. [Integrating a Snapshotter with a Go Memory Datastore](integrating-snapshotter-with-a-memory-datastore-in-golang-cover...

## 重新思考 Go：Slice 只是「操作视图」

DevFeed: [重新思考 Go：Slice 只是「操作视图」](<https://devfeed.tech/articles/go-slice-40989.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/golang-rethink-slice/>)

Author: Joway

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

Content type: article

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [copy](<https://devfeed.tech/tags/copy.md>), [gc](<https://devfeed.tech/tags/gc.md>), [go](<https://devfeed.tech/tags/go.md>), [slices](<https://devfeed.tech/tags/slices.md>), [tech](<https://devfeed.tech/tags/tech.md>)

### AI overview

This article examines Go slices as views over underlying memory rather than memory representations. It explains how subslices can retain oversized buffers, pointer elements can remain referenced after removal, and certain allocation patterns can cause unnecessary memory clearing. It concludes by discussing Go 1.21's slices package as a safer way to manipulate slices.

### Source excerpt

重新思考 Go 系列：这个系列希望结合工作中在 Go 编程与性能优化中遇到过的问题，探讨 Go 在语言哲学、底层实现和现实需求三者之间关系与矛盾。 Go 在语法级别上提供了 Slice 类型作为对底层内存的一个「操作视图」: var sh []any // ==> internal struct of []any type SliceHeader struct { Data uintptr Len int Cap int } 编程者可以使用一些近似 Python 的语法来表达对底层内存边界的控制:

## Data Classes and Destructuring

DevFeed: [Data Classes and Destructuring](<https://devfeed.tech/articles/data-classes-and-destructuring-25052.md>)

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

Author: author@typealias.com (Dave Leeds)

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

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

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

Tags: [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [copy](<https://devfeed.tech/tags/copy.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [destructuring](<https://devfeed.tech/tags/destructuring.md>), [destructuring-assignment](<https://devfeed.tech/tags/destructuring-assignment.md>), [equals](<https://devfeed.tech/tags/equals.md>), [hashcode](<https://devfeed.tech/tags/hashcode.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learn-to-program](<https://devfeed.tech/tags/learn-to-program.md>), [object](<https://devfeed.tech/tags/object.md>), [open](<https://devfeed.tech/tags/open.md>), [operator](<https://devfeed.tech/tags/operator.md>), [override](<https://devfeed.tech/tags/override.md>), [programming](<https://devfeed.tech/tags/programming.md>), [properties](<https://devfeed.tech/tags/properties.md>), [tostring](<https://devfeed.tech/tags/tostring.md>)

### AI overview

A Kotlin tutorial introducing data classes and destructuring. It explains how data classes relate to equals(), hashCode(), and toString(), beginning with reference equality and overriding inherited functions.

### Source excerpt

At the end of the last chapter, we saw how all objects in Kotlin inherit three functions from an open class called Any. Those functions are equals(), hashCode(), and toString(). In this chapter, we're going to learn about data classes, which are super-powered classes that are especially helpful when we've got an immutable class that mainly just holds properties. To better understand data classes, let's first explore each of the three functions above, and see what's involved when we override them!

## Keycloak 21.1.0 released

DevFeed: [Keycloak 21.1.0 released](<https://devfeed.tech/articles/keycloak-21-1-0-released-31606.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2023/04/keycloak-2110-released>)

Author: Keycloak Team

Published: 2023-04-20T00:00:00Z

Content type: release

Language: en

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

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [monorepo](<https://devfeed.tech/topics/monorepo.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [copy](<https://devfeed.tech/tags/copy.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [idm](<https://devfeed.tech/tags/idm.md>), [java-17](<https://devfeed.tech/tags/java-17.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Keycloak 21.1.0 is a software release that migrates the project into a main GitHub repository, promotes FIPS 140-2 support to officially supported status, and introduces Account Console version 3 as an experimental feature. It also extracts the Policy Enforcer into a separate Java dependency and includes the Nashorn JavaScript engine by default.

### Source excerpt

To download the release go to Keycloak downloads. Release notes Monorepo In the past Keycloak was maintained across multiple GitHub repositories: Documentation repository UI repository Node.js admin client repository Having multiple repositories introduced a lot of complexity and toil. For example frequently multiple pull requests had to be sent to different repositories for a single change. To simplify things we have now migrated everything into the main repository. FIPS 140-2 support FIPS 140-2 support in Keycloak, which was preview in the previous release, is now promoted to be officially supported. Experimental Account Console version 3 The Account Console version 3 is now available as an experimental feature in Keycloak. This version supports custom fields created with the 'User Profile' feature. If you are looking to try it out and provide us with some early feedback you can enable it as follows: bin/kc.sh start-dev --features=account3 Changes to Keycloak Authorization Services support in Keycloak Java-based Adapters As part of the removal of the deprecated adapters, the Keycloak Policy Enforcer was extracted from the adapters code base into a separate dependency: <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-policy-enforcer</artifactId> <version>21.1.0</version> </dependency> By providing this dependency, we expect making it possible to integrate the policy enforcer with the Java stack of your preference. It also provides built-in support for enabling the policy enforcer to Jakarta applications protected with Wildfly Elytron. For now, this dependency is not yet GA as we are still working on the quickstarts and documentation. This work should not impact existing applications using the deprecated adapters. Javascript engine available by default In the previous version, when Keycloak was used on Java 17 with Javascript providers it was needed to add the Nashorn javascript engine to the distribution. This is no longer needed as Nashorn javascr

## Interfaces 101 : Interface Type Assertion Ep. 6

DevFeed: [Interfaces 101 : Interface Type Assertion Ep. 6](<https://devfeed.tech/articles/interfaces-101-interface-type-assertion-ep-6-22218.md>)

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

Published: 2023-03-07T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [IO](<https://devfeed.tech/topics/io.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [copy](<https://devfeed.tech/tags/copy.md>), [flush](<https://devfeed.tech/tags/flush.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [io](<https://devfeed.tech/tags/io.md>), [io-interface](<https://devfeed.tech/tags/io-interface.md>), [io-reader](<https://devfeed.tech/tags/io-reader.md>), [io-writer](<https://devfeed.tech/tags/io-writer.md>), [library](<https://devfeed.tech/tags/library.md>), [logger](<https://devfeed.tech/tags/logger.md>), [receiver](<https://devfeed.tech/tags/receiver.md>), [type-alias](<https://devfeed.tech/tags/type-alias.md>), [versatile](<https://devfeed.tech/tags/versatile.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This video tutorial explains how to use type assertions and Go interfaces. It demonstrates io.Reader and io.Writer, io.Copy, and interface design while building a logging library that moves data from memory to stable storage.

### Source excerpt

Introduction In episode 5, Miki wrote a function that counted the number of lines in a file with interfaces. The first thing his function did was to open a file with Go's os.Open function. Miki chose this method because the variable returned by said function implements the io.Reader interface which is crucial for the next step. The remaining parts of this function consisted of a primitive type alias that satisfied the io.Writer interface and tracked the number of lines by increasing the Write method's receiver value. To put the process in motion, Miki will invoke function io.Copy to trigger his type alias' Write method and in essence, count the number of lines in the file.

## Things you can do in Android Studio

DevFeed: [Things you can do in Android Studio](<https://devfeed.tech/articles/things-you-can-do-in-android-studio-25669.md>)

Original publisher: [Read original article](<https://adambennett.dev/2022/06/things-you-can-do-in-android-studio/>)

Published: 2022-06-18T08:38:44Z

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>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Dagger](<https://devfeed.tech/topics/dagger.md>), [Code](<https://devfeed.tech/topics/code.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>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [copy](<https://devfeed.tech/tags/copy.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [finance](<https://devfeed.tech/tags/finance.md>), [function](<https://devfeed.tech/tags/function.md>), [functional](<https://devfeed.tech/tags/functional.md>), [growth](<https://devfeed.tech/tags/growth.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [scopes](<https://devfeed.tech/tags/scopes.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A practical list of Android Studio and IntelliJ productivity features, including excluding generated files with Scopes, using scratch files to test ideas, editing multiple lines simultaneously, and accessing clipboard history.

### Source excerpt

Based on a recent discussion on Twitter: a list of things that you can do in Android Studio which can make your life much easier. Hide files you don't care about If you work in a project with lots of generated code (e.g.: you use Dagger), you can exclude generated files from searches using Scopes:

## How to get a free .tech domain, connect it to GitHub pages and get a free SSL certificate

DevFeed: [How to get a free .tech domain, connect it to GitHub pages and get a free SSL certificate](<https://devfeed.tech/articles/how-to-get-a-free-tech-domain-connect-it-to-github-pages-and-get-a-free-ssl-certificate-25679.md>)

Original publisher: [Read original article](<https://blog.sanskar10100.dev/how-to-get-a-free-tech-domain-connect-it-to-github-pages-and-get-a-free-ssl-certificate>)

Author: Sanskar Agrawal

Published: 2021-12-31T15:21:54Z

Content type: tutorial

Language: en

Sources: [Sanskar's Stuff](<https://devfeed.tech/sources/sanskar-s-stuff.md>)

Topics: [GitHub Pages](<https://devfeed.tech/topics/github-pages.md>), [SSL](<https://devfeed.tech/topics/ssl.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [copy](<https://devfeed.tech/tags/copy.md>), [dns](<https://devfeed.tech/tags/dns.md>), [domain](<https://devfeed.tech/tags/domain.md>), [free](<https://devfeed.tech/tags/free.md>), [github](<https://devfeed.tech/tags/github.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ssl](<https://devfeed.tech/tags/ssl.md>), [technology](<https://devfeed.tech/tags/technology.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial explains how developers can obtain a free .tech domain through the GitHub Student Developer Pack, connect it to a GitHub Pages site with DNS records, and configure Cloudflare nameservers to obtain a free SSL certificate.

### Source excerpt

.tech domains are excellent personal domain names for developers because they basically put up your tech role upfront without even having to open your website. You can get one for free (for a year) by signing up for the GitHub Student Developer Pack ...

## Lightweight Text Selection

DevFeed: [Lightweight Text Selection](<https://devfeed.tech/articles/lightweight-text-selection-19351.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/lightweight-text-selection/>)

Author: Shai Almog

Published: 2019-05-06T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [components](<https://devfeed.tech/tags/components.md>), [copy](<https://devfeed.tech/tags/copy.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [native](<https://devfeed.tech/tags/native.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web-app](<https://devfeed.tech/tags/web-app.md>)

### AI overview

This article explains lightweight text selection in Codename One. Native text editing already provides copy and paste, but the article describes a lightweight copy mechanism for selecting text in uneditable TextAreas and TextFields, with optional support for Labels and SpanLabels.

### Source excerpt

Text editing is implemented natively in Codename One. This provides a huge benefit as it allows us to ignore a lot of complex topics such as virtual keyboard localization etc. If we had to implement all that logic the overhead of Codename One would have been huge... One free benefit is seamless support for copy & paste. It "just works" thanks to the usage of the native widget we don't need to worry about that UI. However, this breaks down when we want to provide the ability to select & copy without the ability to edit. E.g. in a web app we can usually select any bit of text and copy it... That's convenient for some cases.

## One-off shell script execution in BBEdit

DevFeed: [One-off shell script execution in BBEdit](<https://devfeed.tech/articles/one-off-shell-script-execution-in-bbedit-35131.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/06/14/shell-scripts-in-bbedit.html>)

Author: Eddie Smith

Published: 2017-06-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Sublime Text](<https://devfeed.tech/topics/sublime-text.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [file](<https://devfeed.tech/topics/file.md>), [LaTeX](<https://devfeed.tech/topics/latex.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [chmod](<https://devfeed.tech/tags/chmod.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [copy](<https://devfeed.tech/tags/copy.md>), [editor](<https://devfeed.tech/tags/editor.md>), [execution](<https://devfeed.tech/tags/execution.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [mac](<https://devfeed.tech/tags/mac.md>), [multiple](<https://devfeed.tech/tags/multiple.md>), [script](<https://devfeed.tech/tags/script.md>), [shell](<https://devfeed.tech/tags/shell.md>), [shell-script](<https://devfeed.tech/tags/shell-script.md>)

### AI overview

The article describes a workflow for creating one-off Bash scripts in Sublime Text to copy selected files, then running the unsaved commands immediately in BBEdit.

### Source excerpt

I've been meaning to talk more about my "Sublime Text and BBEdit" workflow, and this is a powerful (if mundane) example. I don't write a ton of scripts on my Mac and generally don't spend much time in Terminal. But when I need a script, I really need a script. My work is very file-heavy. I juggle large numbers of .tex (LaTeX) files across several large folder structures. Every so often I need to copy a subset of files within one folder to another folder so that I can do things to them. In most cases, I have a list of the files in a plain text .tex file, and I just need to do some file operations on them. Selecting them individually in Finder is tedious and error-prone, so the solution is usually a simple bash script with a bunch of cp commands. The main friction with bash scripting for folks like me that don't live in Terminal is that you have to create a .sh script and then web search for now to make it executable (because I can never remember the chmod command). Creating the shell commands is straightforward, especially in Sublime Text. After adding the necessary #!/bin/bash line with TextExpander and defining the "to" and "from" file paths as variables, the magic of Sublime Text's multiple cursors makes it easy to put cp commands and the folder path variables around each file to be copied. Sublime Text multiple cursors in action Since Sublime Text won't execute these commands in an unsaved file that hasn't been given proper execute permissions, I simply copy this text into an untitled, unsaved BBEdit window and hit ⌘R. BBEdit has the extremely useful ability to immediately recognize the syntax and execute it right there on the spot. I realize this post is a weird way to promote BBEdit, which is a powerful text editor that, in this case, I'm not even using as an editor. Hopefully I'll find some time to talk more about other ways I'm using it with Sublime Text.

## Kotlin Data Classes Reduce Boilerplate Code

DevFeed: [Kotlin Data Classes Reduce Boilerplate Code](<https://devfeed.tech/articles/data-classes-in-kotlin-save-a-good-bunch-of-lines-of-code-kad-10-27155.md>)

Original publisher: [Read original article](<https://antonioleiva.com/data-classes-kotlin>)

Published: 2017-01-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

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

Tags: [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [copy](<https://devfeed.tech/tags/copy.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [destructuring](<https://devfeed.tech/tags/destructuring.md>), [function](<https://devfeed.tech/tags/function.md>), [generate](<https://devfeed.tech/tags/generate.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [properties](<https://devfeed.tech/tags/properties.md>)

### AI overview

This tutorial explains Kotlin data classes, which represent state and automatically provide useful generated code. It covers destructuring, immutable-object copying, and how data classes reduce boilerplate compared with Java.

### Source excerpt

Everything Android, Kotlin and other random topics

## Unlocalize Google Chrome Omnibar

DevFeed: [Unlocalize Google Chrome Omnibar](<https://devfeed.tech/articles/unlocalize-google-chrome-omnibar-38382.md>)

Original publisher: [Read original article](<https://meedamian.com/post/unlocalize-google-in-chrome/>)

Author: hi@meedamian.com (Damian Mee)

Published: 2016-01-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Damian Mee | Blog | Portfolio | About](<https://devfeed.tech/sources/damian-mee-blog-portfolio-about.md>)

Topics: [Google Chrome](<https://devfeed.tech/topics/google-chrome.md>), [Google](<https://devfeed.tech/topics/google.md>), [Virtual Private Network](<https://devfeed.tech/topics/vpn.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [copy](<https://devfeed.tech/tags/copy.md>), [domain](<https://devfeed.tech/tags/domain.md>), [google](<https://devfeed.tech/tags/google.md>), [google-chrome](<https://devfeed.tech/tags/google-chrome.md>), [search](<https://devfeed.tech/tags/search.md>), [search-engine](<https://devfeed.tech/tags/search-engine.md>), [settings](<https://devfeed.tech/tags/settings.md>), [vpn](<https://devfeed.tech/tags/vpn.md>)

### AI overview

A tutorial explains how to change Chrome's Google search-engine settings to prevent Google from redirecting users who travel frequently or use a VPN to a local domain they do not want.

### Source excerpt

If you travel a lot or use a VPN, then at some point, Google might start to, wrongfully, think that you'd rather use some outdated local domain. Steps to fix it: Go to chrome://settings/searchEngines (copy-paste it into your address bar) In the Default search settings section find "Google" Rename Google to ex. Google (Annoying) in the 1st field Change google.com to ex. Google.annoying in the 2nd field Copy URL¹ from the 3rd field Scroll to the bottom of the Other search engines section Add a new search engine: Put Google into the 1st field Put google.

## ReactOS investigates SHFileOperation and considers an IFileOperation implementation

DevFeed: [ReactOS investigates SHFileOperation and considers an IFileOperation implementation](<https://devfeed.tech/articles/circular-leaks-32769.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/circular-leaks/>)

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

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [file](<https://devfeed.tech/topics/file.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [function](<https://devfeed.tech/topics/function.md>), [dialog](<https://devfeed.tech/topics/dialog.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [copy](<https://devfeed.tech/tags/copy.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [free](<https://devfeed.tech/tags/free.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [interface](<https://devfeed.tech/tags/interface.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [moving](<https://devfeed.tech/tags/moving.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [operations](<https://devfeed.tech/tags/operations.md>), [os](<https://devfeed.tech/tags/os.md>), [problems](<https://devfeed.tech/tags/problems.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [tests](<https://devfeed.tech/tags/tests.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A ReactOS developer reports testing SHFileOperation by moving, copying, and deleting folder structures, but could not reproduce the suspected file-writing problem. The article then examines whether to fix SHFileOperation directly or implement it around IFileOperation, including Microsoft's internal approach.

### Source excerpt

Hello again! As I mentioned in the last report, I had been writing tests to find the problems in SHFileOperation. All I knew was that in some situations it would end without fully writing some file, so I wrote tests moving, copying and deleting a folder structure, and comparing the copy with the original. I tried with empty files first, then with files of random sizes, then with really big files, and also with a lot of files of relatively small size.

## My notes on vim

DevFeed: [My notes on vim](<https://devfeed.tech/articles/my-notes-on-vim-40720.md>)

Original publisher: [Read original article](<https://radek.io/posts/my-notes-on-vim/>)

Published: 2011-07-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Vim](<https://devfeed.tech/topics/vim.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [copy](<https://devfeed.tech/topics/copy.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [centos](<https://devfeed.tech/topics/centos.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Fedora](<https://devfeed.tech/topics/fedora.md>), [rhel](<https://devfeed.tech/topics/rhel.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>)

Tags: [centos](<https://devfeed.tech/tags/centos.md>), [command](<https://devfeed.tech/tags/command.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [copy](<https://devfeed.tech/tags/copy.md>), [debian](<https://devfeed.tech/tags/debian.md>), [editor](<https://devfeed.tech/tags/editor.md>), [fedora](<https://devfeed.tech/tags/fedora.md>), [file](<https://devfeed.tech/tags/file.md>), [rhel](<https://devfeed.tech/tags/rhel.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

A practical set of notes on learning Vim, focusing on configuration and clipboard integration. It explains how to check for X11 clipboard support, use vimx or the vim-X11 package on relevant distributions, and configure an alias for copying and pasting between Vim and the system clipboard.

### Source excerpt

I build software products and write on the Internet.

## Social psychology in sales copy: Good copy writing

DevFeed: [Social psychology in sales copy: Good copy writing](<https://devfeed.tech/articles/social-psychology-in-sales-copy-good-copy-writing-35271.md>)

Original publisher: [Read original article](<https://darkcoding.net/behaviour/social-psychology-in-sales-copy-good-copy-writing/>)

Author: Graham King

Published: 2009-08-26T18:03:35Z

Content type: opinion

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

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

Tags: [behaviour](<https://devfeed.tech/tags/behaviour.md>), [copy](<https://devfeed.tech/tags/copy.md>), [copywriting](<https://devfeed.tech/tags/copywriting.md>), [email](<https://devfeed.tech/tags/email.md>), [influence](<https://devfeed.tech/tags/influence.md>), [marketing](<https://devfeed.tech/tags/marketing.md>), [psychology](<https://devfeed.tech/tags/psychology.md>), [socialpsychology](<https://devfeed.tech/tags/socialpsychology.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

The article examines how investment marketing uses social proof and scarcity to influence readers, arguing that the email makes an emotional appeal without promising concrete results.

### Source excerpt

Unmasking the psychology behind investment marketing: a cautionary tale.