<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Andriy Druk</title>
    <link>https://www.andriydruk.com/</link>
    <description>Recent content on Andriy Druk</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>Code released under the Apache 2.0 license.</copyright>
    <lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0300</lastBuildDate>
    
	<atom:link href="https://www.andriydruk.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Open Source Report</title>
      <link>https://www.andriydruk.com/oss/2026-04/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/oss/2026-04/</guid>
      <description>Rare event - I actually wrote a blog post. Compact Compact Language Detector is the launch post for two new pure-C language-detection libraries: ccld3 and compact-fasttext. Both keep the original weights but drop the C++/protobuf/external-model baggage, and both check 100% against their reference implementations. There&amp;rsquo;s a WebAssembly demo running CLD2, FastText, and CLD3 side-by-side in the browser.
Another big month for LMPlayground - seven releases shipped to Google Play, adding system prompts, full localization in 28 languages, a device-language-aware model catalog, generation speed metrics, and a RAM-fit gate that blocks oversized models before they crash low-memory phones.</description>
    </item>
    
    <item>
      <title>Compact Compact Language Detector</title>
      <link>https://www.andriydruk.com/post/compact-compact-language-detector/</link>
      <pubDate>Sat, 11 Apr 2026 12:00:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/compact-compact-language-detector/</guid>
      <description>&lt;p&gt;In a modern world full of AI, detecting the language of a text sounds like a simple task. But in applied AI, it still matters a lot. And because of that, we naturally want a simple, compact library that can detect language reliably in any kind of application. By any kind, I mean literally any: a server app, a desktop app, a mobile app, or even a web app.&lt;/p&gt;

&lt;h4 id=&#34;why-cld2-worked-for-us&#34;&gt;Why CLD2 Worked For Us&lt;/h4&gt;

&lt;p&gt;When we ran into this problem a long time ago at &lt;a href=&#34;https://sparkmailapp.com/&#34;&gt;Spark&lt;/a&gt;, we decided we needed a cross-platform language detection library that could run on the client side on every platform. We chose &lt;a href=&#34;https://github.com/CLD2Owners/cld2&#34;&gt;CLD2 (Compact Language Detection 2)&lt;/a&gt;, developed by Google. It is a fairly old Apache 2.0 C++ library based on n-grams, and it does exactly what its name promises. It is a small C++ library with zero dependencies, with all data embedded directly in the source code - just compile and run. We liked it, wrapped it in Swift, and started using it in our apps.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Open Source Report</title>
      <link>https://www.andriydruk.com/oss/2026-03/</link>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/oss/2026-03/</guid>
      <description>Big month for LMPlayground - six releases shipped to Google Play, taking the on-device llama.cpp chat app from basic model support to a proper thinking/reasoning UI, reliable downloads, and a much more stable runtime.
Service Browser got a ground-up rewrite for its 3.0 release - pure Kotlin, native Android mDNS, and support all the way back to Android 6.
Also shipped a new version of swift-android-buildtools with per-class test isolation for running XCTests on Android.</description>
    </item>
    
    <item>
      <title>Exploring the Swift SDK for Android</title>
      <link>https://www.andriydruk.com/post/exploring-the-swift-sdk-for-android/</link>
      <pubDate>Thu, 18 Dec 2025 21:39:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/exploring-the-swift-sdk-for-android/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Announcing the Swift SDK for Android</title>
      <link>https://www.andriydruk.com/post/announcing-the-swift-sdk-for-android/</link>
      <pubDate>Fri, 24 Oct 2025 21:39:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/announcing-the-swift-sdk-for-android/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Spark AI</title>
      <link>https://www.andriydruk.com/projects/spark-ai/</link>
      <pubDate>Tue, 01 Oct 2024 00:07:18 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/projects/spark-ai/</guid>
      <description>As AI Foundation Lead at Readdle, I lead the team responsible for all AI-powered features in Spark Mail. We shipped the AI Assistant with a fully local RAG pipeline running on all four major platforms - iOS, Android, Mac, and Windows. Building on-device retrieval-augmented generation across such different hardware and OS constraints was a major technical undertaking.
