A self-taught Senior Engineer (Android, iOS, Flutter, NestJs, ...) with 7+ years of experience (since 2018 Summer)
- 💪 Strong knowledge of
Clean Architecture,MVVM,MVI,Reactive Programming(RxJava/RxKotlin, RxSwift, rxdart, RxJs, Kotlinx Coroutines Flow),Kotlin/Android,Dart/Flutter,iOS/Swift - 🏆 Official RxDart maintainer 🤟
- 🌱 Currently learning
C#,.NETandASP.NET Core: netauth-ddd-cqrs-clean, Dotnet-Playground - 📫 Contact
Rx Mobile Teamfor freelance jobs 🤟
- PostgresPatroniHaproxyEfcoreDemo — Production-minded PostgreSQL HA demo with Patroni, HAProxy, etcd, and EF Core (automatic failover, read/write split, and read-your-writes edge case).
🟣 Kotlin Multiplatform
| Library | Description |
|---|---|
| FlowExt |
Kotlinx Coroutines Flow Extensions. Extensions to the Kotlin Flow library. |
| kmp-viewmodel |
🔆 Kotlin Multiplatform ViewModel - A KMP library that provides shared MVVM for UI applications. |
| solivagant |
🔆 Compose Multiplatform Navigation - Pragmatic, type safety navigation. Based on Freeletics Khonshu. |
| kotlin-channel-event-bus |
A KMP event bus using Kotlinx Coroutines Channels. Multi-keys, multi-producers, single-consumer. |
🤖 Android
| Library | Description |
|---|---|
| ViewBindingDelegate |
Simple one-liner ViewBinding in Fragments and Activities with Kotlin Property Delegates. |
| Khonshu | Contributed to Freeletics Khonshu navigation library. |
🍎 iOS/Swift
| Library | Description |
|---|---|
| PhDownloader |
Simple, reactive and functional downloader for iOS Swift with RxSwift & RxAlamofire. |
🎯 Dart/Flutter
| # | Library | Description |
|---|---|---|
| 1 | 🏆 RxDart |
Official maintainer - ReactiveX implementation for Dart Streams. My commits |
| 2 | rx_shared_preferences |
Reactive shared preferences for Flutter. |
| 3 | rx_redux |
Redux implementation based on Dart Stream with RxDart. |
| 4 | disposebag |
Cancel StreamSubscriptions and close Sinks easily. |
| 5 | flutter_disposebag |
Auto-dispose subscriptions when disposing State. |
| 6 | sqlbrite |
Reactive stream wrapper around sqflite. |
| 7 | stream_loader |
Loading content asynchronously with Dart stream. |
| 8 | rxdart_ext |
Extension methods and classes built on top of RxDart. |
| 9 | rx_storage |
Reactive storage for Dart/Flutter. |
| 10 | listenable_stream |
Convert Listenable/ValueListenable to Stream. |
| 11 | distinct_value_connectable_stream |
Distinct value connectable stream for BLoC pattern. |
| 12 | did_change_dependencies |
Stream for didChangeDependencies lifecycle. |
| 13 | dart_either |
Either monad for Dart with monad comprehensions. |
| 14 | flutter_bloc_pattern |
BLoC pattern base class and rxdart builder. |
| 15 | flutter_provider |
Generic provider using InheritedWidget. |
| 16 | cancellation_token_hoc081098 |
Cancellation Token inspired by C#. |
| 17 | http_client_hoc081098 |
Simple and powerful HTTP client. |
🚀 Notes and blog posts have moved to portfolio.hoc081098.dev/articles — all future articles will be published there!
| # | Title | Description |
|---|---|---|
| 1 | Looking at Dp class in Jetpack Compose |
Why do @Composable functions use Dp.Unspecified as default? The optimization under the hood. |
| 2 | Bàn về Subject trong Rx | Serially rule in RxSwift, RxJava, RxKotlin and more. |
| 3 | Grouping trong Kotlin | groupingBy, groupBy, reduce, lazy-evaluation in Kotlin. |
| 4 | Rate limiting strategies | Rate limiting for Nginx, API Gateway (YARP), and service layers in ASP.NET Core. |
| 5 | Union Types in C# (en) / Union Types in C# (vi) | Union types in C# 15 / .NET 11 — syntax, pattern matching, and use cases. |





