# Roman Kryvolapov > Engineering blog: Java, Kotlin, Android, Spring, microservices, running large language models locally. Every link leads to the plain-text (markdown) version of a page; the same page in HTML is at the same address without the `.md` extension. ## MCP server - [MCP endpoint](https://mcp.romankryvolapov.com/): Streamable HTTP, no authentication. Tools: `search` — full-text search over every article; each exists in English, Russian and Ukrainian, and results come in one language (`lang`: en, ru or uk; without it, guessed from the query); `fetch` — the full text of one article by the id from search; `get_page` — the same by its URL, as plain markdown; `send_message` — a message to the author, at most 20 a day from all agents together and 3 from one email address. - [Server card](https://romankryvolapov.com/.well-known/mcp/server-card.json): the same in machine-readable form (also [mcp.json](https://romankryvolapov.com/.well-known/mcp.json)). - WebMCP: every page registers `search` and `get_page` for in-browser agents through `document.modelContext`; the contact page (`/en/contact/`, `/ru/contact/`, `/uk/contact/`) also registers `send_message`. ## English - [About me](https://romankryvolapov.com/en/about.md): Roman Kryvolapov — Lead AI/ML Engineer with 15+ years in commercial development. Production LLM/ML systems, agents, and backends for banks and government agencies. - [Comparison of 41 AI harnesses — from Claude Code to OpenClaw](https://romankryvolapov.com/en/ai-agent-harnesses.md): Coding agents and general-purpose agents compared: Claude Code, Codex, Cursor, Copilot, OpenCode, OpenClaw, Hermes — licenses, models, configuration, sandboxing, benchmarks, training on your code and leaks. - [Android — Components and Views](https://romankryvolapov.com/en/android-components-and-views.md): Android internals for interviews: Activity, Fragment and Service lifecycles, Context, Intent, WorkManager, RecyclerView and MVP vs MVVM vs MVI. - [Logging Android application work in txt files](https://romankryvolapov.com/en/android-logging-to-file.md): A LogUtil logger for Android that writes debug and error logs plus OkHttp network traffic into separate txt files on the device storage. - [Mock Server Responses in Android Development using Interceptor](https://romankryvolapov.com/en/android-mock-interceptor.md): Mocking server responses in Android with a custom OkHttp Interceptor: a MockResponse model, a URL-keyed map, and wiring it into OkHttpClient. - [Android Paging 3 and Paging in AdapterDelegates](https://romankryvolapov.com/en/android-paging-3.md): Building pagination in Android with Paging 3: PagingSource, PagingDataAdapter, load-state footers, and wiring it into AdapterDelegates. - [Android Push Provisioning API](https://romankryvolapov.com/en/android-push-provisioning-api.md): Adding bank cards to Google Pay from an Android app: tapAndPay SDK setup, API allowlisting, Google Pay UI rules, and encrypted OPC handling. - [How to enable Wi-Fi debugging in Android Studio](https://romankryvolapov.com/en/android-wifi-debugging.md): Debugging an Android app over Wi-Fi: the classic adb tcpip and adb connect route, and Android 11+ wireless debugging with pairing by code or QR. - [How to set up Charles Proxy for the Android Studio emulator](https://romankryvolapov.com/en/charles-proxy-android-emulator.md): Step-by-step Charles Proxy setup for the Android emulator: proxy via adb, the Charles certificate, a network security config for your app's HTTPS, and rewriting responses. - [Claude Code — Best Practices](https://romankryvolapov.com/en/claude-code-best-practices.md): How to organize work with Claude Code: project instructions, rules and skills, a task and bug tracker in the repository, planning before code, subagents, context, permissions and budget. - [Claude Code — commands, settings, flags](https://romankryvolapov.com/en/claude-code-commands-and-settings.md): A Claude Code reference: every slash command with its arguments broken down and examples, settings.json keys, permission rules, terminal subcommands, flags and environment variables. Current as of August 2026. - [Claude Code Hooks](https://romankryvolapov.com/en/claude-code-hooks.md): A walkthrough of Claude Code hooks: every event, exit codes and JSON decisions, matcher and if, the five handler types, and three working hooks — sound, subscription limits and a work log. - [DexClassLoader, or loading part of an app from the network](https://romankryvolapov.com/en/dex-class-loader.md): How an Android app downloads a .dex file from a server and loads classes from it with DexClassLoader, what Android 14 restricts, and why Google Play forbids it. - [DSPy — Automatic Prompt Generation](https://romankryvolapov.com/en/dspy.md): DSPy 3.4 through a support agent: signatures instead of prompt text, tools, a metric, the MIPROv2 and GEPA optimizers, saving the result, and what changes in DSPy 3.5. - [GEO, MCP and WebMCP: how ChatGPT, Claude and Gemini find, read and use websites](https://romankryvolapov.com/en/geo-mcp-webmcp.md): GEO in practice: how AI assistants find a site, what to set up in robots.txt, markup and content, how to connect MCP and WebMCP, and what an online store needs for AI-driven purchases. - [Google Guava in Examples](https://romankryvolapov.com/en/google-guava-in-examples.md): A tour of Google Guava through Kotlin examples: Multimap, BiMap, Table, caching, string utilities, hashing, IO helpers and concurrency. - [gRPC — How it works](https://romankryvolapov.com/en/grpc.md): How gRPC works on top of HTTP/2 and Protocol Buffers, where it beats REST for internal services, and how to build a Kotlin server and client. - [Setup custom launch options for IntelliJ IDEA / Android Studio](https://romankryvolapov.com/en/intellij-idea-launch-options.md): What each flag in Edit Custom VM Options actually does: heap sizes, Garbage Collector choice, code cache, and memory tuning for Android Studio. - [Java Core — Basic Questions](https://romankryvolapov.com/en/java-core-questions.md): Java Core interview answers: data types, collections and HashMap, generics, reflection, JVM memory layout and how the garbage collector works. - [Java / Kotlin Core — Multithreading](https://romankryvolapov.com/en/java-kotlin-multithreading.md): Java and Kotlin concurrency explained: volatile, synchronized, ReentrantLock, coroutines and Channels, RxJava operators and backpressure strategies. - [Java / Kotlin Core — Theoretical Questions](https://romankryvolapov.com/en/java-kotlin-theory.md): Big-O costs of collection operations, design patterns, SOLID, inheritance versus composition and higher-order functions in Java and Kotlin. - [Java Spring — Spring Annotations](https://romankryvolapov.com/en/java-spring-annotations.md): A reference to Spring annotations with Kotlin examples: @Component, @Bean, @Transactional, request mapping, JPA, and how @Component differs from @Bean. - [Java Spring — Cloud](https://romankryvolapov.com/en/java-spring-cloud.md): Cloud services for Java across AWS, Google Cloud and Azure: side-by-side equivalents, cost optimization, serverless, Git LFS and submodules. - [Java Spring — Spring Components](https://romankryvolapov.com/en/java-spring-components.md): Configuring application.properties, WebSocket, GraphQL, OAuth 2.0, Spring Security, Actuator, WebFlux and Batch with real code and config examples. - [Java Spring — Concepts](https://romankryvolapov.com/en/java-spring-concepts.md): Core backend concepts behind Spring: Saga and Rollback, SOLID, Clean Architecture, REST vs RPC vs GraphQL, IoC and DI, Spring MVC and Project Reactor. - [Java Spring — Data Storage](https://romankryvolapov.com/en/java-spring-data-storage.md): Data storage in Spring: ACID and isolation levels, @Transactional, JPA vs JDBC, Spring Data repositories, Redis caching, Flyway and indexes. - [Java Spring — Microservices](https://romankryvolapov.com/en/java-spring-microservices.md): Microservice communication in Spring: REST and WebClient, Kafka and RabbitMQ, Docker and Kubernetes, Eureka, Cloud Gateway, and request tracing. - [Java Spring — List of Questions](https://romankryvolapov.com/en/java-spring-questions.md): A navigable index of Java developer interview questions: Java Core, Kotlin, concurrency, Spring annotations and components, microservices, and SQL. - [Kotlin 2.0 — Key Syntax Changes](https://romankryvolapov.com/en/kotlin-2-key-syntax-changes.md): What changed in Kotlin 2.0 syntax: context receivers, value classes, sealed interfaces, destructuring in for loops and pattern matching in when. - [Kotlin Core — Basic Questions](https://romankryvolapov.com/en/kotlin-core-questions.md): How coroutines and suspend actually work, when to use launch instead of async, plus scope functions, delegates, extensions and companion objects. - [Introduction to Ktor and Exposed](https://romankryvolapov.com/en/ktor-manual.md): Building a Kotlin server with Ktor: Exposed and JDBI for the database, Koin for dependency injection, Mockk and Testcontainers tests, Flyway migrations. - [Kubernetes — How it works](https://romankryvolapov.com/en/kubernetes.md): How Kubernetes works: control plane architecture, namespaces, load balancing, everyday kubectl commands, the Dashboard and Prometheus monitoring. - [LangChain and LangGraph — agents, graphs and the infrastructure around them](https://romankryvolapov.com/en/langchain-langgraph.md): How the LangChain 1.x and LangGraph 1.x stack fits together: models and messages, tools, create_agent and middleware, StateGraph with reducers, checkpointers and store, streaming, human-in-the-loop, LangSmith, Agent Server and the langgraph CLI, plus the 0.x migration. - [llama.cpp AI LLM Engine — How It Works](https://romankryvolapov.com/en/llama-cpp.md): How inference works inside llama.cpp: loading a GGUF model, tokenization, building the compute graph, the KV-cache, and token sampling. - [LLM inference engines: vLLM, llama.cpp, LiteRT-LM and others — speed, hardware, scaling](https://romankryvolapov.com/en/llm-inference-engines.md): What to run language models with in late 2026: the engines vLLM, SGLang, TensorRT-LLM, llama.cpp, MLX, LiteRT-LM and ExecuTorch, and programs built on them such as Ollama and LM Studio — what makes the engines fast, what hardware they run on and how they scale, with measurements on a laptop. - [Running LLMs locally on an Android smartphone](https://romankryvolapov.com/en/llm-on-android.md): What can run a language model right on Android: LiteRT-LM, llama.cpp, MediaPipe, MLC LLM and ONNX Runtime GenAI — which to choose, how to prepare a model, and Kotlin code that stops generation correctly. - [LoRA — Fine-Tuning AI LLM Models](https://romankryvolapov.com/en/lora-fine-tuning.md): Fine-tuning an LLM with LoRA: when it beats RAG and when it does not, how the adapters work, and two complete examples for Gemma 4 E2B on Unsloth and PEFT with export to GGUF. - [Small manual on MapStruct](https://romankryvolapov.com/en/mapstruct-manual.md): Practical MapStruct recipes for Kotlin: mapping mismatched field names, @Named methods, reusing mapping logic, and avoiding common compile-time errors. - [Microservices and Web Application Security](https://romankryvolapov.com/en/microservices-security.md): Auth microservices, API Gateway, mTLS and certificates: how to store passwords safely, stop brute-force attacks and choose encryption algorithms. - [Neural networks in simple terms](https://romankryvolapov.com/en/neural-networks-basics.md): How an LLM actually works: tokenization, embeddings, transformer attention, quantization, and the samplers that pick each next token. - [Offline AI Launcher — launch AI LLM neural networks on smartphone](https://romankryvolapov.com/en/offline-ai-launcher.md): Offline AI Launcher runs LLMs like Gemma, DeepSeek, Llama and Qwen straight on your Android phone from .gguf files, with no internet or subscription. - [Privacy policy](https://romankryvolapov.com/en/privacy.md): What romankryvolapov.com collects and why — Cloudflare hosting, analytics only with consent, the contact form, and the MCP server and WebMCP tools for AI assistants. - [Introduction to Project Loom](https://romankryvolapov.com/en/project-loom-manual.md): Project Loom virtual threads in Java: how the JVM schedules them on carrier threads, how they differ from Kotlin Coroutines, and enabling them in Spring. - [Prompt engineering techniques for Large Language Models](https://romankryvolapov.com/en/prompt-engineering.md): The effort knob on reasoning models, strict output schemas, agent prompts, delimiters, XML tags and few-shot — how to write prompts for ChatGPT, Claude or Gemini and get predictable output. - [Python for Java Developers](https://romankryvolapov.com/en/python-for-java-developers.md): Python for those who know Java: syntax and core methods next to Java, strings, collections, generators, threads, asyncio and a microservice on the standard library. - [RAG (Retrieval-Augmented Generation), Function / Tools Calling, CAG (Cache-Augmented Generation) for LLM models](https://romankryvolapov.com/en/rag-and-function-calling.md): RAG, function calling and CAG for local LLMs: how vector search works, with working examples in Kotlin, Dspy, LangChain, LangChain4j and llama.cpp. - [Dynamic UI Generation in Android Application Using RecyclerView and AdapterDelegates](https://romankryvolapov.com/en/recyclerview-adapterdelegates.md): Building dynamic Android UI with RecyclerView and AdapterDelegates: writing delegates, reusing list items, and diffing them without DiffUtil boilerplate. - [Relational SQL databases](https://romankryvolapov.com/en/relational-sql-databases.md): SQL syntax, views and indexes, JOIN and CTE queries, pessimistic and optimistic locking, and reading query plans in PostgreSQL, MySQL and Oracle. - [Vector databases](https://romankryvolapov.com/en/vector-databases.md): How vector databases work: embeddings, HNSW indexing and similarity search, plus a comparison of Milvus, Qdrant and Weaviate with Milvus code. ## Українська - [Про мене](https://romankryvolapov.com/uk/about.md): Роман Криволапов — провідний AI/ML-інженер, понад 15 років у комерційній розробці. LLM/ML-системи в продакшені, агенти, бекенди для банків і державних установ. - [Порівняння 41 AI-харнеса — від Claude Code до OpenClaw](https://romankryvolapov.com/uk/ai-agent-harnesses.md): Агенти для програмування й універсальні агенти: Claude Code, Codex, Cursor, Copilot, OpenCode, OpenClaw, Hermes — ліцензії, моделі, налаштування, пісочниця, бенчмарки, навчання на вашому коді й витоки. - [Android — Компоненти та View](https://romankryvolapov.com/uk/android-components-and-views.md): Життєві цикли Activity, Fragment, View та Service, будова Context, Intent, WorkManager, RecyclerView і різниця між MVP, MVVM, MVC та MVI. - [Логування роботи Android застосунку в txt файли](https://romankryvolapov.com/uk/android-logging-to-file.md): Логер LogUtil для Android: запис debug- та error-логів і мережевих запитів OkHttp в окремі txt-файли у папці Документи на телефоні. - [Mock відповідей сервера в Android розробці за допомогою Interceptor](https://romankryvolapov.com/uk/android-mock-interceptor.md): Як підміняти відповіді сервера в Android власним OkHttp Interceptor: модель MockResponse, map за url і підключення до OkHttpClient. - [Android Paging 3 та Paging in AdapterDelegates](https://romankryvolapov.com/uk/android-paging-3.md): Пагінація в Android на Paging 3: PagingSource, PagingDataAdapter, адаптер станів завантаження та підключення до AdapterDelegates. - [Android Push Provisioning API](https://romankryvolapov.com/uk/android-push-provisioning-api.md): Підключення Android Push Provisioning API: налаштування tapAndPay SDK, whitelist застосунку, вимоги Google Pay до UI та передача картки через OPC. - [Як увімкнути налагодження по Wi-Fi в Android Studio](https://romankryvolapov.com/uk/android-wifi-debugging.md): Налагодження Android-застосунку по Wi-Fi: класичний спосіб через adb tcpip і adb connect та бездротове налагодження Android 11+ зі сполученням за кодом або QR. - [Як налаштувати Charles Proxy для емулятора Android Studio](https://romankryvolapov.com/uk/charles-proxy-android-emulator.md): Покрокове налаштування Charles Proxy для емулятора Android: проксі через adb, сертифікат Charles, network security config для HTTPS застосунку та підміна відповідей. - [Claude Code — Best Practices](https://romankryvolapov.com/uk/claude-code-best-practices.md): Як організувати роботу з Claude Code: інструкції проєкту, правила та скіли, трекер завдань і багів у репозиторії, план перед кодом, підагенти, контекст, дозволи й витрати бюджету. - [Claude Code — команди, налаштування, прапорці](https://romankryvolapov.com/uk/claude-code-commands-and-settings.md): Довідник Claude Code: усі слеш-команди з розбором аргументів і прикладами, ключі settings.json, правила прав доступу, термінальні підкоманди, прапорці та змінні оточення. Актуально на серпень 2026. - [Хуки Claude Code](https://romankryvolapov.com/uk/claude-code-hooks.md): Розбір хуків Claude Code: усі події, коди виходу та JSON-рішення, matcher і if, п'ять типів обробників, і три робочі хуки — звук, контроль лімітів підписки та журнал роботи. - [DexClassLoader, або завантаження частини застосунку з мережі](https://romankryvolapov.com/uk/dex-class-loader.md): Як Android-застосунок завантажує .dex із сервера та підвантажує з нього класи через DexClassLoader, що обмежує Android 14 і чому в Google Play так робити не можна. - [DSPy — Автоматична генерація промптів](https://romankryvolapov.com/uk/dspy.md): DSPy 3.4 на прикладі агента підтримки: сигнатури замість тексту промпту, інструменти, метрика, оптимізатори MIPROv2 і GEPA, збереження результату і що зміниться в DSPy 3.5. - [GEO, MCP і WebMCP: як ChatGPT, Claude і Gemini знаходять, читають і використовують сайти](https://romankryvolapov.com/uk/geo-mcp-webmcp.md): GEO на практиці: як ШІ-асистенти знаходять сайт, що налаштувати в robots.txt, розмітці й контенті, як підключити MCP і WebMCP та що потрібно інтернет-магазину для покупок через ШІ. - [Google Guava у прикладах](https://romankryvolapov.com/uk/google-guava-in-examples.md): Можливості Google Guava у прикладах на Kotlin: Multimap, BiMap, Table, кеш, робота з рядками, хешування, IO та конкурентність. - [gRPC — Як це працює](https://romankryvolapov.com/uk/grpc.md): Як працює gRPC поверх HTTP/2 і Protocol Buffers, чим він виграє в REST для внутрішніх сервісів і як зібрати сервер та клієнт на Kotlin. - [Налаштування кастомних параметрів запуску IntelliJ IDEA / Android Studio](https://romankryvolapov.com/uk/intellij-idea-launch-options.md): Що робить кожен прапорець у Edit Custom VM Options: розміри heap, вибір Garbage Collector, кеш коду та налаштування пам'яті в Android Studio. - [Java Core — Основні питання](https://romankryvolapov.com/uk/java-core-questions.md): Відповіді на питання з Java Core: типи даних, колекції та HashMap, дженерики, рефлексія, будова пам'яті JVM і робота Garbage Collector. - [Java / Kotlin Core — Багатопотоковість](https://romankryvolapov.com/uk/java-kotlin-multithreading.md): Багатопоточність у Java та Kotlin: volatile і synchronized, ReentrantLock, корутини та Channels, оператори RxJava і стратегії backpressure. - [Java / Kotlin Core — Теоретичні питання](https://romankryvolapov.com/uk/java-kotlin-theory.md): Складність операцій з колекціями, патерни проєктування, SOLID, успадкування проти композиції та функції вищого порядку в Java і Kotlin. - [Java Spring — Анотації Spring](https://romankryvolapov.com/uk/java-spring-annotations.md): Довідник анотацій Spring з прикладами на Kotlin: @Component, @Bean, @Transactional, мапінг запитів, JPA та різниця між @Component і @Bean. - [Java Spring — Cloud](https://romankryvolapov.com/uk/java-spring-cloud.md): Хмарні сервіси AWS, Google Cloud та Azure для Java-застосунків: зіставлення аналогів, оптимізація витрат, serverless, Git LFS і субмодулі. - [Java Spring — Компоненти Spring](https://romankryvolapov.com/uk/java-spring-components.md): Налаштування application.properties, WebSocket, GraphQL, OAuth 2.0, Spring Security, Actuator, WebFlux і Batch з прикладами коду та конфігурації. - [Java Spring — Концепції](https://romankryvolapov.com/uk/java-spring-concepts.md): Saga і Rollback, SOLID, Clean Architecture, REST і RPC, IoC та DI, Spring MVC, Project Reactor, сервлети й CSRF — розбір концепцій з прикладами на Kotlin. - [Java Spring — Зберігання даних](https://romankryvolapov.com/uk/java-spring-data-storage.md): Зберігання даних у Spring: ACID і рівні ізоляції, @Transactional, JPA проти JDBC, Spring Data, кешування в Redis, Flyway та індекси. - [Java Spring — Мікросервіси](https://romankryvolapov.com/uk/java-spring-microservices.md): Взаємодія мікросервісів на Spring: REST і WebClient, Kafka та RabbitMQ, Docker і Kubernetes, Eureka, Cloud Gateway і трасування запитів. - [Java Spring — Перелік питань](https://romankryvolapov.com/uk/java-spring-questions.md): Покажчик питань для співбесіди Java-розробника: Java Core, Kotlin, багатопотоковість, анотації та компоненти Spring, мікросервіси й бази даних SQL. - [Kotlin 2.0 — основні нововведення в синтаксисі](https://romankryvolapov.com/uk/kotlin-2-key-syntax-changes.md): Що змінилося в синтаксисі Kotlin 2.0: context receivers, value classes, sealed interface, деструктуризація у for і pattern matching у when. - [Kotlin Core — Основні питання](https://romankryvolapov.com/uk/kotlin-core-questions.md): Як влаштовані корутини та suspend, чим launch відрізняється від async, як працюють scope functions, делегати, extension і companion object у Kotlin. - [Вступ до Ktor та Exposed](https://romankryvolapov.com/uk/ktor-manual.md): Серверний застосунок на Kotlin з Ktor: база через Exposed і JDBI, впровадження залежностей Koin, тести на Mockk і Testcontainers, міграції Flyway. - [Kubernetes — Як це працює](https://romankryvolapov.com/uk/kubernetes.md): Будова Kubernetes: архітектура control plane, namespace, балансування навантаження, команди kubectl, Dashboard і моніторинг через Prometheus. - [LangChain і LangGraph — агенти, графи і вся інфраструктура навколо них](https://romankryvolapov.com/uk/langchain-langgraph.md): Як влаштовано стек LangChain 1.x і LangGraph 1.x: models і messages, tools, create_agent і middleware, StateGraph з reducers, checkpointers і store, streaming, human-in-the-loop, LangSmith, Agent Server і langgraph CLI, міграція з 0.x. - [llama.cpp AI LLM Engine — Як це працює](https://romankryvolapov.com/uk/llama-cpp.md): Як влаштований інференс у llama.cpp: завантаження GGUF, токенізація, побудова обчислювального графа, KV-cache та семплінг токенів. - [Рушії інференсу LLM: vLLM, llama.cpp, LiteRT-LM та інші — швидкість, залізо, масштабування](https://romankryvolapov.com/uk/llm-inference-engines.md): Чим запускати мовні моделі наприкінці 2026 року: рушії vLLM, SGLang, TensorRT-LLM, llama.cpp, MLX, LiteRT-LM і ExecuTorch та програми на їхній основі на кшталт Ollama і LM Studio — завдяки чому рушії швидкі, на якому залізі працюють і як масштабуються, із замірами на ноутбуці. - [Локальний запуск LLM-моделей на Android-смартфоні](https://romankryvolapov.com/uk/llm-on-android.md): Чим запустити мовну модель просто на Android: LiteRT-LM, llama.cpp, MediaPipe, MLC LLM та ONNX Runtime GenAI — що вибрати, як підготувати модель і код на Kotlin, який правильно зупиняє генерацію. - [LoRA — Донавчання AI LLM моделей](https://romankryvolapov.com/uk/lora-fine-tuning.md): Донавчання LLM за допомогою LoRA: коли воно краще за RAG, а коли ні, як влаштовані адаптери, і два повні приклади для Gemma 4 E2B на Unsloth і PEFT з експортом у GGUF. - [Невеликий мануал з MapStruct](https://romankryvolapov.com/uk/mapstruct-manual.md): Практичні прийоми MapStruct у Kotlin: мапінг полів із різними іменами, @Named, перевикористання логіки та обхід типових помилок компіляції. - [Безпека мікросервісів і вебзастосунків](https://romankryvolapov.com/uk/microservices-security.md): Мікросервіс авторизації, API Gateway, mTLS і сертифікати: як безпечно зберігати паролі, захищатися від brute-force і які алгоритми шифрування обрати. - [Нейромережі простими словами](https://romankryvolapov.com/uk/neural-networks-basics.md): Як влаштована LLM: токенізація, embedding, attention у трансформері, квантування та семплери, які визначають вибір наступного токена. - [Offline AI Launcher — запуск AI LLM нейромереж на смартфоні](https://romankryvolapov.com/uk/offline-ai-launcher.md): Застосунок Offline AI Launcher: як запускати LLM Gemma, DeepSeek, Llama і Qwen просто на Android із моделей .gguf, без інтернету та підписки. - [Політика конфіденційності](https://romankryvolapov.com/uk/privacy.md): Що збирає romankryvolapov.com і навіщо — хостинг Cloudflare, аналітика лише за згодою, форма зворотного зв'язку, MCP-сервер та інструменти WebMCP для ШІ-асистентів. - [Вступ до Project Loom](https://romankryvolapov.com/uk/project-loom-manual.md): Віртуальні потоки Project Loom у Java: як JVM планує їх на carrier threads, чим вони відрізняються від Kotlin Coroutines і як увімкнути їх у Spring. - [Техніки промпт-інжинірингу для великих мовних моделей](https://romankryvolapov.com/uk/prompt-engineering.md): Ручка зусилля в reasoning-моделей, суворі схеми відповіді, промпти для агентів, роздільники, XML-теги та few-shot: як формулювати промпти для ChatGPT, Claude і Gemini заради передбачуваної відповіді. - [Python для Java-розробників](https://romankryvolapov.com/uk/python-for-java-developers.md): Python для тих, хто знає Java: синтаксис і основні методи поруч із Java, рядки, колекції, генератори, потоки, asyncio та мікросервіс на стандартній бібліотеці. - [RAG (Retrieval-Augmented Generation), Function / Tools Calling, CAG (Cache-Augmented Generation) для LLM моделей](https://romankryvolapov.com/uk/rag-and-function-calling.md): RAG, Function Calling і CAG для локальних LLM: як працює векторна база та приклади на Kotlin, Dspy, LangChain, LangChain4j і llama.cpp. - [Динамічна генерація UI в Android застосунку за допомогою RecyclerView та AdapterDelegates](https://romankryvolapov.com/uk/recyclerview-adapterdelegates.md): Як зібрати динамічний UI на RecyclerView з бібліотекою AdapterDelegates: делегати, перевикористання елементів списку та порівняння через DiffEquals. - [Реляційні SQL бази даних](https://romankryvolapov.com/uk/relational-sql-databases.md): Синтаксис SQL, VIEW та індекси, JOIN і CTE, блокування при конкурентному доступі та читання плану запиту в PostgreSQL, MySQL і Oracle. - [Векторні бази даних](https://romankryvolapov.com/uk/vector-databases.md): Векторні бази на практиці: чим відрізняються Milvus, Qdrant і Weaviate, як рахуються ембединги, працюють індекси HNSW та пошук за схожістю. ## Русский - [Обо мне](https://romankryvolapov.com/ru/about.md): Роман Криволапов — ведущий AI/ML-инженер, более 15 лет в коммерческой разработке. LLM/ML-системы в продакшене, агенты, бэкенды для банков и госструктур. - [Сравнение 41 AI-харнеса — от Claude Code до OpenClaw](https://romankryvolapov.com/ru/ai-agent-harnesses.md): Агенты для программирования и универсальные агенты: Claude Code, Codex, Cursor, Copilot, OpenCode, OpenClaw, Hermes — лицензии, модели, настройка, песочница, бенчмарки, обучение на вашем коде и утечки. - [Android — Компоненты и View](https://romankryvolapov.com/ru/android-components-and-views.md): Жизненные циклы Activity, Fragment, View и Service, устройство Context, Intent, WorkManager, RecyclerView и различия между MVP, MVVM, MVC и MVI. - [Логирование работы Android приложения в txt файлы](https://romankryvolapov.com/ru/android-logging-to-file.md): Логгер LogUtil для Android: запись debug- и error-логов и сетевых запросов OkHttp в отдельные txt-файлы в папке Документы на телефоне. - [Mock ответов сервера в Android разработке при помощи Interceptor](https://romankryvolapov.com/ru/android-mock-interceptor.md): Как подменять ответы сервера в Android своим OkHttp Interceptor: модель MockResponse, map по url и подключение к OkHttpClient. - [Android Paging 3 и Paging in AdapterDelegates](https://romankryvolapov.com/ru/android-paging-3.md): Пагинация в Android на Paging 3: PagingSource, PagingDataAdapter, адаптер состояний загрузки и подключение к AdapterDelegates. - [Android Push Provisioning API](https://romankryvolapov.com/ru/android-push-provisioning-api.md): Подключение Android Push Provisioning API: настройка tapAndPay SDK, whitelist приложения, требования Google Pay к UI и передача карты через OPC. - [Как включить отладку по Wi-Fi в Android Studio](https://romankryvolapov.com/ru/android-wifi-debugging.md): Отладка Android-приложения по Wi-Fi: классический способ через adb tcpip и adb connect и беспроводная отладка Android 11+ с сопряжением по коду или QR. - [Как настроить Charles Proxy для эмулятора Android Studio](https://romankryvolapov.com/ru/charles-proxy-android-emulator.md): Пошаговая настройка Charles Proxy для эмулятора Android: прокси через adb, сертификат Charles, network security config для HTTPS приложения и подмена ответов. - [Claude Code — Best Practices](https://romankryvolapov.com/ru/claude-code-best-practices.md): Как организовать работу с Claude Code: инструкции проекта, правила и скилы, трекер задач и багов в репозитории, план перед кодом, подагенты, контекст, разрешения и расход бюджета. - [Claude Code — команды, настройки, флаги](https://romankryvolapov.com/ru/claude-code-commands-and-settings.md): Справочник Claude Code: все слэш-команды с разбором аргументов и примерами, ключи settings.json, правила прав доступа, терминальные подкоманды, флаги и переменные окружения. Актуально на август 2026. - [Хуки Claude Code](https://romankryvolapov.com/ru/claude-code-hooks.md): Разбор хуков Claude Code: все события, коды выхода и JSON-решения, matcher и if, пять типов обработчиков, и три рабочих хука — звук, контроль лимитов подписки и журнал работы. - [DexClassLoader, или загрузка части приложения из сети](https://romankryvolapov.com/ru/dex-class-loader.md): Как Android-приложение скачивает .dex с сервера и загружает из него классы через DexClassLoader, чем это ограничено с Android 14 и почему в Google Play так делать нельзя. - [DSPy — Автоматическая генерация промптов](https://romankryvolapov.com/ru/dspy.md): DSPy 3.4 на примере агента поддержки: сигнатуры вместо текста промпта, инструменты, метрика, оптимизаторы MIPROv2 и GEPA, сохранение результата и что изменится в DSPy 3.5. - [GEO, MCP и WebMCP: как ChatGPT, Claude и Gemini находят, читают и используют сайты](https://romankryvolapov.com/ru/geo-mcp-webmcp.md): GEO на практике: как ИИ-ассистенты находят сайт, что настроить в robots.txt, разметке и контенте, как подключить MCP и WebMCP и что нужно интернет-магазину для покупок через ИИ. - [Google Guava в примерах](https://romankryvolapov.com/ru/google-guava-in-examples.md): Возможности Google Guava в примерах на Kotlin: Multimap, BiMap, Table, кэш, работа со строками, хеширование, IO и конкурентность. - [gRPC — Как это работает](https://romankryvolapov.com/ru/grpc.md): Как устроен gRPC поверх HTTP/2 и Protocol Buffers, чем он выигрывает у REST и как собрать сервер и клиент на Kotlin с Gradle. - [Настройка кастомных параметров запуска IntelliJ IDEA / Android Studio](https://romankryvolapov.com/ru/intellij-idea-launch-options.md): Что делает каждый флаг в Edit Custom VM Options: размеры heap, выбор Garbage Collector, кэш кода и настройка памяти в Android Studio. - [Java Core — Основные вопросы](https://romankryvolapov.com/ru/java-core-questions.md): Ответы на вопросы по Java Core: типы данных, коллекции и HashMap, дженерики, рефлексия, устройство памяти JVM и работа Garbage Collector. - [Java / Kotlin Core — Многопоточность](https://romankryvolapov.com/ru/java-kotlin-multithreading.md): Многопоточность в Java и Kotlin: volatile и synchronized, ReentrantLock, корутины и Channels, операторы RxJava и стратегии backpressure. - [Java / Kotlin Core — Теоретические вопросы](https://romankryvolapov.com/ru/java-kotlin-theory.md): Сложность операций с коллекциями, паттерны проектирования, SOLID, наследование против композиции и функции высшего порядка в Java и Kotlin. - [Java Spring — Аннотации Spring](https://romankryvolapov.com/ru/java-spring-annotations.md): Справочник аннотаций Spring с примерами на Kotlin: @Component, @Bean, @Transactional, маппинг запросов, JPA и разница между @Component и @Bean. - [Java Spring — Cloud](https://romankryvolapov.com/ru/java-spring-cloud.md): Облачные сервисы AWS, Google Cloud и Azure для Java-приложений: сопоставление аналогов, оптимизация затрат, serverless, Git LFS и субмодули. - [Java Spring — Компоненты Spring](https://romankryvolapov.com/ru/java-spring-components.md): Настройка application.properties, WebSocket, GraphQL, OAuth 2.0, Spring Security, Actuator, WebFlux и Batch с примерами кода и конфигурации. - [Java Spring — Концепции](https://romankryvolapov.com/ru/java-spring-concepts.md): Saga и Rollback, SOLID, Clean Architecture, REST и RPC, IoC и DI, Spring MVC, Project Reactor, сервлеты и CSRF — разбор концепций с примерами на Kotlin. - [Java Spring — Хранение данных](https://romankryvolapov.com/ru/java-spring-data-storage.md): Хранение данных в Spring: ACID и уровни изоляции, @Transactional, JPA против JDBC, Spring Data, кеширование в Redis, Flyway и индексы. - [Java Spring — Микросервисы](https://romankryvolapov.com/ru/java-spring-microservices.md): Взаимодействие микросервисов на Spring: REST и WebClient, Kafka и RabbitMQ, Docker и Kubernetes, Eureka, Cloud Gateway и трассировка запросов. - [Java Spring — Список вопросов](https://romankryvolapov.com/ru/java-spring-questions.md): Указатель вопросов для собеседования Java-разработчика: Java Core, Kotlin, многопоточность, аннотации и компоненты Spring, микросервисы и SQL. - [Kotlin 2.0 — основные нововведения в синтаксисе](https://romankryvolapov.com/ru/kotlin-2-key-syntax-changes.md): Что изменилось в синтаксисе Kotlin 2.0: context receivers, value classes, sealed interface, деструктуризация в for и pattern matching в when. - [Kotlin Core — Основные вопросы](https://romankryvolapov.com/ru/kotlin-core-questions.md): Как устроены корутины и suspend, чем launch отличается от async, как работают scope functions, делегаты, extension и companion object в Kotlin. - [Введение в Ktor и Exposed](https://romankryvolapov.com/ru/ktor-manual.md): Серверное приложение на Kotlin с Ktor: работа с базой через Exposed и JDBI, внедрение зависимостей Koin, тесты на Mockk и Testcontainers, миграции Flyway. - [Kubernetes — Как это работает](https://romankryvolapov.com/ru/kubernetes.md): Устройство Kubernetes: архитектура control plane, namespace, балансировка нагрузки, команды kubectl, Dashboard и мониторинг через Prometheus. - [LangChain и LangGraph — агенты, графы и вся инфраструктура вокруг них](https://romankryvolapov.com/ru/langchain-langgraph.md): Как устроен стек LangChain 1.x и LangGraph 1.x: models и messages, tools, create_agent и middleware, StateGraph с reducers, checkpointers и store, streaming, human-in-the-loop, LangSmith, Agent Server и langgraph CLI, миграция с 0.x. - [llama.cpp AI LLM Engine — Как это работает](https://romankryvolapov.com/ru/llama-cpp.md): Как устроен инференс в llama.cpp: загрузка GGUF, токенизация, построение вычислительного графа, KV-cache и сэмплинг следующего токена. - [Движки инференса LLM: vLLM, llama.cpp, LiteRT-LM и другие — скорость, железо, масштабирование](https://romankryvolapov.com/ru/llm-inference-engines.md): Чем запускать языковые модели в конце 2026 года: движки vLLM, SGLang, TensorRT-LLM, llama.cpp, MLX, LiteRT-LM и ExecuTorch и программы на их основе вроде Ollama и LM Studio — за счёт чего движки быстрые, на каком железе работают и как масштабируются, с замерами на ноутбуке. - [Локальный запуск LLM моделей на Android смартфоне](https://romankryvolapov.com/ru/llm-on-android.md): Чем запустить языковую модель прямо на Android: LiteRT-LM, llama.cpp, MediaPipe, MLC LLM и ONNX Runtime GenAI — что выбрать, как подготовить модель и код на Kotlin, который правильно останавливает генерацию. - [LoRA — Дообучение AI LLM моделей](https://romankryvolapov.com/ru/lora-fine-tuning.md): Дообучение LLM с помощью LoRA: когда оно лучше RAG, а когда нет, как устроены адаптеры, и два полных примера для Gemma 4 E2B на Unsloth и PEFT с экспортом в GGUF. - [Небольшой мануал по MapStruct](https://romankryvolapov.com/ru/mapstruct-manual.md): Практические приёмы MapStruct в Kotlin: маппинг полей с разными именами, @Named, переиспользование логики и обход типичных ошибок компиляции. - [Безопасность микросервисов и веб приложений](https://romankryvolapov.com/ru/microservices-security.md): Микросервис авторизации, API Gateway, mTLS и сертификаты: как безопасно хранить пароли, защищаться от brute-force и какие алгоритмы шифрования выбрать. - [Нейросети простым языком](https://romankryvolapov.com/ru/neural-networks-basics.md): Как устроена LLM: токенизация, embedding, attention в трансформере, квантование и семплеры, которые определяют выбор следующего токена. - [Offline AI Launcher — запуск AI LLM нейросетей на смартфоне](https://romankryvolapov.com/ru/offline-ai-launcher.md): Приложение Offline AI Launcher: как запускать LLM Gemma, DeepSeek, Llama и Qwen прямо на Android из моделей .gguf, без интернета и подписки. - [Политика конфиденциальности](https://romankryvolapov.com/ru/privacy.md): Что собирает romankryvolapov.com и зачем — хостинг Cloudflare, аналитика только с согласия, форма обратной связи, MCP-сервер и инструменты WebMCP для ИИ-ассистентов. - [Введение в Project Loom](https://romankryvolapov.com/ru/project-loom-manual.md): Виртуальные потоки Project Loom в Java: как JVM планирует их на carrier threads, чем они отличаются от Kotlin Coroutines и как включить в Spring. - [Техники промпт-инжиниринга для больших языковых моделей](https://romankryvolapov.com/ru/prompt-engineering.md): Ручка усилия у reasoning-моделей, строгие схемы ответа, промпты для агентов, разделители, XML-теги и few-shot: как формулировать промпты для ChatGPT, Claude и Gemini ради предсказуемого ответа. - [Python для Java-разработчиков](https://romankryvolapov.com/ru/python-for-java-developers.md): Python для тех, кто знает Java: синтаксис и основные методы рядом с Java, строки, коллекции, генераторы, потоки, asyncio и микросервис на стандартной библиотеке. - [RAG (Retrieval-Augmented Generation), Function / Tools Calling, CAG (Cache-Augmented Generation) для LLM моделей](https://romankryvolapov.com/ru/rag-and-function-calling.md): RAG, Function Calling и CAG для локальных LLM: как работает векторная база и примеры на Kotlin, Dspy, LangChain, LangChain4j и llama.cpp. - [Динамическая генерация UI в Android приложении при помощи RecyclerView и AdapterDelegates](https://romankryvolapov.com/ru/recyclerview-adapterdelegates.md): Как собрать динамический UI на RecyclerView с библиотекой AdapterDelegates: делегаты, переиспользуемые элементы списка и сравнение через DiffEquals. - [Реляционные SQL базы данных](https://romankryvolapov.com/ru/relational-sql-databases.md): Синтаксис SQL, VIEW и индексы, JOIN и CTE, блокировки при конкурентном доступе и чтение плана запроса в PostgreSQL, MySQL и Oracle. - [Векторные базы данных](https://romankryvolapov.com/ru/vector-databases.md): Векторные базы на практике: чем отличаются Milvus, Qdrant и Weaviate, как считаются эмбеддинги, работают индексы HNSW и поиск по близости.