I also led an agent architecture overhaul for rapid model switching. We&amp;rsquo;re continuing to explore new ways AI can make email smarter and more efficient.</description>
    </item>
    
    <item>
      <title>LM Playground</title>
      <link>https://www.andriydruk.com/projects/lm-playground/</link>
      <pubDate>Fri, 01 Dec 2023 00:07:18 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/projects/lm-playground/</guid>
      <description>LM Playground is an Android app for running Large Language Models locally on your device. No cloud, no API keys, no data leaving your phone - everything runs on-device for complete privacy.
Download models from a curated list of 12 model families (Qwen, Gemma, Llama, Phi, DeepSeek, Mistral, and more) ranging from 0.6B to 8B parameters, or load any custom GGUF file. The app features rich markdown rendering in chat responses, support for reasoning models like DeepSeek R1 with styled thinking step displays, persistent conversations, and configurable generation parameters.</description>
    </item>
    
    <item>
      <title>Swift &#43; Kotlin = ❤️</title>
      <link>https://www.andriydruk.com/post/kotlin-plus-swift-equals-love/</link>
      <pubDate>Sun, 01 Nov 2020 14:36:40 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/kotlin-plus-swift-equals-love/</guid>
      <description>&lt;p&gt;Last year, we at Readdle launched &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.readdle.spark&amp;amp;hl=ru&#34;&gt;Spark for Android&lt;/a&gt;. After just one year, the app has reached one million installs on Google Play. I believe this makes it the most popular Swift application currently available on Google Play.&lt;/p&gt;

&lt;p&gt;I joined Readdle in 2016 and worked on the initial release of Spark for Android for three years. Readdle developed a specialized Swift toolchain to create the Android version, which was detailed in a &lt;a href=&#34;https://blog.readdle.com/why-we-use-swift-for-android-db449feeacaf&#34;&gt;Medium article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I want to describe the approach of integrating Swift and Kotlin code together.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Swift for Android</title>
      <link>https://www.andriydruk.com/post/swift-for-android-spark/</link>
      <pubDate>Tue, 15 Jan 2019 21:39:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/swift-for-android-spark/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Spark for Android</title>
      <link>https://www.andriydruk.com/projects/spark-for-android/</link>
      <pubDate>Tue, 01 Jan 2019 00:07:18 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/projects/spark-for-android/</guid>
      <description>As Android Engineering Lead at Readdle, I led the team that brought Spark Mail to Android - sharing a single Swift codebase for business logic across iOS, Android, Mac, and Windows. We built the Swift Android Toolchain, an open-source stack of seven repositories covering everything from the SDK and JNI code generation to NDK bindings and build tools.
Over seven years the platform matured from a forked compiler to upstream Swift 6 with all architecture targets.</description>
    </item>
    
    <item>
      <title>Swift Android Toolchain</title>
      <link>https://www.andriydruk.com/projects/swift-android-toolchain/</link>
      <pubDate>Mon, 01 Jan 2018 00:07:18 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/projects/swift-android-toolchain/</guid>
      <description>Swift SDK for Android is a fork of the official Swift SDK for Android that includes Readdle&amp;rsquo;s patches. It can be used on any platform that supports the official Swift toolchain installed via swiftly. Built on the official Swift SDK build scripts.
