Блог компании mxkmn inc.
97 subscribers
30 photos
6 videos
23 links
Возможны долгие перерывы от творчества. Канал не заброшен. Отписывайся, только если тебе всё это не близко
Download Telegram
Для тех, кто спрашивал, чё там по прогерству. Во первых, два проекта по работе почти полностью завершены, совсем скоро появится время на что-то совершенно новое. Во вторых, создал chronus - тот самый долгострой, про который иногда упоминал, но вниманием специально обделял. А теперь рассказываю подробнее.

На втором курсе придумал концепцию - расписание университета может быть в системном календаре телефона. Просто, удобно, без привязки к типичному говнодизайну подобных приложений и их кривости. MVP для курсовой заняло 1.5 месяца и не то, чтобы качественно, но работало.

И сейчас, со всем опытом который копился в течение нескольких лет работы с Android, я переписал всё с нуля чтобы сделать лучшее приложение в своём роде. Просто по приколу. Идеи нужно завершать. Ну и накинул кучу уникальных фичей поверху - смотрите видос, чтобы увидеть их.

Идея полностью моя, горжусь ею. Лежит на поверхности, но настолько крутая и приносящая удобство, что мне за неё респектовали какие-то рандомы, которые сами компилировали курсовую с гитхаба и распространяли среди друзей. Ну а я вообще-то считаю, что именно такие мелочи приводят к революционным изменениям, а не постоянное воровство целых проектов, как у нас принято.

Невероятно зарядился, пока работал над этим проектом. С виду всё просто, но внутри столько концепций которые нужно было продумать, что на зимних каникулах я не мог спать по ночам и засыпал лишь к 9 утра.

Вообще, трушный mobile-dev подход как будто бы утерян, когда фичи системы использовались по максимуму, когда приложение было не унылым фронтендом для сервера. Мне нравится, что моё приложение в 2 мегабайта реально помогает экономить время, не бесит, стильно выглядит и просто работает.

Короче рад, что сраное расписание получилось сделать настолько крутым. На втором курсе я уже делал сраную погодную станцию (которую делает каждый второй ардуинщик), которая по множеству параметров тупо лучшая - и до сих пор радует.

Да, всё ещё сравнительно небольшой проект, но для больших не хватает лишь времени. Кстати, по времени вышло вот так:
Первая версия - 2.5 месяца
Вторая версия - 1 день
Третья версия - неделя
Видосик - больше недели

Ну а сейчас попробую набирать аудиторию. Посмотрим, что из этого получится.
🔥7👍1
8 месяцев прошло с моего публичного бомбежа на тему работы с андроидом. Повторим?

Если вы видите какой-то технарский термин, то пропускайте - смысл упущен не будет. Прост на меня тут начали разрабы подписываться, коим подробности могут оказаться полезными.


Вся разработка под андроид про переступание определённой грани. Сначала нифига непонятно и всё идёт через жопу, но потом очень даже изи. Так что условная система сборки уже давно не приносит боли, да и гугл в последнее время делает для удобства разрабов слишком много - смею предположить, что больше, чем когда-либо.

Проблема в том, что есть вещи, на которые невозможно повлиять. И чем больше я работаю с этой шайтан-коробкой, тем больше убеждаюсь, что эта коробка может внезапно начать ломаться. Нет, даже не так, оставим эту возможность карикатурным девушкам. Шайтан-коробка может заболеть раком!

Под шайтан-коробкой я конечно же подразумеваю Android Studio - среда разработки под Android, куда мы вводим букавы чтобы происходила магия.


Пару месяцев была такая история: работаю, никого не трогаю, и внезапно студия перестаёт собирать проект - пишет, якобы кода, который я написал, не существует. Хотя вот он, на экране висит. 3 часа ушло на то, чтобы исправить проблему с kotlin compiler - я перепробовал бесконечное количество советов уровня "перезагрузите роутер" со stackoverflow. В какой-то момент, к счастью, заработало.

Однако та же проблема начала возникать всё чаще и чаще. В какой-то момент средний период от "всё работает как нужно" до "ah shit, here we go again" сократился до 3 дней, пришлось убить студию, вычистить из системы всё её говно вручную, и установить с нуля - теперь работает хорошо. Я и не думал, что в наше время могут поставиться неправильные файлы и убивать работу раз в несколько дней-недель. На будущее, если что-то опять сломается, написал гайд по ручной настройке.

