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.
My latest&greatest projects
chronus | news at | download on |
---|
out1080.mp4
Just the best schedule app for Russian universities. It automatically adds the schedule to the built-in Android calendar, so it can be displayed in any widget, on a smartwatch, or on any device compatible with cloud calendars (e.g. Google Calendar). Works by parsing web pages or using REST APIs, automatically synchronizes data several times a day and provides rich schedule customization.
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: Baseline/Startup Profiles; 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).
Offline tracker |
---|
An application to track people in an area without internet coverage. Receives data from trackers via BLE (they locate with GPS and communicate via LoRa in a mesh network), which were developed with me. Offline-first approach. Application developed entirely by me on behalf of the 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; 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.
Also it's my graduation work:
Graduation work (RU) | Presentation (RU) | Presentation (EN) |
---|
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.
- 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.
In not presented projects also worked with |
---|
- UI: XML with Fragments; Navigation Component; Material2; View Binding.
- Architecture: Foreground Services; MVVM; LiveData; Dagger 2; RxJava; App Startup.
- 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)
My experience and statistics
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.
Loving coding since 2015, professionally since 2021. My CV (RU)
Last days from my Code::Stats:
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).
I also have a bottle collection 🤠:
Maybe more? Just check my Telegram blog (RU).