Swift Android Build Tools is a command-line toolset for building and testing Swift packages on Android. It wraps Swift Package Manager for cross-compiling and runs XCTest suites on connected devices via ADB.</description>
    </item>
    
    <item>
      <title>My favourite talks at Google IO 2017</title>
      <link>https://www.andriydruk.com/post/favourite-talks-io2017/</link>
      <pubDate>Wed, 31 May 2017 23:10:36 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/favourite-talks-io2017/</guid>
      <description>Android general talks Well, 2 weeks have gone since Google IO and I&amp;rsquo;ve finally finished with my list of sessions. There are general talks that I liked the most:
 What&amp;rsquo;s New in Android What&amp;rsquo;s New in Android Development Tools Architecture Components - Introduction Architecture Components - Solving the Lifecycle Problem Architecture Components - Persistence and Offline What&amp;rsquo;s new in Android Support Library Android Performance: UI Speeding up your Android Gradle builds Understanding Color Introduction to Kotlin Life is great and everything will be ok, Kotlin is here Android Fireside Chat (Transcript of questions in video description)  Performance talks Also I&amp;rsquo;m fan of #perfmatters that&amp;rsquo;s why:</description>
    </item>
    
    <item>
      <title>Introduction to C for Android Developers</title>
      <link>https://www.andriydruk.com/post/introduction-to-c-for-android-developers/</link>
      <pubDate>Mon, 01 May 2017 23:10:36 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/introduction-to-c-for-android-developers/</guid>
      <description>Introduction Lately, I&amp;rsquo;ve spent a lot of time interviewing Android developers. And I was surprised how little amount of Android devs know C language. Most of the developers use only Java and convinced that C is too complex for their needs. But I will try to bust this myth - C code can be much simpler to write and much simpler to run.
Toolchain The first step is toolchain. For this tutorial, I will use a very basic set of the toolchain.</description>
    </item>
    
    <item>
      <title>Algorithms</title>
      <link>https://www.andriydruk.com/books/algorithms-and-data-structures/</link>
      <pubDate>Wed, 01 Feb 2017 00:14:24 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/books/algorithms-and-data-structures/</guid>
      <description>There are a lot books about algorythm data structure like classic Knut &amp;amp; Virt and more moderns. But my favourite exactly this one by Robert Sedgewick and Kevin Wayne. Also I can recommend Coursera course from Prinstrone university. Note: It has to version with C++ and modern Java.</description>
    </item>
    
    <item>
      <title>C Programming Language</title>
      <link>https://www.andriydruk.com/books/c-programming-language/</link>
      <pubDate>Wed, 01 Feb 2017 00:14:24 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/books/c-programming-language/</guid>
      <description>One of my favourite book about programming. Very basic but still very handfull. Notes: some of example can work wrong on modern operation system.</description>
    </item>
    
    <item>
      <title>The Humane Interface: New Directions for Designing Interactive Systems</title>
      <link>https://www.andriydruk.com/books/human_design/</link>
      <pubDate>Wed, 01 Feb 2017 00:14:24 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/books/human_design/</guid>
      <description>Deep thinking is rare in this field where most companies are glad to copy designs that were great back in the 1970s. The Humane Interface is a gourmet dish from a master chef. Five mice! &amp;ndash;Jakob Nielsen, Nielsen Norman Group Author of Designing Web Usability: The Practice of Simplicity This unique guide to interactive system design reflects the experience and vision of Jef Raskin, the creator of the Apple Macintosh. Other books may show how to use todays widgets and interface ideas effectively.</description>
    </item>
    
    <item>
      <title>Service Browser</title>
      <link>https://www.andriydruk.com/projects/service-browser/</link>
      <pubDate>Wed, 01 Feb 2017 00:07:18 +0200</pubDate>
      
      <guid>https://www.andriydruk.com/projects/service-browser/</guid>
      <description>Service Browser is an Android utility for discovering and inspecting network services via DNS-SD. It resolves IP addresses, ports, and TXT records, and lets developers register their own services. Built with pure Kotlin, Android&amp;rsquo;s native NsdManager, and Material Design 3. The source code is available under the Apache 2.0 license.</description>
    </item>
    
    <item>
      <title>R.tools</title>
      <link>https://www.andriydruk.com/post/rtools/</link>
      <pubDate>Sun, 18 Oct 2015 14:36:40 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/rtools/</guid>
      <description>&lt;p&gt;Hi everyone. Today I want to announce my new app &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.druk.rtools&#34;&gt;R.tools&lt;/a&gt;. It&amp;rsquo;s a simple application for android developers, that provides information about a device configuration.
I believe you know about android devices fragmentation and a necessity to use alternative resources to support specific device configurations. This app can help you with it.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Wrap Annoying APIs With RxJava</title>
      <link>https://www.andriydruk.com/post/rxdnssd/</link>
      <pubDate>Sun, 13 Sep 2015 22:51:10 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/rxdnssd/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://reactivex.io/intro.html&#34;&gt;Reactive Extensions (also known as ReactiveX or Rx)&lt;/a&gt; is a library, that brings &lt;a href=&#34;https://en.wikipedia.org/wiki/Functional_reactive_programming&#34;&gt;FRP&lt;/a&gt; programming paradigm to different platforms. And it&amp;rsquo;s a breath of fresh air for android developers in Java 6 desert. A lot of articles about RxJava concept and common usage have already been written and I don&amp;rsquo;t want to explain it again. That&amp;rsquo;s why I would like to publish my example of RxJava usage in Android just to show you how you can wrap Java APIs. In this article I will describe a process of Java API wrapping for Apple’s DNSSD library (which in my opinion is quite an annoying API).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Bonjour in Android applications</title>
      <link>https://www.andriydruk.com/post/mdnsresponder/</link>
      <pubDate>Sat, 05 Sep 2015 14:14:19 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/mdnsresponder/</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Bonjour?&lt;/strong&gt;
Wiki definition of Bonjour is&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bonjour is Apple&amp;rsquo;s implementation of Zero-configuration networking (Zeroconf), a group of technologies that includes service discovery, address assignment, and hostname resolution. Bonjour locates devices such as printers, other computers, and the services that those devices offer on a local network using multicast Domain Name System (mDNS) service records.&lt;/p&gt;
&lt;/blockquote&gt;</description>
    </item>
    
    <item>
      <title>Stacktrace deobfuscation</title>
      <link>https://www.andriydruk.com/post/android-deobfuscation/</link>
      <pubDate>Tue, 04 Aug 2015 22:40:49 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/android-deobfuscation/</guid>
      <description>One of the problems of Android application support is to deofuscate or retrace stack traces obtained from an obfuscated release build. To figure out how to deobfuscate a stack trace, you need to understand how the obfuscation actually works. The standard way of obfuscation in Android development is done using tools such as the ProGuard. That&amp;rsquo;s what the official documentation says
 The ProGuard tool shrinks, optimizesstatic innerand obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names.</description>
    </item>
    
    <item>
      <title>Что такое .aar библиотеки?</title>
      <link>https://www.andriydruk.com/post/what_is_aars/</link>
      <pubDate>Wed, 15 Jul 2015 21:39:00 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/post/what_is_aars/</guid>
      <description>&lt;p&gt;Уже прошло больше года с анонса Android &lt;a href=&#34;http://tools.android.com/tech-docs/new-build-system&#34;&gt;New Build System&lt;/a&gt;, работа над которой кипит и по сей день: в экспериментальной области все еще находится несколько увлекательных возможностей &lt;a href=&#34;http://tools.android.com/tech-docs/jackandjill&#34;&gt;Jack and Jill Tool Chain&lt;/a&gt; и &lt;a href=&#34;http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Ndk-Integration&#34;&gt;NDK Integration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Но одной из самых ожидаемых возможностей новой системы сборки стала поддержка aar бибилотек - нового бинарного формата бибилотек, который в отличии от jar бибилотек может содержать android ресурсы (res, assets, native libraries, etc).  В это статье я хотел поделиться своим опытом работы с aar бибилиотеками.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Andriy Druk</title>
      <link>https://www.andriydruk.com/about/about/</link>
      <pubDate>Tue, 07 Jul 2015 23:10:36 +0300</pubDate>
      
      <guid>https://www.andriydruk.com/about/about/</guid>
      <description>I&amp;rsquo;m a software engineer and technical writer focused on building high-quality mobile and cross-platform software. I&amp;rsquo;ve spent the last eight years at Readdle working on Spark Mail - one of the most popular email clients in the world, running on iOS, Android, Mac, and Windows.
Android Engineering Lead at Spark (2017–2024) I led the Android engineering team at Spark, where my main challenge was bringing an iOS-born email client to Android without rewriting the entire codebase.</description>
    </item>
    
  </channel>
</rss>