# le0nidas

Software craftsperson based in Athens, Greece.

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

## Links in Bucket: the chrome-extension that I wrote without writing any code

DevFeed: [Links in Bucket: the chrome-extension that I wrote without writing any code](<https://devfeed.tech/articles/links-in-bucket-the-chrome-extension-that-i-wrote-without-writing-any-code-28723.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/03/29/links-in-bucket-the-chrome-extension-that-i-wrote-without-writing-any-code/>)

Author: Leonidas Partsas

Published: 2026-03-29T06:35:45Z

Content type: article

Language: en

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

Topics: [Extension](<https://devfeed.tech/topics/extension.md>), [Chrome extension](<https://devfeed.tech/topics/chrome-extension.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [articles](<https://devfeed.tech/tags/articles.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [chrome-extension](<https://devfeed.tech/tags/chrome-extension.md>), [code](<https://devfeed.tech/tags/code.md>), [extension](<https://devfeed.tech/tags/extension.md>), [know-your-tools](<https://devfeed.tech/tags/know-your-tools.md>), [vibe-coding](<https://devfeed.tech/tags/vibe-coding.md>)

### AI overview

The article describes creating a Chrome extension called Links in Bucket to collect selected newsletter article links and later send them to NotebookLM for podcast generation. The author explains the use case and the role of prompts in building the extension without prior web-development experience.

### Source excerpt

Newsletters have been a great source for my growth as an engineer. I'm subscribed in quite a few and I've even contributed to some. Unfortunately, I no longer have the time to sit down and read all the articles that piqued my interest. I'm always on the move for work or family matters or I ... Continue reading Links in Bucket: the chrome-extension that I wrote without writing any code ->

## Leveraging @RequireOptIn to create composables that can be used only in previews

DevFeed: [Leveraging @RequireOptIn to create composables that can be used only in previews](<https://devfeed.tech/articles/leveraging-requireoptin-to-create-composables-that-can-be-used-only-in-previews-28722.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/03/22/leveraging-requireoptin-to-create-composables-that-can-be-used-only-in-previews/>)

Author: Leonidas Partsas

Published: 2026-03-22T14:32:15Z

Content type: tutorial

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [compilation-error](<https://devfeed.tech/tags/compilation-error.md>), [components](<https://devfeed.tech/tags/components.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [know-your-tools](<https://devfeed.tech/tags/know-your-tools.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [module](<https://devfeed.tech/tags/module.md>), [preview](<https://devfeed.tech/tags/preview.md>), [production](<https://devfeed.tech/tags/production.md>), [requireoptin](<https://devfeed.tech/tags/requireoptin.md>)

### AI overview

This tutorial explains how to use Kotlin's @RequiresOptIn mechanism with a @PreviewOnly annotation to expose composables for preview rendering across modules while preventing their use in production code. Explicit opt-in is required at each call site, otherwise compilation fails.

### Source excerpt

Anyone working with Kotlin, especially in the android world, has dealt with RequireOptIn. Actually they had to deal with the consequence of its application which is to explicitly opt-in into using a piece of code that is annotated with it. @RequiresOptIn In a nutshell, if you want the consumer of your code to be fully ... Continue reading Leveraging @RequireOptIn to create composables that can be used only in previews ->

## Using coding agents as modular components in developer tools

DevFeed: [Using coding agents as modular components in developer tools](<https://devfeed.tech/articles/use-ai-in-a-tool-not-as-a-tool-28721.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/03/18/use-ai-_in_-a-tool-not-_as_-a-tool/>)

Author: Leonidas Partsas

Published: 2026-03-18T17:51:32Z

Content type: opinion

Language: en

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

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Git](<https://devfeed.tech/topics/git.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [bash](<https://devfeed.tech/tags/bash.md>), [beads](<https://devfeed.tech/tags/beads.md>), [coding](<https://devfeed.tech/tags/coding.md>), [git](<https://devfeed.tech/tags/git.md>), [good-practices](<https://devfeed.tech/tags/good-practices.md>), [open-code](<https://devfeed.tech/tags/open-code.md>), [opencode](<https://devfeed.tech/tags/opencode.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

The article argues that coding agents should be embedded as focused components within developer tools rather than treated as monolithic tools. It illustrates the approach by decomposing an OpenCode-based commit workflow into Bash scripts and a custom agent, following single-responsibility and composability principles.

### Source excerpt

Or to be more exact, use a coding agent in a tool. This is my new starting point every time I begin to think of a tool I want to implement. Being part of the pipeline A couple of weeks ago I thought of creating an OpenCode agent that will check my uncommitted changes, construct ... Continue reading Use AI _in_ a tool not _as_ a tool ->

## Handle RecyclerView's scroll events in custom TopAppBarScrollBehavior

DevFeed: [Handle RecyclerView's scroll events in custom TopAppBarScrollBehavior](<https://devfeed.tech/articles/handle-recyclerview-s-scroll-events-in-custom-topappbarscrollbehavior-28720.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/02/08/handle-recyclerviews-scroll-events-in-custom-topappbarscrollbehavior/>)

Author: Leonidas Partsas

Published: 2026-02-08T11:58:14Z

Content type: tutorial

Language: en

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

Topics: [recyclerview](<https://devfeed.tech/topics/recyclerview.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [animation](<https://devfeed.tech/tags/animation.md>), [behavior](<https://devfeed.tech/tags/behavior.md>), [compose](<https://devfeed.tech/tags/compose.md>), [featured](<https://devfeed.tech/tags/featured.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [recyclerview](<https://devfeed.tech/tags/recyclerview.md>), [top-app-bar](<https://devfeed.tech/tags/top-app-bar.md>)

### AI overview

A tutorial on handling RecyclerView scroll events in a custom TopAppBarScrollBehavior for Compose. It implements fully collapsed and expanded states, adds animation and scroll buffering, and extends the approach to an exit-until-collapsed behavior.

### Source excerpt

In a previous post we saw how to send a RecyclerView's scroll events to a compose parent so that we can leverage the top bar's enter always scroll behavior. The result was good but not great. The top app bar was collapsing and expanding as expected but it was also rendering partially during the transition: ... Continue reading Handle RecyclerView's scroll events in custom TopAppBarScrollBehavior ->

## A human-in-the-loop workflow for OpenCode agents, subagents, and Beads

DevFeed: [A human-in-the-loop workflow for OpenCode agents, subagents, and Beads](<https://devfeed.tech/articles/pinky-and-the-brain-my-agent-subagent-duo-28719.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/01/06/pinky-and-the-brain-my-agent-subagent-duo/>)

Author: Leonidas Partsas

Published: 2026-01-06T14:51:35Z

Content type: tutorial

Language: en

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

Topics: [configuration](<https://devfeed.tech/topics/configuration.md>), [context window](<https://devfeed.tech/topics/context-window.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic-coding](<https://devfeed.tech/tags/agentic-coding.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [beads](<https://devfeed.tech/tags/beads.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [context-window](<https://devfeed.tech/tags/context-window.md>), [execution](<https://devfeed.tech/tags/execution.md>), [know-your-tools](<https://devfeed.tech/tags/know-your-tools.md>), [opencode](<https://devfeed.tech/tags/opencode.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [review](<https://devfeed.tech/tags/review.md>), [tasks](<https://devfeed.tech/tags/tasks.md>)

### AI overview

The article describes a personal development workflow using one primary OpenCode agent, one subagent, and Beads to manage planned tasks. The primary agent selects tasks, delegates implementation, requests human review, and commits approved changes, with an inner loop for requested revisions.

### Source excerpt

OpenCode's agents configuration and Beads. A match made in heaven. My flow until now Working on a task starts with the Plan agent. I provide an initial prompt of what I want to achieve and the agent responds with a plan. If the plan needs adjustments I ask the agent to update it. When I'm ... Continue reading Pinky and the Brain: my agent/subagent duo ->

## n: the command-line tool that I wrote without writing any code

DevFeed: [n: the command-line tool that I wrote without writing any code](<https://devfeed.tech/articles/n-the-command-line-tool-that-i-wrote-without-writing-any-code-28718.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/01/04/n-the-command-line-tool-that-i-wrote-without-writing-any-code/>)

Author: Leonidas Partsas

Published: 2026-01-04T10:09:38Z

Content type: opinion

Language: en

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

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Warp](<https://devfeed.tech/topics/warp.md>), [Development](<https://devfeed.tech/topics/development.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [coding](<https://devfeed.tech/tags/coding.md>), [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [engineering-manager](<https://devfeed.tech/tags/engineering-manager.md>), [github](<https://devfeed.tech/tags/github.md>), [go](<https://devfeed.tech/tags/go.md>), [repo](<https://devfeed.tech/tags/repo.md>), [vibe-coding](<https://devfeed.tech/tags/vibe-coding.md>), [warp](<https://devfeed.tech/tags/warp.md>)

### AI overview

The author describes creating a command-line tool in an afternoon with Warp and coding-agent assistance, choosing Go for the initial implementation. The tool organizes dated notes about reports, supports tagging, editing, deletion, backups using GitHub, and multiple ways to view notes. The author also explains how beads helped manage tasks while keeping the coding agent's context focused.

### Source excerpt

There are three reasons I wanted to write this blog post: A tool in an afternoon The idea of a command line tool that will fit my needs was planted quite a while a go. Couldn't find the time or didn't have the energy to act on it so it remained just that, an idea. ... Continue reading n: the command-line tool that I wrote without writing any code ->

## 3 weeks of agentic coding

DevFeed: [3 weeks of agentic coding](<https://devfeed.tech/articles/3-weeks-of-agentic-coding-28717.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2025/11/16/3-weeks-of-agentic-coding/>)

Author: Leonidas Partsas

Published: 2025-11-16T18:29:49Z

Content type: opinion

Language: en

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

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

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-coding](<https://devfeed.tech/tags/agentic-coding.md>), [ai](<https://devfeed.tech/tags/ai.md>), [coding](<https://devfeed.tech/tags/coding.md>), [know-your-tools](<https://devfeed.tech/tags/know-your-tools.md>), [llms](<https://devfeed.tech/tags/llms.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

A developer reflects on using an AI coding agent on production code. The article describes a plan-first workflow with review stages and cautions against vague prompts, immediate execution, and overly broad requests.

### Source excerpt

use gh and tell me how many PRs I have authored the last 3 weeks. from these PRs how many are merged? what was the total of added and removed lines? Up until now the main way of using LLMs was through chat. Every time I wanted to do a deep dive on a technical ... Continue reading 3 weeks of agentic coding ->

## Send RecyclerView's scroll events to a compose parent

DevFeed: [Send RecyclerView's scroll events to a compose parent](<https://devfeed.tech/articles/send-recyclerview-s-scroll-events-to-a-compose-parent-28716.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2025/08/10/send-recyclerviews-scroll-events-to-a-compose-parent/>)

Author: Leonidas Partsas

Published: 2025-08-10T06:58:04Z

Content type: tutorial

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [recyclerview](<https://devfeed.tech/topics/recyclerview.md>), [screen](<https://devfeed.tech/topics/screen.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [compose](<https://devfeed.tech/tags/compose.md>), [enter-always-behavior](<https://devfeed.tech/tags/enter-always-behavior.md>), [featured](<https://devfeed.tech/tags/featured.md>), [fragment](<https://devfeed.tech/tags/fragment.md>), [fragments](<https://devfeed.tech/tags/fragments.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [nested-scroll](<https://devfeed.tech/tags/nested-scroll.md>), [recyclerview](<https://devfeed.tech/tags/recyclerview.md>), [screen](<https://devfeed.tech/tags/screen.md>), [top-app-bar](<https://devfeed.tech/tags/top-app-bar.md>)

### AI overview

This tutorial explains how to send RecyclerView scroll events to a Jetpack Compose parent during a gradual migration from fragment-based Android screens. It describes connecting Compose nested-scroll behavior to a RecyclerView using a NestedScrollDispatcher so a Compose top bar can respond to scrolling.

### Source excerpt

We have an app that relies heavily on fragments. Every screen is an activity that hosts a fragment that hosts a recycler view: We want to start migrating the screens to compose by keeping the screen's content and placing it in a compose environment. This means that our activities will call setContent { } instead ... Continue reading Send RecyclerView's scroll events to a compose parent ->

## Using Ollama and Kotlin to migrate multiple files into a new library

DevFeed: [Using Ollama and Kotlin to migrate multiple files into a new library](<https://devfeed.tech/articles/using-ollama-and-kotlin-to-migrate-multiple-files-into-a-new-library-28715.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2025/03/09/using-ollama-and-kotlin-to-migrate-multiple-files-into-a-new-library/>)

Author: Leonidas Partsas

Published: 2025-03-09T16:26:35Z

Content type: tutorial

Language: en

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

Topics: [Ollama](<https://devfeed.tech/topics/ollama.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Library](<https://devfeed.tech/topics/library.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [llm](<https://devfeed.tech/tags/llm.md>), [migration](<https://devfeed.tech/tags/migration.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [ollama](<https://devfeed.tech/tags/ollama.md>), [til](<https://devfeed.tech/tags/til.md>)

### AI overview

The article describes using Ollama with Kotlin to migrate a project from LoganSquare to kotlinx.serialization across multiple files. It outlines a workflow that loads file contents, sends them with prompts to a local LLM, and writes the results back, using OkHttp and kotlinx.serialization to communicate with Ollama.

### Source excerpt

At work, there is a need to migrate our project from using LoganSquare to kotlinx.serialization. Part of the work involves replacing the annotations the first library is using with the ones from the second. Unfortunately some cases are not as simple as replacing foo with boo. For example, a property must be annotated with @JsonField(name ... Continue reading Using Ollama and Kotlin to migrate multiple files into a new library ->

## I guess i'm an engineering manager now

DevFeed: [I guess i'm an engineering manager now](<https://devfeed.tech/articles/i-guess-i-m-an-engineering-manager-now-28714.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2024/12/08/i-guess-im-an-engineering-manager-now/>)

Author: Leonidas Partsas

Published: 2024-12-08T11:51:44Z

Content type: opinion

Language: en

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

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Self-organizing Team](<https://devfeed.tech/topics/self-organizing-team.md>)

Tags: [engineering-manager](<https://devfeed.tech/tags/engineering-manager.md>), [featured](<https://devfeed.tech/tags/featured.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [team](<https://devfeed.tech/tags/team.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

A personal reflection on transitioning from an individual contributor to an engineering manager in software development. The author describes learning to focus less on writing code and solving every problem personally, and more on supporting the team, setting direction, prioritizing work, and maintaining project quality.

### Source excerpt

It took me two and half years to come to terms with my new role. So, why now? I guess its a process like everything else. You start something new and feel completely out of your league. You educate yourself and try to apply your learnings. You make mistakes and feel awful. You try something ... Continue reading I guess i'm an engineering manager now ->