# Posts on AlecStrong

All Posts | AlecKazakova

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

## Please Stop Authoring With Ai

DevFeed: [Please Stop Authoring With Ai](<https://devfeed.tech/articles/please-stop-authoring-with-ai-25528.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/please-stop-authoring-with-ai/>)

Author: Author

Published: 2026-08-22T01:00:31Z

Content type: opinion

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

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

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [coding](<https://devfeed.tech/tags/coding.md>), [technical](<https://devfeed.tech/tags/technical.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

The author argues that writing, especially technical writing, creates clarity, encourages empathy for readers, substitutes for conversation, and can help regulate emotions. They ask people to stop using AI to author their writing while accepting AI for research, coding, and communication.

### Source excerpt

Please Stop Authoring With AI Written word - especially technical writing - has a few particular purposes I find really valuable; When you write something down it creates clarity. You're not just writing, you're reading, you're probably also speaking, you're doing a lot of thinking. The words are both your thoughts and a mechanism to do thinking. You probably reorganize, rewrite, if you're an expert you toil over your words anticipating how someone might interpret them wrong.

## Testing a Shared KMM Repo Locally

DevFeed: [Testing a Shared KMM Repo Locally](<https://devfeed.tech/articles/testing-a-shared-kmm-repo-locally-25526.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/local-kmm/>)

Author: Author

Published: 2021-05-04T01:37:14Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A tutorial on developing Kotlin Multiplatform Mobile code locally when shared code is maintained in a separate repository. It describes using Gradle composite builds for Android and CocoaPods local development for iOS instead of published artifacts.

### Source excerpt

There's a lot of different ways of organizing your Kotlin Multiplatform Mobile codebase, Ben Asher and I gave an overview of some of those at KotlinConf 2019, where I described a setup where the shared code lives in your iOS and Android codebase and is copied between them. The pro of this was an easy local development setup, but there are a lot of cons. We moved away from this style to a separate (third) repository for the multiplatform code last year.

## Shading IntelliJ IDEA Dependencies in a Gradle Plugin

DevFeed: [Shading IntelliJ IDEA Dependencies in a Gradle Plugin](<https://devfeed.tech/articles/what-we-do-in-the-shadows-25529.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/shading/>)

Author: Author

Published: 2021-04-03T21:24:07Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

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

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [plugin](<https://devfeed.tech/tags/plugin.md>)

### AI overview

A practical guide to shading dependencies in a Gradle plugin, focusing on bundling IntelliJ IDEA APIs for SQLDelight. It explains how to inspect shaded JARs and addresses oversized JARs and transitive dependency problems.

### Source excerpt

If you're in the business of publishing JVM libraries its possible you've needed to deal with dependency shading - bundling external jars in with your library and renaming the packages along the way to prevent a diamond dependency conflict. If your published JVM library is built with Gradle it's then likely you've used John Engleman's shading plugin 'shadow'. It's really a fantastic plugin to solve this problem, thank you mr engleman.

## Android 30 SQLite ALTER TABLE Changes Can Break Migrations on Tables Used in Views

DevFeed: [Android 30 SQLite ALTER TABLE Changes Can Break Migrations on Tables Used in Views](<https://devfeed.tech/articles/mysterious-sqlite-bugs-and-how-to-solve-them-25530.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/sqlite-sdk-30/>)

Author: Author

Published: 2020-07-22T14:02:11Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Android](<https://devfeed.tech/topics/android.md>), [migration](<https://devfeed.tech/topics/migration.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This article explains how Android 30's SQLite upgrade from 3.22.0 to 3.28.0 changes ALTER TABLE behavior for tables used in views, potentially causing runtime exceptions during migrations. It also discusses diagnosing obfuscated stack traces with mapping files and ReTrace.

### Source excerpt

TLDR: Android 30 upgrades SQLite from 3.22.0 -> 3.28.0, this introduces new alter table behavior which will potentially cause runtime exceptions when ALTER TABLE statements are ran on tables which are used in a view. To preserve old behavior turn on PRAGMA legacy_alter_table=ON before running your migrations. Late last week we experienced a weird bug on Cash App happening to a few of our developers - reproducibly but not for everyone.

## SQLite Helper Queries

DevFeed: [SQLite Helper Queries](<https://devfeed.tech/articles/sqlite-helper-queries-25524.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/cte/>)

Author: Author

Published: 2020-05-14T01:31:03Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [SQLite](<https://devfeed.tech/topics/sqlite.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [programming](<https://devfeed.tech/tags/programming.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This tutorial explains how common table expressions can simplify complex SQLite queries. It compares a correlated subquery with a materialized common table expression, discusses query-plan implications, and demonstrates recursive queries for splitting a string into words.

### Source excerpt

In programming one of the earliest tools we're given for simplifying complex code is helper functions. Splitting code into smaller more digestible blocks makes it easier to maintain and read, which is usually more important than code that's easier to write. In SQL we have tools for accomplishing the same thing! One of the bigger ones is views which can help share an underlying query between multiple other ones. Leandro Favarin wrote a great post on how to put views into practice in SQLite here.

## Supporting Multiple Dialects in SQLDelight

DevFeed: [Supporting Multiple Dialects in SQLDelight](<https://devfeed.tech/articles/supporting-multiple-dialects-in-sqldelight-25527.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/multiple-dialects/>)

Author: Author

Published: 2020-02-13T18:15:17Z

Content type: article

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [SQLite](<https://devfeed.tech/topics/sqlite.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [ANTLR](<https://devfeed.tech/topics/antlr.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [lexer](<https://devfeed.tech/tags/lexer.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [python](<https://devfeed.tech/tags/python.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sqldelight](<https://devfeed.tech/tags/sqldelight.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This article explains how SQLDelight supports multiple SQL dialects, including SQLite 3.18, SQLite 3.24, and MySQL. It describes the compiler, lexer, parser, AST, and the use of JetBrains Grammar Kit to build composable parsing and incrementally extend dialect support.

### Source excerpt

With SQLDelight 1.3.0 and above we now support multiple dialects of SQL (at time of writing: SQLite 3.18, SQLite 3.24, and MySQL). They're not complete implementations of any of those dialects but they support necessary features and the real meat of the release is a straightforward framework for adding parts of the dialects incrementally. For example, SQLite 3.24 is just SQLite 3.18 with upsert on top (thank you Angus Holder!).

## Integrating Github Actions for Kotlin Multiplatform

DevFeed: [Integrating Github Actions for Kotlin Multiplatform](<https://devfeed.tech/articles/integrating-github-actions-for-kotlin-multiplatform-25525.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/github-actions-mpp/>)

Author: Author

Published: 2020-01-24T01:57:46Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This tutorial explains how to use GitHub Actions for Kotlin Multiplatform projects that must build artifacts on different operating systems. It covers CI workflows, build matrices, Android Emulator Runner, Gradle wrapper verification, and release workflows for artifacts and an IntelliJ plugin.

### Source excerpt

With Kotlin Multiplatform (KMP) it's possible to build artifacts for multiple platforms using the same toolchain, but until portable artifacts for KMP are released you need to build platform artifacts on their respective platforms. With SqlDelight 1.2.2 we now also deploy Windows (mingW) artifacts, meaning it's impossible to publish from a single OS (since we also support macOS targets). There was no simple setup with Travis and Github Actions is the new hot stuff so we gave that a go and here's how it works: