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 π€
π£ 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. |
| # | 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. |