С нелепыми проблемами приходится сталкиваться нередко, и большинство из них связаны как раз с раковой опухолью инструментария. Если я при решении очередной проблемы натыкаюсь на то самое "перезагрузите роутер" (а именно: "нажмите Invalidate caches/restart", "попробуйте Clean build", "проверьте наличие такой-то библиотеки"), то понимаю, что следующие три часа пройдут офигенно. Потому что проблема, вероятно, не в этом - на самом деле раковая опухоль разбушевалась и её нужно частично подрезать народной медициной, попутно включая на фоне Аллана Чумака. Что именно поможет на этот раз - неизвестно. В идеале, конечно, предать анафеме да переустановить всё с нуля.

Кстати, вчера медицина оказалась бессильна - я не смог внедрить в chronus Baseline profiles - это оптимизации, ускоряющие и уплавняющие приложение в среднем на 20%. Для них требуется провести тесты на устройстве, и плагин просто не захотел устанавливать приложение с тестами на телефон. С обычной установкой приложения проблем нет, и причин, по которым в этот раз ничего не работает, тоже - ошибка гордо зовётся UNKNOWN и какой-либо полезной информации не сообщает. Так что спасибо гуглу, теперь мои пользователи не увидят 🚀 BLAZING FAST PERFORMANCE 🚀.

Но это всё про видимые проблемы. Они хотя бы заметны. Нужно бороться ещё и с невидимыми - например, излишним весом приложения.
😁3
#тяжёлыйконтент

Вообще, большинство разрабов просто ленивы, и поэтому приложения сейчас занимают какое-то ненормальное количество места. Я постоянно стараюсь с этим бороться, но и тут не без проблем.

В первую очередь, гугл говорит, что для оптимизации требуется добавить:
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))

Действительно, эти три строки сжимают размеры в 5-10 раз, попутно ускоряя приложение. Горе-разрабы уже тут делают пук-среньк, так как не у всех это активировано - люди просто не смогли прочитать довольно популярную статью с официального сайта разработчиков.

Далее предлагается вычищать лишние языки:
resourceConfigurations.addAll(listOf("en", "ru"))

Библиотеки автоматически добавляют переводы каких-то редких кусков приложения на 87 языков. В теории вещь полезная, но на практике их никто никогда не увидит или вовсе введёт в диссонанс - вырезаем.

После этого, вероятно, захочется указать, какие языки присутствуют в приложении. Гугл предлагает создать эти данные автоматически:
androidResources.generateLocaleConfig = true
unqualifiedResLocale=en

Но эта фича сломана при вырезании лишних языков! Поэтому указываем всё вручную:
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en-US"/>
<locale android:name="ru"/>
</locale-config>

android:localeConfig="@xml/locales_config"


С этого момента предложения гугла закончились. Но внезапно оказывается, что isShrinkResources не работает - в .apk всё ещё лежат картинки и строки, которые не должны были появиться. Приходится копать дальше и узнавать, что для нормальной очистки нужно в res/raw создать keep.xml с таким содержанием:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict"/>

После этого неиспользованные ресурсы, наконец-то, начнут удаляться. Но вот только об этой фиче никто не знает, поэтому приложение может начать вылетать, так как не все разработчики пометили через tools:keep ресурсы, к которым они обращаются через рефлексию. В моём случае это одна библиотека, два строковых ресурса - написал разрабам, сказали что починят.

Короче, существование tools:shrinkMode="strict" обнаружил только вчера. В моём приложении уже несколько релизов лежали дебажные ресурсы, которые никак не использовались. Об shrinkMode действительно никто не знает, даже те, кому стоило бы - создателям библиотек и больших приложений.

Например, в банковских приложениях я заметил дублирование картинок по 5 раз. Дело в том, что до поддержки векторных картинок (до времён пятого андроида) приходилось создавать множество растровых картинок для разных экранов. Но блин, эти приложения уже давно не поддерживают ничего ниже 7-ого андроида, то есть там тонны говн, которые не использует система! И это всё можно вырезать, но гугл никак не сообщает о такой возможности. Да и в общем-то разработчики могли вручную вырезать, но им лень.

Наверное, сейчас вам кажется, что так много места занимают исключительно ненужные картинки. Но, естественно, это не так - в основном всё же проблема в разрабах, которые не парятся по качеству. Большинство проблем из-за тяжёлых внешних библиотек, которые при переписывании на стандартные для платформы ЯП позволили бы сократить некоторые специфичные супераппы (те же банки) в 2-4 раза. Естественно, такие зависимости нужно по максимуму избегать, но в корпорате это не всегда возможно.

Например раньше, до тряски по импортозамещению, приложения использовали системные карты (от гугла), которые не занимают места. Сейчас все боятся использовать забугорное при наличии нашенских аналогов - гугл карты подменяются картами 2гис и яндексом, пакет приложения мгновенно увеличивается минимум на 25 МБ. Такова цена, заплатите вы :).

В общем, вот такие вот будни разработчика, который сам потихоньку улучшает качество проектов, но вокруг себя такого же поведения не замечает. Хотя о проблеме говорят многие.
👍9🤡2
Сони опять не смогли в наушники

Брали в подарок отцу, ему нужен шумодав в офис. Итог - у него шумодав не включается, так как наушники думают, что амбушюры слишком маленькие. То есть в приложении индикатор шумодава горит, но на деле ничего не происходит 🤡

Окей, надеваю сам. Чуть-чуть давится шум с улицы, но голос - нисколько. Сравниваю со своими noble fokus pro - пассивный шумодав у них лучше, чем у соней активный 🤡

Амбушюры сторонние не подойдут, так как защитная сеточка есть только на комплектных, со сторонними амбушюрами ушная сера будет попадать внутрь. Но ненадолго, на свой страх и риск можно - нашли подходящие, шумодав появился, но вот проезжающие машины и голоса всё ещё не давит 🤡

Начинаешь разбираться - оказывается, в обзорах забывают упомянуть, что голос не давится никак 🤡. Зато гул внутри автобуса тише, мммм збс. Ну а на сайте сони честно сказано, что шумодав только для НЧ, и плохо работает с голосом - короче, вопросы к обзорщикам.

Как уже понятно, внутриканалки сосони вообще не умеют в шумодав. Хотя накладные сони, аирподсы - вполне. Что случилось - неизвестно.

Что до звука - это одни из немногих соней, которые не бесят сибилянтами, скрежетом или ещё какой-нибудь дичью, но по подаче это всё ещё достаточно дёшевые уши - скучно, невыразительно, постоянно хочется повысить громкость, просто кайфа нет.

По техничности уступают моим Yinyoo q70 за $30, по подаче - Lypertek tevi за $100. Noble fokus pro по сравнению с сонями - примерно как плакучая ива на фоне засохшей берёзы.

Вывод - обзорщики как обычно не пробовали ничего слаще морковки, ну а уши уходят в продажу, непонятно что брать на замену.

Уши, разумеется, оригинальные, со всеми привязками к экосистеме андроида, прекрасно настраиваются через приложение.
🤡2
Учёба у большинства студентов окончена, поэтому пора поделиться мыслями об успешности моего приложения для получения расписания.

Люди вообще не хотят пробовать что-то новое, не заинтересованы в дополнительной экономии времени и удобных инструментах

Пиар производился в чатах политеха - учебные группы, околотворческие/научные объединения и всё такое. 100% этой аудитории пользуется расписанием. Я скидывал сообщение, в котором вкратце облизывал основные фичи приложения и кидал клёвый промо-видосик. Иногда друзей с соседних групп просил скинуть. Иногда сами пользователи загорались помочь.

Итог - прирост аудитории равен 5% от увидевших, то есть в среднем по одному человеку с учебной группы. Те самые мемные 95% даже не переходили в телеграм-канал, чтобы узнать побольше инфы, скачать APK. Эффективность, близкая к 100% обнаружилась только при обращении к человеку через ЛС, но нужно знать человека.

Знакомые с научного отдела сказали, что я не дурак, что 5% это даже неплохо для наших студентов и людей в целом. Несмотря на это, укрепилось осознание, что необходимо поизучать несколько месяцев основы маркетинга и продаж, как навязывать людям взаимную выгоду. Навыки универсальные, помогут и для пиара, и для общения с новыми людьми. Просто удобство и простота никому не интересны, нужно навязывать необходимость.

Ну а сейчас договорился о периодичном постинге рекламы в паблике научного отдела, там средний охват по просмотрам 500 человек. Будем долбить рекламой, авось задолбаем. Хотелось бы, конечно, ещё и в профкомовском пиарить - у них охваты в 5 раз больше.

Идея работает

Удержание аудитории составляет 78% (48 человек из 62 скачавших). Учитывая, что у меня 5 прямых конкурентов, идея и качество реализации людям зашли, останавливаться не стоит.

Такое обилие конкурентов - это с учётом неудобного сайта, полурабочих приложений чисто под мой вуз, такого же полурабочего тг бота. Если смотреть глобально, то в Google Play есть всего два (!) приложения-аналога с множеством вузов, притом сомнительного качества и с кучей булщита в виде рекламы, покупок, ленты мемов, внутренней подслушкой.

Поскольку моя идея уникальна и приложение без лишнего говна, есть реальная возможность набрать большую аудиторию пользователей и помогать челам не только с моего вуза, но и с множества других. Вот только наступило лето, расписания у вузов уже скрыты - к новому учебному году приложение будет содержать только мой политех :(. Попробую найти свободное время осенью и запилить парсеры для самых больших вузов.

На скорость релизов влияют факторы, которые пока что сложно предсказать

Ставил сроки, в течение которых должен был успеть собрать обновы. Случались дела по работе и учёбе, дедлайны успешно сгорали. Реальный срок получался х2 к изначально задуманному - стандарт индустрии. Намотал на бритый ус, теперь в рабочих проектах просим с ещё большим запасом.

Конец?

Изначальная задумка и все фичи полностью реализованы. Люблю доводить дела до конца, тут всё получилось, остаётся только пополнять список вузов.

Идей о новых фичах как-то и нет. За полгода получилось сделать самое функциональное приложение, большего не требуется. Далее планирую сделать парочку проектов, направленных на android-разрабов. Оставайтесь на связи.
🔥5
Всем привет, у меня новый рекорд и 2/3 от запланированной на это лето цели.

Прошлый рекорд случился месяц назад - на 20 км меньше, но по тяжёлой дороге.

Сам не знаю, получится ли успеть за месяц дотянуть 100 км за день, но кабудто всё к этому идёт.
🔥8
Для тех, кто интересовался: ритуал посвящения в рабы системы пройден, поздравлять не требуется.

Сильно удивлён, что дипломную работу можно писать как чувствуешь, а не по бестолковым методичкам как в случае с курсачами. Времени ушло куча (35 страниц текста), но внутри даже почти не стыдно, можно понять чем я занимался и лишнего мало. Закинул на гитхаб (ссылка в описании канала), вдруг кому интересно. Ну а ещё она у меня в розовом 😎

Внутри про небольшое, но крайне полезное приложение, писал его по работе - карта местоположения сотрудников, которые перемещаются с трекерами там, где нет интернета и связи. Так как мы в итоге решили взять наработки проекта Meshtastic (направлен на построение защищённой ячеистой сети при помощи трекеров, схожих с нашими), пришлось разбираться с исходниками официального приложения - там в одном файле может влёгкую находиться 5к строк говнокода. В общем интересный проект, было весело)

С одной стороны надоело писать мелкие приложения, хочу далее залететь на что-то масштабное, с другой - в больших приложениях нечасто встречаются интересные технологии и решения по типу того же блютуза, обычно это просто большой фронтенд. Буду надеяться на удачу.

Ну а сам ВУЗик это конечно жесть, никто так и не понял кого из нас пытались сделать, учили как умели. Буду рад, если корка пригодится в других странах.

А, ещё кое о чём позабыл. Ради попадания в рейтинг 100 лучших выпускников был написан Великий Пост, но бумажку об этом (так называемое благодарственное письмо) нам всем не выдали, как я понял краска в принтере закончилась. Не верю, что не попал в него, ведь в рейтинге всего 70 человек участвовало 🤷‍♂️
👍7🔥1
Тусовки Глотки - возможно единственное, по чему я буду скучать вне Иркутска. Там все добрые и весёлые. Хотя ради такого можно и возвращаться.

