Skip to content

Repository files navigation

Hi there, I'm Petrus Nguyễn Thái Học 👋

Senior Mobile & Kotlin Engineer — .NET Backend
Reactive systems · Kotlin Multiplatform · Mobile architecture · Performance

Facebook LinkedIn Twitter StackOverflow Email Medium

Portfolio ReactiveX Buy Me A Coffee


🚀 About Me

👨‍💻 Engineering Profile

I build reliable, high-performance mobile and backend systems across Kotlin/Android, Kotlin Multiplatform, Compose Multiplatform, Flutter/Dart, iOS/Swift, NestJS, and ASP.NET Core. I'm a senior engineer with 7+ years of experience, building and shipping software since summer 2018. Beyond formal education, I am largely self-taught, with my engineering growth shaped by hands-on product work, open-source maintenance, and a long-term focus on software fundamentals.

Strong knowledge of: Clean Architecture, MVVM, MVI, Reactive Programming (RxJava/RxKotlin, RxSwift, rxdart, RxJs, Kotlinx Coroutines Flow), Kotlin/Android, Dart/Flutter, iOS/Swift.

🏆 Open-Source Work

🧱 Current Focus

I'm building .NET backend and data systems with DDD, CQRS, PostgreSQL, and high-availability patterns — NetAuth and the PostgreSQL HA lab.

⭐ Featured Projects

Project & evidence What it proves
FlowExt
Docs · Technical article
Kotlin Multiplatform Flow semantics, structured concurrency, cancellation, cross-platform testing, and maintained library design.
MVI-Coroutines-Flow
Tests · Releases
Multi-module Android MVI, Clean Architecture, Coroutines Flow, extensive testing, releases, and long-term adoption.
GitHub Search KMM
Architecture · CI
End-to-end KMP architecture sharing data, domain, presentation, and ViewModel layers while retaining Compose and SwiftUI interfaces.
Selected upstream contributions
FlutterFire · Koin · Khonshu · Google Ground
Narrow fixes involving traversal, state restoration, error paths, and locking, reviewed and merged into established projects.
PostgreSQL HA lab
Demo scenarios · Technical notes
Failure-aware PostgreSQL topology with Patroni election, HAProxy routing, EF Core read/write splitting, retry, and consistency trade-offs.
NetAuth
Tests · CI
Educational ASP.NET Core design using DDD, CQRS, authentication boundaries, a transactional outbox, and multiple test layers.

📝 Technical Writing

My technical writing lives on portfolio.hoc081098.dev/articles, where I write about Kotlin and mobile engineering, reactive systems, software architecture, performance, and .NET backend development.

🛠️ Tech Stack

Kotlin Android Swift iOS Flutter Dart C# .NET

Hits


📦 Libraries & Packages

🟣 Kotlin Multiplatform
Library Description
FlowExt Maven Central Kotlinx Coroutines Flow Extensions. Extensions to the Kotlin Flow library.
kmp-viewmodel Maven Central 🔆 Kotlin Multiplatform ViewModel - A KMP library that provides shared MVVM for UI applications.
solivagant Maven Central 🔆 Compose Multiplatform Navigation - Pragmatic, type safety navigation. Based on Freeletics Khonshu.
kotlin-channel-event-bus Maven Central A KMP event bus using Kotlinx Coroutines Channels. Multi-keys, multi-producers, single-consumer.
🤖 Android
Library Description
ViewBindingDelegate JitPack Simple one-liner ViewBinding in Fragments and Activities with Kotlin Property Delegates.
Khonshu Contributed to Freeletics Khonshu navigation library.
🍎 iOS/Swift
Library Description
PhDownloader CocoaPods Simple, reactive and functional downloader for iOS Swift with RxSwift & RxAlamofire.
🎯 Dart/Flutter
# Library Description
1 🏆 RxDart Pub Official maintainer - ReactiveX implementation for Dart Streams. My commits
2 rx_shared_preferences Pub Reactive shared preferences for Flutter.
3 rx_redux Pub Redux implementation based on Dart Stream with RxDart.
4 disposebag Pub Cancel StreamSubscriptions and close Sinks easily.
5 flutter_disposebag Pub Auto-dispose subscriptions when disposing State.
6 sqlbrite Pub Reactive stream wrapper around sqflite.
7 stream_loader Pub Loading content asynchronously with Dart stream.
8 rxdart_ext Pub Extension methods and classes built on top of RxDart.
9 rx_storage Pub Reactive storage for Dart/Flutter.
10 listenable_stream Pub Convert Listenable/ValueListenable to Stream.
11 distinct_value_connectable_stream Pub Distinct value connectable stream for BLoC pattern.
12 did_change_dependencies Pub Stream for didChangeDependencies lifecycle.
13 dart_either Pub Either monad for Dart with monad comprehensions.
14 flutter_bloc_pattern Pub BLoC pattern base class and rxdart builder.
15 flutter_provider Pub Generic provider using InheritedWidget.
16 cancellation_token_hoc081098 Pub Cancellation Token inspired by C#.
17 http_client_hoc081098 Pub Simple and powerful HTTP client.

📊 GitHub Stats

GitHub Streak

📈 More Stats

Profile Summary


Wakatime Stats

Wakatime Languages


github-snake

generated with Platane/snk

Activity Graph

Commits

Commits

Git Artwork


🌐 Open Source Organizations

Kotlin Android Open Source Kotlin Multiplatform Foundation Flutter Dart Open Source

About

Hi there 👋, I'm Petrus Nguyễn Thái Học

Topics

Resources

Stars

9 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages