Skip to content
View mxkmn's full-sized avatar
🍜
CSS > C++
🍜
CSS > C++
Block or Report

Block or report mxkmn

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
mxkmn/readme.md

hi, it's mxkmn pronounced [mʌksikɔma:n]

Someday in 2020

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
icon chronus news at Telegram icon preparing for publication on Google Play icon
out1080.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. Works by parsing web pages and automatically synronises data several times a day.

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).


icon Offline tracker
Screenshots

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 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.

Also it's my graduation work:

Graduation work (RU) Presentation (RU) Presentation (EN)

icon Laundry accounting
Screenshots

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.


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

At Summer Schools 2022 by Yandex Academy

My Yandex team

Yandex certificate

At MDev Hackathon 2023 by Samsung IT Academy

My MDev team

MDev certificate

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).

Photo

With Vlad Savin at the punk garage "Glotka" (2023)

Photo


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:

History graph

Some interests beyond development

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.

Summer cycling activities

Photo 1

Photo 2

Statistics in 2024
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 🤠:

Bottle collection photo

Maybe more? Just check my Telegram blog (RU).

Pinned Loading

  1. Android Studio Configuration Android Studio Configuration
    1
    # Android Studio Configuration
    2
    
    
    3
    This tip is created to allow quick setup of the IDE when a complete data reset is required due to problems.
    4
    
    
    5
    ## Plugins
  2. VS Code Configuration VS Code Configuration
    1
    # Полезные настройки Visual Studio Code
    2
    
    
    3
    Эти параметры деактивированы по умолчанию, но сильно влияют на пользовательский опыт. Добавьте понравившиеся в собственную конфигурацию или скопируйте их к себе полностью (`F1` -> `Open User Settings (JSON)`).
    4
    
    
    5
    Вручную просмотрены и проверены все *(более 2000)* доступные в версии `1.90` (май 2024) параметры, за исключением категорий Специальные возможности, GIT, Терминал, JavaScript Debugger и TypeScript. Некоторые параметры терминала и GIT добавлялись сами по себе в процессе работы.
  3. EspOpenWeatherMap EspOpenWeatherMap Public

    🔓☔🗺️ OpenWeatherMap library for ESP8266/ESP32 and Arduino IDE

    C++ 2

  4. Esp8266WeatherStation Esp8266WeatherStation Public

    🌦️ Another weather station. But cool.

    C++

  5. BarrierAutoOpener BarrierAutoOpener Public

    🚘🔍 Finds trusted car licence plates and opens the barrier

    Java 12 4