Nowadays and next years I'm an Android developer, also like to play with microcontrollers and bring their benefits to business. Writes lots of useful Android stuff on StackOverflow.
I've worked as an individual and as a team developer in a startup and small outstaff studio.
As a student participated in 9 hackathons, taking 2nd place twice and 3rd place four times. One day I'll get the first, hopefully.
My latest&greatest projects
chronus | News and downloads (RU) | Preparing for publication on Google Play... |
---|
lv_0_20240409220113.mp4
Just the best university timetable app in the world. It automatically adds schedule to the Android pre-installed calendar, allowing it to be displayed in any widget or on a smartwatches.
Stack |
---|
- UI: Compose; Compose Navigation; Material3; Splashscreen API; Dynamic theming on Android 8.1+; Self-written compose permissions handling; Notifications.
- Architecture: Multimodule; Single Activity; MVI/UDF/Clean Architecture with Jetpack ViewModel and Kotlin Flows; Coroutines; Dagger Hilt.
- Network and connections: WorkManager; Calendar Provider (ContentResolver); JSoup; Ktor Client; Kotlin Serialization.
- Local memory: Room; DataStore.
- Tools and testing: Tracer by OK.Tech; Detekt; KtLint; Gradle convention plugins.
Additional info |
---|
Hated WorkManager, check my story at StackOverflow (follow the link by clicking on WorkManager above).
Laundry accounting |
---|
An application for linen accounting in laundries. Receives employee data from an RFID scanner via BLE, which was developed in team with me. Offline-first approach. Developed completely by me by order of Irkutsk Oil Company.
Stack |
---|
- UI: Compose; Compose Navigation; Material3; Splashscreen API; Self-written compose permissions handling.
- Architecture: Multimodule approach in monorepository for all Irkutsk Oil projects; Single Activity; MVI/UDF/Clean Architecture with Jetpack ViewModel and Kotlin Flows; Coroutines; Dagger Hilt.
- Network and connections: Ktor Client; Kotlin Serialization; Bluetooth LE with Kable library.
- Local memory: Room; DataStore; Storage Access Framework; .xlsx creation.
- Tools and testing: Detekt; KtLint; Gradle convention plugins.
Additional info |
---|
As this was the second project for Irkutsk Oil Company, a monorepository was established for all current and future projects, which increased development speed by times and greatly improved code quality and component reusability.
Offline tracker |
---|
An application for tracking people in an area without internet coverage. Receives data from trackers via BLE (they get location with GPS and communicates via LoRa in mesh network), which were developed in team with me. Offline-first approach. Developed completely by me by order of Irkutsk Oil Company.
Stack |
---|
- UI: Compose; Material3; Splashscreen API; Self-written compose permissions handling; OpenStreetMap with Osmdroid library.
- Architecture: Multimodule approach in monorepository for all Irkutsk Oil projects; Single Activity; MVI/UDF/Clean Architecture with Jetpack ViewModel and Kotlin Flows; Coroutines; Dagger Hilt.
- Network and connections: Ktor Client; Kotlin Serialization; Bluetooth LE with Kable library; Protobufs (to use extended Meshtastic protocol).
- Local memory: Room.
- Tools and testing: Tracer by OK.Tech; Detekt; KtLint; Gradle convention plugins; MockK; Compose Tests.
Migrations since project start |
---|
- Singlemodule -> Multimodule;
- Default repository -> Monorepo for Irkutsk Oil;
- Google Maps (Maps Compose library) -> Google Maps (Views) -> OpenStreetMap via Osmdroid library (Views);
- BLE via pure Android SDK -> Kable lib;
- Self-made firmware for microcontroller -> Meshtastic based modified firmware (so I had to understand the workings of Meshtastic's Protobuf-based communication protocol without documentation);
- Network connections via pure OkHttp -> Ktor Client;
- Accompanist permissions handling -> Self-written permissions handling for Compose;
- Gradle with Groovy -> Gradle with Kotlin and Gradle convention plugins;
- Firebase Crashlytics/Analytics -> Tracer (advanced crashlytic and monitoring service).
Additional info |
---|
Thanks to experience, I now know that GMaps for Compose is very unstable and it makes sense to use an implementation of all actions via View and an additional class to abstract the map capabilities. Migrated to OSM at the request of the customer.
In not presented projects also worked with |
---|
- UI: XML with Fragments; Navigation Component; Material2; View Binding.
- Architecture: Foreground Services; MVVM; LiveData; Dagger 2.
- Network and connections: Retrofit; GSON serialization; WorkManager; GPS via Fused Location Provider.
- Tools, testing and other: Mockito; Espresso; iBeacon.
Some fun stuff
We've got max rating, but 2nd place :/
Built almost from scratch in 2021. It's cool, but I want to rebuild it again (to use new MCU and support RTOS features, make it smaller and also rewrite some crappy code).
With Vlad Savin at the punk garage "Glotka" (2023)
Music&sound
Because everyone likes it and writes about on personal pages 🥱.
So, if you want to know about my taste in melodic screamo kircore rap: Deezer profile. Or just click on your ultra-random button: a b c d e f g h i j k l m n o p q r s t u v w x y z
It also requires quality audio equipment, figuring it out was fun and it led to a set of posts with my conclusions (RU). Comparison of 25+ pairs of TWS included. Right now, my choice is the magnificent Noble FoKus Pro.
Other details
Interested in style and care about appearance (currently writing an article about it).
Loving the photography. Check out some pics of nature and travelling on my Instagram.
I also have a bottle collection 🤠:
Maybe more? Just check my Telegram blog (RU). It's also where you can read about my current life goals.
Last days from my Code::Stats:
Loving coding since 2015, professionally since 2021.