Software engineer writing about distributed systems, reactive architecture, and high-performance Java.

Running Local LLMs for Coding and Private Agents

Why Run Models Locally? Cloud-hosted LLMs are convenient, but they come with trade-offs that matter when you are writing code or building private tools. Every prompt you send to a hosted API leaves your machine — your proprietary code, internal architecture details, database schemas, and business logic all travel to a third-party server. For personal projects this might be acceptable, but for anything involving proprietary code, client data, or internal tooling, it raises real concerns. ...

March 16, 2026 · 15 min · Alisher Alimov

Building a Reactive Telegram Bot Framework with Java

Why another Telegram bot framework? Building Telegram bots is straightforward — the API is well-documented, and there are dozens of libraries in every language. However, most existing Java frameworks share the same fundamental limitation: they process updates sequentially on blocking threads. This works fine for hobby projects handling a few messages per minute, but it becomes a bottleneck the moment your bot needs to serve thousands of concurrent users, handle complex multi-step workflows, or integrate with other microservices in a distributed system. ...

March 15, 2026 · 10 min · Alisher Alimov

How to Publish JARs to Maven Central

Why Maven Central? If you maintain an open-source Java library, Maven Central is the standard distribution channel. It is the default repository for Gradle and Maven, meaning any developer can add your library as a dependency without configuring custom repositories. Publishing there gives your project discoverability, trust, and seamless integration into existing build pipelines. However, the publishing process has changed significantly in recent years. If you have published to Maven Central before using the legacy OSSRH (OSS Repository Hosting) workflow, much of what you know no longer applies. This article covers the current process using the new Central Portal, including what changed and why your old setup may have stopped working. ...

March 13, 2026 · 9 min · Alisher Alimov

Apache Pulsar vs Kafka: Rethinking the Message Broker — Part 1

Introduction Kafka has been the default choice for event streaming for over a decade. It earned that position — it solved real problems at LinkedIn-scale when nothing else could, and the ecosystem built around it is massive. If you are building a new system today and someone says “use Kafka,” that is not bad advice. But it is incomplete advice. Apache Pulsar was created at Yahoo in 2013 to solve problems that Kafka’s architecture made structurally difficult: multi-tenancy across thousands of topics, independent scaling of storage and compute, and geo-replication as a first-class feature rather than an afterthought. It was open-sourced in 2016 and became a top-level Apache project in 2018. ...

March 9, 2026 · 12 min · Alisher Alimov

Comparing 3 Spring Boot Apps: Classic Servlet, Reactive, RSocket

Introduction This article tests three distinct Spring Boot application architectures: Classic Servlet App (Servlet) Reactive RSocket Motivation HTTP is a widely used transport for APIs, and it has pros and cons. It’s old and has big performance issues, but it is still widely used because of its ease of use. Assumptions Basic applications without best practices implementation Tests may not be identical in every aspect JVM parameters remain unoptimized for each application type Requirements Accept messages, receive lists/streams, save to database with empty response List messages by author with return of all messages Identical data feeds across all tests Measure requests per second (RPS) Message Format: ...

February 9, 2025 · 3 min · Alisher Alimov

Reactive Architecture. Theoretical Dive into Blocking Architecture

Business needs first Goals The primary objective for every software engineer is not to provide solutions with the latest modern library or architecture, the main goal is to help businesses to solve their problems. To achieve this software engineers need to provide solutions that will efficiently help to solve business problems with minimum errors and optimum costs that will help businesses be profitable in the end. This goal is critical and directly informs how we allocate our resources and design our systems. ...

February 8, 2025 · 8 min · Alisher Alimov