6-7 июля, среди лесов, забытых и заброшенных, побывал на их ежегодном фесте (впервые). Музыка своеобразная и не очень, прошу к просмотру. Особо запомнился шашлык из козла, которому сбежавшая собачка организаторов перегрызла шею на горе днём ранее 🥰 (мясо классное и долго жуётся)
🔥5👍1
Нежданно-негаданно пост, который я делал чтобы напомнить друзьям, что я ведроид-разраб, оказался на канале Кирилла Розова и увеличил аудиторию моего блога вдвое. Теперь большая часть аудитории - разрабы, среди них 85% пишут под андроид. Приятно получать от уважаемого человека такой подгон, спасибо ему.

И хотя акцент именно на прогерстве я не ставлю, сегодня хочется вновь затронуть тему, связанную с ним. Она весьма задротская, не-программистам возможно читать и не стоит, #тяжёлыйконтент:

Опенсорс отвратителен

Изначальный смысл "со свободно распространяемой программой идёт исходный код, поэтому её можно изменить под себя, проверить на проблемы, выслать доработки разработчику" исключительно прекрасен, но жестоко испохаблен блогерами и вкатунами. Сейчас опенсорс - это скорее "у тебя нет опыта? залей своё говно на гитхаб и забудь про него".

Я нисколько не преувеличиваю: если вы попытаетесь найти по ключевым словам что-то, что вам требуется, через поиск гитхаба, то увидите, что большинство найденных репозиториев - в лучшем случае пустые, в худшем - не компилируются и лишь делают вид, что достойны вашего времени. Issues могут игнорироваться, pull request'ы не принимаются (тру стори). На деле достойных репозиториев единицы, искать их ужасно тяжело.

Но абстрагируемся от того, что многие репозитории плохи, сконцентрируемся на хороших. Нафига вообще нужен поиск по гитхабу? Он необходим просто потому что гугл не покажет искомый проект, даже если он достоин этого, вместо этого предпочитая выдавать третьесортный булщит с сайтов, которые переписывают друг друга, не соответствуют запросу или даже генерятся нейросетями. В некоторых случаях не помогает даже указание автора и точное название репозитория.

Я напишу свой опыт публикации библиотеки и прошивки для микроконтроллеров в комментариях, чтобы не загрязнять лишней информацией этот пост, но вкратце - даже отсутствие нормальных конкурентов и наличие уникальных фичей не помогут в распространении через гугл, ему всё равно.


Ситуация, когда вы что-то делаете вроде как для всех, но не получаете какого-либо профита в виде использований вашего проекта другими людьми, не получаете звёзд, пулреквестов с фиксами багов и добавлением функциональности - это обыденность. Смотря на чужие проекты, даже после публикации проекта в тематических каналах вроде Android Broadcast абсолютный мастхев набирал ну максимум 30 звёзд и пару не особо важных Issue (я про суперполезные библиотеки и расширения, а не тупые семплы кода).

Короче, ситуация в том, что если у вас нет хоть сколько-нибудь серьёзной аудитории в блоге и нет желания писать о небольшом проектике на хабре, то о вашем вкладе в опенсорс никто ни узнает - поиском по гитхабу пользуются единицы, гугл работает только для проектов, на которые ссылается множество источников. Ну и нафиг оно вам надо? Чтобы что?

Да и, будем честны, в большинстве случаев жизнь программиста заключается в небольшом инжиниринге, решении мелких, но важных вопросов. Публикация полноценного проекта ради небольшого семпла кода на гитхаб - вообще не то, что нужно. Какие-то уникальные решения в большом репозитории попросту никогда не увидишь.

Гитхаб - для 99% случаев лишь распиаренная помойка сомнительных проектов, не дружащая с гуглом. Опенсорс - сейчас просто баззворд, с изначальными преимуществами сталкивается лишь 1% проектов, у всех остальных судьба - просто тухнуть и умереть в безызвестности. Кажется, всем нам нужна альтернатива.

Рекламная супер-ссылка!
чё повелись да? ахахахах ахахахаха
👍2😁2🔥1