This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Мой проектик для изучения всего нового переполз на экспрессивный дизайн. Обновил все что можно. Стабилизации версий библиотек ждать не стал. Сейчас экспрессия поддерживается и в мультиплатформе. Пора основательно разобраться, что в гугле понимают под выразительным интерфейсом.
Добавили альтернативный entry-point для управления темой – MaterialExpressiveTheme. А также expressiveLightColorScheme на замену lightColorScheme. Симметричной функции-шортката для темной темы нет – собирай и кастомизируй сам.
Появился новый параметр motionScheme – для анимации компонентов. Устанавливаешь туды MotionScheme.expressive() и получаешь более пружинящие кривые ускорения, более живые и заметные переходы. Меньше надо вручную настраивать tween во всех местах.
Расширили работу с формами. Добавили геометрические фигуры MaterialShapes – набор из 35 предопределенных форм. Каждая описана как полигон и имеет стабильные пропорции: можно масштабировать и вертеть как хочется. В наборе есть как базовая геометрия: овал, треугольник, так и декоративные печеньки и солнышки. Поверх этих фигур появился морфинг: формы можно превращать друг в друга, анимируя сам контур контейнера.
Усилили варианты стандартных текстовых стилей. Называется Emphasized-типографика. К привычным display* и headline* добавились акцентные версии, которые выглядят плотнее за счет увеличенного визуального веса. Такие стили нужны для крупных заголовков, онбордингов, приветственных сообщений и пустых состояний – где важно сразу цеплять взгляд.
Многие компоненты из Material3 получили expressive-версии. Сигнатура существующих методов не меняется, Compose держится за бинарную совместимость. Поэтому рядом добавляется новая перегрузка, использующая expressive-токены. Система токенов описывает цвета, размеры, формы, отступы, типографику и motion-параметры. Компоненты не хардкодят эти значения, поэтому их стиль можно централизованно менять через тему. Большая часть всего expressive API под opt-in аннотацией.
Также в Expressive добавили 30 новых компонентов:
• HorizontalFloatingToolbar – плавающий горизонтальный тулбар с навигацией и ключевыми действиями в Row.
• VerticalFloatingToolbar – плавающий горизонтальный тулбар с навигацией и ключевыми действиями в Column.
• FlexibleBottomAppBar – гибкий нижний бар для малых экранов.
• MediumFlexibleTopAppBar – верхний бар среднего размера. В раскрытом состоянии переносит заголовок и подзаголовок во вторую строку.
• LargeFlexibleTopAppBar – верхний бар большого размера.
• TwoRowsTopAppBar – верхний бар в две строки.
• ExpandedFullScreenContainedSearchBar – строка поиска с полноэкранным режимом.
• ExpandedDockedSearchBarWithGap – закреплённая строка поиска. Результаты показываются во всплывающем окне под строкой поиска, с небольшим зазором.
• LoadingIndicator – индикатор загрузки с морфингом формы.
• ContainedLoadingIndicator – морфинг формы внутри окрашенного контейнера.
• LinearWavyProgressIndicator – линейный индикатор прогресса с волнистой анимацией.
• CircularWavyProgressIndicator – круговой индикатор прогресса с волнистой анимацией.
• FloatingActionButtonMenu – меню для плавающей кнопки действия.
• FloatingActionButtonMenuItem – пункт меню для кнопки выше.
• ToggleFloatingActionButton – плавающая кнопка-переключатель с анимацией размера, скругления и цвета.
• MediumFloatingActionButton – плавающая кнопка действия среднего размера.
• SmallExtendedFloatingActionButton – маленькая расширенная плавающая кнопка с текстовой меткой и увеличенной областью нажатия.
• MediumExtendedFloatingActionButton – средняя расширенная плавающая кнопка с текстовой меткой и увеличенной областью нажатия.
• LargeExtendedFloatingActionButton – большая расширенная плавающая кнопка с текстовой меткой и увеличенной областью нажатия.
• SplitButtonLayout – двойная кнопка с основным и вторичным действием.
• ButtonGroup – горизонтальная группа кнопок.
• ToggleButton – кнопка-переключатель. Меняет состояние и морфит форму в зависимости от значения.
• ElevatedToggleButton – кнопка-переключатель с повышенным акцентом и тенью.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
• TonalToggleButton – кнопка-переключатель со средним акцентом и тональной заливкой.
• OutlinedToggleButton – кнопка-переключатель со средним акцентом и контуром.
• DropdownMenuPopup – базовый контейнер всплывающего меню.
• DropdownMenuGroup – контейнер для группировки пунктов внутри выпадающего меню.
• LabelWithSupportingText – текстовый блок с основным текстом и вспомогательной подписью.
• VerticalSlider – вертикальный слайдер для выбора значения из диапазона.
• SegmentedListItem – элемент списка с визуальным разделением и состоянием выбора.
Самым сложным в переходе на Material3 Expressive оказалась настройка цветов. В обычном Material3 уже есть несколько слоев: базовые палитры, динамические цвета, светлая и темная тема, и поверх этого – фирменные цвета брендбука. Expressive тащит еще один уровень – собственные пресеты и токены с высоким контрастом. Все вместе они начинают конфликтовать по семантике ролей. Настройка темы превращается из поменяем пару цветов в проверку целостности всей системы. Иначе обязательно что-то где-то сольется и не так отобразится. Многовато усилий от нас хотят.
Поигрались и хватит. Получилось обновление, которое пока выглядит не до конца понятным. Спустя год после релиза экспрессию никто массово в приложения не затаскивает. Даже сам гугл не торопится. Тренды в мобильных интерфейсах по-прежнему задает эппл. И уже в этом году можно ожидать нашествие блюра, жидкого стекла и всего такого в новый андроид.
• OutlinedToggleButton – кнопка-переключатель со средним акцентом и контуром.
• DropdownMenuPopup – базовый контейнер всплывающего меню.
• DropdownMenuGroup – контейнер для группировки пунктов внутри выпадающего меню.
• LabelWithSupportingText – текстовый блок с основным текстом и вспомогательной подписью.
• VerticalSlider – вертикальный слайдер для выбора значения из диапазона.
• SegmentedListItem – элемент списка с визуальным разделением и состоянием выбора.
Самым сложным в переходе на Material3 Expressive оказалась настройка цветов. В обычном Material3 уже есть несколько слоев: базовые палитры, динамические цвета, светлая и темная тема, и поверх этого – фирменные цвета брендбука. Expressive тащит еще один уровень – собственные пресеты и токены с высоким контрастом. Все вместе они начинают конфликтовать по семантике ролей. Настройка темы превращается из поменяем пару цветов в проверку целостности всей системы. Иначе обязательно что-то где-то сольется и не так отобразится. Многовато усилий от нас хотят.
Поигрались и хватит. Получилось обновление, которое пока выглядит не до конца понятным. Спустя год после релиза экспрессию никто массово в приложения не затаскивает. Даже сам гугл не торопится. Тренды в мобильных интерфейсах по-прежнему задает эппл. И уже в этом году можно ожидать нашествие блюра, жидкого стекла и всего такого в новый андроид.
isPreview
Удобная штука существует для composable-функций – LocalInspectionMode. Он сообщает, выполняется ли код внутри Preview. Полезно, так как этот самый Preview не умеет отображать штуки из реального рантайма: навигацию, пермишены, контекст-зависимые апи.
Preview – хороший способ быстро отлаживать состояние экранов. Но чтобы он работал нужно большие экраны декомпозировать, логику куда-то выносить и далее по списку.
Поэтому, когда мой очередной композабле на 2000 строк отказался отрисовываться, я пошел жаловаться агенту и он где-то в недрах androidx-библиотек откопал этот замечательный параметр композиции. Теперь экран видно во всех состояниях. Благодать!
Удобная штука существует для composable-функций – LocalInspectionMode. Он сообщает, выполняется ли код внутри Preview. Полезно, так как этот самый Preview не умеет отображать штуки из реального рантайма: навигацию, пермишены, контекст-зависимые апи.
Preview – хороший способ быстро отлаживать состояние экранов. Но чтобы он работал нужно большие экраны декомпозировать, логику куда-то выносить и далее по списку.
Поэтому, когда мой очередной композабле на 2000 строк отказался отрисовываться, я пошел жаловаться агенту и он где-то в недрах androidx-библиотек откопал этот замечательный параметр композиции. Теперь экран видно во всех состояниях. Благодать!
C нейросетями есть одна проблема – у меня нет для них задач. На работе красишь кнопки, в творчестве только кризис. При этом новые версии выходят и выходят и выходят. Следующая > предыдущей.
Поэтому, чтобы как-то их оценивать, я решил прорешать все задачи с сервиса CodeRun с компиляторами Kotlin/Java. Таких там 451 штука из 696. В отличие от литкода, в кодране задачи олимпиадного уровня и до недавнего времени не было вкладки с разборами решений. А в интернете нет хранилища, где бы они все готовенькие индексировались. Единственным местом, где обсуждаются решения является этот телеграм-чатик, но там не принято скидывать готовый код, скорее направят и подскажут, какой взять алгос.
Оказалось, что задачи решаются не так уверенно, как я думал. Часто – не с первой попытки. Пробовал ChatGPT, DeepSeek, Grok и Gemini. Сначала ChatGPT 4o, o3-mini-high и o4-mini-high. Кто-нибудь еще помнит этот всратый нейминг? Все легкие задачи отщелкались сразу. Средние решились без особых проблем этими же моделями + немного DeepSeek + Grok 3 Think. Когда подошла очередь сложных задач, эти три сетки начали тупеть и выдавать что угодно кроме решения. Зато хорошо справлялась Gemini 2.5 Pro, но примерно по 15 минут на одну задачу. В какой-то момент осталось 20 самых нерешаемых задач. На этом этапе попрощался с гроком и дипсиком. Появились Gemini 3 Pro и ChatGPT 5.2, они закрывали много тестов, но решения падали по времени или памяти. Понадобилось по 20 попыток, чтобы их решить. Наконец остались 2 задачи: Забавная очередь и Черные начинают и выигрывают, они не решились и за 50 попыток. Но вышел ChatGPT 5.4, я закинул их туда и получил готовый код с первого раза.
Что насчет промптинга. По мере роста сложности задач нейросети стали саботировать решение, прося больше вводных, либо прося меня подсказать им алгоритм решения.
Начинал с такого:
пришли решение задачи *ссылка*
Закончил этим:
Пришли код на языке Kotlin версии 1.9.21 (JRE 21) для полного решения этой задачи. Решение должно полностью соответствовать следующим требованиям:
• Решение должно быть эффективным по памяти и времени, не превышать установленные лимиты
• Код должен компилироваться без ошибок исполнения
• Решение должно проходить все открытые и закрытые тесты на платформе, где проводится проверка
• Алгоритм решения не должен быть подогнан под открытые тесты
Никакого английского и длинных простыней. Только итерирование.
По моделям поверхностно: дипсик – бумажный тигр, в кодинге плох, но разбирается в психологии, грок – хорош в знании современной повестки и написании фанфиков, слаб во всем что касается программирования, джеминай – решает олимпиадные задачи, часто с первого раза, но долго размышляет, чатгпт – тоже хорошо решает, думает быстрее.
Прогресс у новых версий явно есть. А применять лучше думающие и рассуждающие модели.
Please open Telegram to view this post
VIEW IN TELEGRAM
fontScale
Стоит пользователю зайти в настройки системы и увеличить размер текста – как весь наш аккуратный UI, бережно отрисованный по макетам из фигмы под экран 411dp со шрифтами 14–16sp, поплывет во все стороны. Дело не только в размере. Пользователь может сделать текст жирнее, добавить контур, изменить масштаб интерфейса, а на отдельных прошивках включить что-то еще. Все это сильно повлияет на реальный вид приложения.
Наша ответственность – нормально отобразиться при любых пользовательских настройках. До Android 14 fontScale менялся по фиксированным ступеням, примерно от 0.85 до 1.30. Потом появился non-linear font scaling до 200%, и теперь UI нужно проверять на действительно крупном масштабе.
В Compose размер текста задаётся в sp, а значит учитывает системные настройки. Увеличится не только компонент Text, но и контейнеры, в которые он вложен: кнопки, поля ввода, табы.
Что можно сделать в UI:
• Гибкие размеры вместо фиксированных. Не задавать жесткую высоту там, где текст потенциально вырастет. Фиксированная высота задавит контент: строки станут выше, текст не влезет, элементы обрежутся. height лучше заменить на heightIn. То же касается горизонтальных компоновок. При увеличенном тексте два Button внутри Row перестанут помещаться по ширине. В таких случаях Row лучше заменить на FlowRow, чтобы элементы переносились ниже.
• Текст нужно проектировать так, чтобы он выдерживал рост и по ширине, и по высоте. Поведение maxLines и overflow лучше продумать заранее. Если используется maxLines = 1, нужен способ показать текст полностью, например через Marquee. Для выравнивания лучше использовать логические направления – TextAlign.Start и TextAlign.End, чтобы интерфейс работал в разных локалях. Внутри чипов и кнопок текст чаще всего стоит центрировать.
• В Raw именно текст должен быть гибким, а служебные элементы – стабильными. Иначе длинная строка слева может вытолкнуть иконку справа за край экрана.
Здесь поможет .weight(1f, fill = false) – текст займет только доступное место и не сломает соседние элементы.
• Кнопки, поля ввода и контейнеры растут вместе с контентом. Если высота TextField жестко ограничена, ввод станет неудобным или невозможным. Для SnackbarHost иногда есть смысл переопределить maxLines. Если в Text есть inlineContent, его размеры тоже нужно контролировать отдельно.
• Отступы и скролл становятся обязательными. На обычном масштабе места хватит всем. На крупном сломается в первую очередь. Поэтому нужны вертикальные интервалы 8dp, боковые паддинги 16dp, contentPadding у списков и WindowInsets, чтобы контент не уезжал под клавиатуру. Без скролла часть экрана может стать недоступной.
• И еще много других сценариев, которые ты обнаружишь, если протыкаешь интерфейс приложения под лупой.
Когда UI адаптирован, его можно проверить с увеличенным шрифтом, через @Preview(fontScale = 1.5f). Для длинных строк подставлять LoremIpsum.
Я выкрутил fontScale на 200% и проверил все установленные приложения. Опыт довольно мрачный. Заботиться о слепошарых пользователях не принято.
Однако есть немного магии, чтобы не заниматься ручной адаптацией. Можно ограничить рост размера текста внутри приложения. С точки зрения доступности решение спорное, но для сохранения рабочего UI вполне надежное. Делается это оборачиванием части UI или всей темы в CompositionLocalProvider:
С этим кодом текст внутри приложения не будет расти выше заданного лимита – 1.15f. Это верхняя граница fontScale, которую ты допускаешь для данного участка UI. Если у пользователя fontScale = 1.0, ничего не изменится. Если 1.3 – значение будет ограничено до 1.15.
Стоит пользователю зайти в настройки системы и увеличить размер текста – как весь наш аккуратный UI, бережно отрисованный по макетам из фигмы под экран 411dp со шрифтами 14–16sp, поплывет во все стороны. Дело не только в размере. Пользователь может сделать текст жирнее, добавить контур, изменить масштаб интерфейса, а на отдельных прошивках включить что-то еще. Все это сильно повлияет на реальный вид приложения.
Наша ответственность – нормально отобразиться при любых пользовательских настройках. До Android 14 fontScale менялся по фиксированным ступеням, примерно от 0.85 до 1.30. Потом появился non-linear font scaling до 200%, и теперь UI нужно проверять на действительно крупном масштабе.
В Compose размер текста задаётся в sp, а значит учитывает системные настройки. Увеличится не только компонент Text, но и контейнеры, в которые он вложен: кнопки, поля ввода, табы.
Что можно сделать в UI:
• Гибкие размеры вместо фиксированных. Не задавать жесткую высоту там, где текст потенциально вырастет. Фиксированная высота задавит контент: строки станут выше, текст не влезет, элементы обрежутся. height лучше заменить на heightIn. То же касается горизонтальных компоновок. При увеличенном тексте два Button внутри Row перестанут помещаться по ширине. В таких случаях Row лучше заменить на FlowRow, чтобы элементы переносились ниже.
• Текст нужно проектировать так, чтобы он выдерживал рост и по ширине, и по высоте. Поведение maxLines и overflow лучше продумать заранее. Если используется maxLines = 1, нужен способ показать текст полностью, например через Marquee. Для выравнивания лучше использовать логические направления – TextAlign.Start и TextAlign.End, чтобы интерфейс работал в разных локалях. Внутри чипов и кнопок текст чаще всего стоит центрировать.
• В Raw именно текст должен быть гибким, а служебные элементы – стабильными. Иначе длинная строка слева может вытолкнуть иконку справа за край экрана.
Здесь поможет .weight(1f, fill = false) – текст займет только доступное место и не сломает соседние элементы.
• Кнопки, поля ввода и контейнеры растут вместе с контентом. Если высота TextField жестко ограничена, ввод станет неудобным или невозможным. Для SnackbarHost иногда есть смысл переопределить maxLines. Если в Text есть inlineContent, его размеры тоже нужно контролировать отдельно.
• Отступы и скролл становятся обязательными. На обычном масштабе места хватит всем. На крупном сломается в первую очередь. Поэтому нужны вертикальные интервалы 8dp, боковые паддинги 16dp, contentPadding у списков и WindowInsets, чтобы контент не уезжал под клавиатуру. Без скролла часть экрана может стать недоступной.
• И еще много других сценариев, которые ты обнаружишь, если протыкаешь интерфейс приложения под лупой.
Когда UI адаптирован, его можно проверить с увеличенным шрифтом, через @Preview(fontScale = 1.5f). Для длинных строк подставлять LoremIpsum.
Я выкрутил fontScale на 200% и проверил все установленные приложения. Опыт довольно мрачный. Заботиться о слепошарых пользователях не принято.
Однако есть немного магии, чтобы не заниматься ручной адаптацией. Можно ограничить рост размера текста внутри приложения. С точки зрения доступности решение спорное, но для сохранения рабочего UI вполне надежное. Делается это оборачиванием части UI или всей темы в CompositionLocalProvider:
val base = LocalDensity.current
CompositionLocalProvider(
LocalDensity provides Density(
density = base.density,
fontScale = min(base.fontScale, 1.15f)
)
) {
content()
}
С этим кодом текст внутри приложения не будет расти выше заданного лимита – 1.15f. Это верхняя граница fontScale, которую ты допускаешь для данного участка UI. Если у пользователя fontScale = 1.0, ничего не изменится. Если 1.3 – значение будет ограничено до 1.15.
Эджайл-коучи
Помню, были такие эджайл-коучи. В моем случае – серьезная тетенька-психолог за сорок, в хипстерских очечах и модной рубашке, застегнутой на все пуговицы. Раз в две недели, по пятницам в пять вечера, нас сгоняли в общий зумколл, шарили доску в миро, просили включить камеры – и начиналась симуляция командного шаманизма: тимбилдинг-хороводы, синергетические пляски, коллективное высиживание инсайтов и ритуалы на сплочение.
Тогда у меня не было времени это осмысливать. Надо – значит надо. Кто платит, тот и музыку заказывает. Но сейчас, оглядываясь назад, ясно следующее: компания зажралась. Деньги жгли карман. Эта коуч была предельно уверена в себе, а такая уверенность обычно идет рука об руку с огромной зп. Корпорации так устроены: скопилось много лишних шекелей – срочно куда-то их пристраиваем.
И как только на горизонте замаячил намек на снижение финансов – коучей выгнали первыми. Честно говоря, не вижу толпы скорбящих. Не похоже, что командная эффективность хоть сколько-то пострадала. Как будто все и так понимают, что делать для успеха общего дела.
Помню, были такие эджайл-коучи. В моем случае – серьезная тетенька-психолог за сорок, в хипстерских очечах и модной рубашке, застегнутой на все пуговицы. Раз в две недели, по пятницам в пять вечера, нас сгоняли в общий зумколл, шарили доску в миро, просили включить камеры – и начиналась симуляция командного шаманизма: тимбилдинг-хороводы, синергетические пляски, коллективное высиживание инсайтов и ритуалы на сплочение.
Тогда у меня не было времени это осмысливать. Надо – значит надо. Кто платит, тот и музыку заказывает. Но сейчас, оглядываясь назад, ясно следующее: компания зажралась. Деньги жгли карман. Эта коуч была предельно уверена в себе, а такая уверенность обычно идет рука об руку с огромной зп. Корпорации так устроены: скопилось много лишних шекелей – срочно куда-то их пристраиваем.
И как только на горизонте замаячил намек на снижение финансов – коучей выгнали первыми. Честно говоря, не вижу толпы скорбящих. Не похоже, что командная эффективность хоть сколько-то пострадала. Как будто все и так понимают, что делать для успеха общего дела.
🤣9 5 4 2 1
Работает ли СДВГ-монтаж
На меня – очень даже да.
Традиционный просмотр ютуба я оптимизировал до предела. Блок шортсов скрыт, двойная скорость, блокировщики рекламы, автоматический скип приветствий, благодарностей, сервисов ясно, академий эдисон и прочих нативок.
Есть блогеры, которых я слушаю фоном, пока загружаю посудомойку или жду, когда одуплится кодинг-агент. Это говорящие головы, интервью и прочая почти статичная картинка. Стартую с ×1.25. Если совсем тягомотина – ×1.5, ×1.75, сразу ×2.
Но есть и другая категория. Видео, которые мне просто жалко слушать фоном и смотреть на скорости. В первую и единственную очередь из-за дерганого монтажа. Хороший пример – канал Послезавтра. Каждую секунду что-то происходит: вставки, анимации, графики, звуковые акценты, выскакивающие картинки и прочие визуальные приколы. Если прибавить скорости – вообще ни за чем не уследишь. Даже под еду тяжеловато. Потребляю максимум на ×1.25.
Отдельно меня радуют мелкие детали монтажа, которые делают видео живым, например этот хрюк кабаныча. Такие ролики смотрю по-бумерски, как телевизор.
К видеомонтажу у меня большой пиетет, примерно как к разработке ПО. Почитаю труд тех, кто профессионально монтирует. Хорошая работа радует глаз. Не хочется упустить ни одной детали.
На меня – очень даже да.
Традиционный просмотр ютуба я оптимизировал до предела. Блок шортсов скрыт, двойная скорость, блокировщики рекламы, автоматический скип приветствий, благодарностей, сервисов ясно, академий эдисон и прочих нативок.
Есть блогеры, которых я слушаю фоном, пока загружаю посудомойку или жду, когда одуплится кодинг-агент. Это говорящие головы, интервью и прочая почти статичная картинка. Стартую с ×1.25. Если совсем тягомотина – ×1.5, ×1.75, сразу ×2.
Но есть и другая категория. Видео, которые мне просто жалко слушать фоном и смотреть на скорости. В первую и единственную очередь из-за дерганого монтажа. Хороший пример – канал Послезавтра. Каждую секунду что-то происходит: вставки, анимации, графики, звуковые акценты, выскакивающие картинки и прочие визуальные приколы. Если прибавить скорости – вообще ни за чем не уследишь. Даже под еду тяжеловато. Потребляю максимум на ×1.25.
Отдельно меня радуют мелкие детали монтажа, которые делают видео живым, например этот хрюк кабаныча. Такие ролики смотрю по-бумерски, как телевизор.
К видеомонтажу у меня большой пиетет, примерно как к разработке ПО. Почитаю труд тех, кто профессионально монтирует. Хорошая работа радует глаз. Не хочется упустить ни одной детали.
Абьюз системы планирования
Давайте посмотрим, какие существуют методы повышения продуктивности и как ими правильно пользоваться.
Слоты в календаре
Выглядит красиво. Не просто существуешь, а управляешь жизнью. Раскидал задачи по временным слотам и уже становишься новой версией себя. Но потом наступает час Х, а делать задачу не хочется. Как хорошо, что для таких случаев в календаре ее можно подвинуть ниже на завтра. А потом на послезавтра. В конце этого путешествия она вообще удаляется. Очень удобная система.
Чеклисты в телеграме
Недавно появились. Тоже прекрасный инструмент. Настрогал задач, выполненные отмечаешь галочками, лутаешь микродозинг дофамина от порядка и прогресса. Но система не совершенна. Например, делаешь задачу, которой вообще не было в списке, потом задним числом добавляешь ее в чеклист и сразу отмечаешь как выполненную. Мгновенный впрыск обеспечен.
Декомпозиция на подзадачи
Большая задача пугает, маленькие делаются легче. Сначала задача делится на микрозадачи. Потом микрозадачи на нанозадачи. Не замечаешь как работа над проектом заменилась на администрацию его существования. Приятно смотреть на длинный список мелких пунктов, где половина уже закрыта. Сам проект по-прежнему стоит на месте.
Помодоро-таймер
Метод серьезный, почти легендарный. Двадцать пять минут работаешь, пять отдыхаешь. Звучит безупречно. Десять минут ищем подходящий лоуфай-трек, пять минут красиво раскладываем вещи на столе, три минуты с уважением смотрим на документ. Че там осталось поплевать в потолок и вот помидорка уже созрела. Сессия засчитана, таймер ведь тикал.
Подъем в пять утра
Тяжелая артиллерия продуктивного фольклора. Автоматически становишься ближе к величию. Неважно, что лег в час ночи и весь следующий день в состоянии побитой собаки. Каким будет наше утро победителя? Может быть холодный душ, вода с лимоном и медитация? Думаю это не так элитно как непродрав зенки отсматривать километр рилсов примерно до 9 утра.
Истинный успех не за горами. А пока пойду вздремну.
Давайте посмотрим, какие существуют методы повышения продуктивности и как ими правильно пользоваться.
Слоты в календаре
Выглядит красиво. Не просто существуешь, а управляешь жизнью. Раскидал задачи по временным слотам и уже становишься новой версией себя. Но потом наступает час Х, а делать задачу не хочется. Как хорошо, что для таких случаев в календаре ее можно подвинуть ниже на завтра. А потом на послезавтра. В конце этого путешествия она вообще удаляется. Очень удобная система.
Чеклисты в телеграме
Недавно появились. Тоже прекрасный инструмент. Настрогал задач, выполненные отмечаешь галочками, лутаешь микродозинг дофамина от порядка и прогресса. Но система не совершенна. Например, делаешь задачу, которой вообще не было в списке, потом задним числом добавляешь ее в чеклист и сразу отмечаешь как выполненную. Мгновенный впрыск обеспечен.
Декомпозиция на подзадачи
Большая задача пугает, маленькие делаются легче. Сначала задача делится на микрозадачи. Потом микрозадачи на нанозадачи. Не замечаешь как работа над проектом заменилась на администрацию его существования. Приятно смотреть на длинный список мелких пунктов, где половина уже закрыта. Сам проект по-прежнему стоит на месте.
Помодоро-таймер
Метод серьезный, почти легендарный. Двадцать пять минут работаешь, пять отдыхаешь. Звучит безупречно. Десять минут ищем подходящий лоуфай-трек, пять минут красиво раскладываем вещи на столе, три минуты с уважением смотрим на документ. Че там осталось поплевать в потолок и вот помидорка уже созрела. Сессия засчитана, таймер ведь тикал.
Подъем в пять утра
Тяжелая артиллерия продуктивного фольклора. Автоматически становишься ближе к величию. Неважно, что лег в час ночи и весь следующий день в состоянии побитой собаки. Каким будет наше утро победителя? Может быть холодный душ, вода с лимоном и медитация? Думаю это не так элитно как непродрав зенки отсматривать километр рилсов примерно до 9 утра.
Истинный успех не за горами. А пока пойду вздремну.
🤣11 4 3 2❤1 1 1 1
Усталость от ИИ
Кажется уже все устали от новостей про нейросети. И от мерзкого ощущения, что каждый день на тебя катится огромная и неконтролируемая бочка, которую не остановить.
Теперь любая новость подается как исторический сдвиг и революшен. Новые прорывы, модели, агенты и стартапы. Перманентный технологический апокалипсис. Ор выше гор. В попытке заработать деньги в интернете диджитал-креаторы всех мастей коллективно сошли с ума. Греют тебя на секретную папку с промптами и билет в новую реальность. Эта торговля надеждой, страхом и упущенной выгодой сильно выматывает. На таком фоне даже здоровый интерес к инструменту быстро превращается в невроз. Не изучаешь, а дергаешься в судорогах как триперный заяц.
Как разработчики мы и так обитаем на технологическом фронтире. И без всякого ИИ участвуем в бесконечной гонке компетенций. Android, KMP, Swift, Kotlin Backend, SDUI – это только харды. Не забываем про собесы, софты, алгосы, резюме и нейронайм. Агентная разработка тут сбоку припека.
Кстати работать меньше люди не стали. ИИ ускоряет не только работу, но и требования к человеку. Так устроена капиталистическая система, она всегда в поиске новой нормы производительности. Что вчера было подвигом завтра станет базовым ожиданием. Отсюда прорастает такой сорт корпоративного помешательства как насильно заставлять работников использовать ИИ. Прописывать в KPI количество запросов в неделю. Это не шутка такая. Участь быть замененным железкой ясен красен одинаково не понравится никому из причастных.
При этом отрицать полезность ИИ будет только глупец. Он правда работает и правда помогает. Не будет никакого волшебного хлопка и отката взад. Пузырь не лопнет. Этот слой технологий с нами навсегда. В этом контексте усталость – нормальная реакция, естественная фаза суперцикла, в который всех нас сейчас затянуло.
Думаю, те, кто не купили себе первый айфон, а дождались 4s – не многое потеряли. Контроль – лучшее лекарство от цифровой истерики.
Кажется уже все устали от новостей про нейросети. И от мерзкого ощущения, что каждый день на тебя катится огромная и неконтролируемая бочка, которую не остановить.
Теперь любая новость подается как исторический сдвиг и революшен. Новые прорывы, модели, агенты и стартапы. Перманентный технологический апокалипсис. Ор выше гор. В попытке заработать деньги в интернете диджитал-креаторы всех мастей коллективно сошли с ума. Греют тебя на секретную папку с промптами и билет в новую реальность. Эта торговля надеждой, страхом и упущенной выгодой сильно выматывает. На таком фоне даже здоровый интерес к инструменту быстро превращается в невроз. Не изучаешь, а дергаешься в судорогах как триперный заяц.
Как разработчики мы и так обитаем на технологическом фронтире. И без всякого ИИ участвуем в бесконечной гонке компетенций. Android, KMP, Swift, Kotlin Backend, SDUI – это только харды. Не забываем про собесы, софты, алгосы, резюме и нейронайм. Агентная разработка тут сбоку припека.
Кстати работать меньше люди не стали. ИИ ускоряет не только работу, но и требования к человеку. Так устроена капиталистическая система, она всегда в поиске новой нормы производительности. Что вчера было подвигом завтра станет базовым ожиданием. Отсюда прорастает такой сорт корпоративного помешательства как насильно заставлять работников использовать ИИ. Прописывать в KPI количество запросов в неделю. Это не шутка такая. Участь быть замененным железкой ясен красен одинаково не понравится никому из причастных.
При этом отрицать полезность ИИ будет только глупец. Он правда работает и правда помогает. Не будет никакого волшебного хлопка и отката взад. Пузырь не лопнет. Этот слой технологий с нами навсегда. В этом контексте усталость – нормальная реакция, естественная фаза суперцикла, в который всех нас сейчас затянуло.
Думаю, те, кто не купили себе первый айфон, а дождались 4s – не многое потеряли. Контроль – лучшее лекарство от цифровой истерики.
❤10 5 3
Клешневая инженерия
Куда мы докатимся – непонятно, но уже сейчас возможен такой сценарий:
Выхожу значит из дома подышать весенним воздухом. Голова проветривается, мозг насыщается кислородом, приходит идея новой фичи. Захожу в мама варит кофе, заказываю свою любимую манго-маракуйю. Пока его мешают, беру в руки смартфон.
• Открываю в тг чат с крабом.
• Надиктовываю войс, что нужно реализовать в приложении.
• Краб что-то там отвечает, одупляет, через десять минут присылает APK с готовой фичей.
• Устанавливаю, тыкаю, одобрительно киваю.
• Попиваю чай.
Тем временем дома на маке крутится OpenClaw. К нему подключен телеграм-бот, через которого мы общаемся. Войс распознается через Whisper, после чего задачу начинает выполнять дефолтная Codex 5.4 High, которая обходится в $10/мес с учетом грейс-периода. Все, что делается через терминал, можно выполнять удаленно. Кодить проект в таком режиме – самое простое действие.
В своей основе андроид-разработка – это внесение изменений в файлы, находящиеся под версионным контролем, и последующий вызов gradlew assemble. Создал отдельную ветку, проверил гипотезу, пожрал токенов, отчитался за результат, меня по херне не отвлек.
Насчет безопасности. Когда эта приблуда угонит у меня сид-фразу и реквизирует больше полтинника в usdt – обязательно здесь сообщу.
Куда мы докатимся – непонятно, но уже сейчас возможен такой сценарий:
Выхожу значит из дома подышать весенним воздухом. Голова проветривается, мозг насыщается кислородом, приходит идея новой фичи. Захожу в мама варит кофе, заказываю свою любимую манго-маракуйю. Пока его мешают, беру в руки смартфон.
• Открываю в тг чат с крабом.
• Надиктовываю войс, что нужно реализовать в приложении.
• Краб что-то там отвечает, одупляет, через десять минут присылает APK с готовой фичей.
• Устанавливаю, тыкаю, одобрительно киваю.
• Попиваю чай.
Тем временем дома на маке крутится OpenClaw. К нему подключен телеграм-бот, через которого мы общаемся. Войс распознается через Whisper, после чего задачу начинает выполнять дефолтная Codex 5.4 High, которая обходится в $10/мес с учетом грейс-периода. Все, что делается через терминал, можно выполнять удаленно. Кодить проект в таком режиме – самое простое действие.
В своей основе андроид-разработка – это внесение изменений в файлы, находящиеся под версионным контролем, и последующий вызов gradlew assemble. Создал отдельную ветку, проверил гипотезу, пожрал токенов, отчитался за результат, меня по херне не отвлек.
Насчет безопасности. Когда эта приблуда угонит у меня сид-фразу и реквизирует больше полтинника в usdt – обязательно здесь сообщу.
Повелитель мух
Потребил этот новый мини-сериальчик – всего четыре серии, каждая раскрывает одного из персонажей. Если захочется почитать книгу, рекомендую начать с Кораллового острова. Голдинг свою написал как прямой антипод этой истории, даже имена героев оставил.
Коралловый остров повлиял не только на Повелителя, но и на Остров сокровищ Стивенсона. А сам он вырос из Робинзона Крузо, который, в свою очередь, вдохновлен реальной историей шотландского боцмана, прожившего четыре года на необитаемом острове и там с концами одичавшего.
Голдинг такую романтику нашел слащавой и решил показать как на самом деле темна человеческая природа. Будет мясо.
Еще из любопытного – Джека играет Локс Пратт, никто иной как Драко Малфой в грядущей экранизации поттерианы от HBO. Можно заранее присмотреться к персонажу – типажи схожи вплоть до первого появления в мантиях.
Потребил этот новый мини-сериальчик – всего четыре серии, каждая раскрывает одного из персонажей. Если захочется почитать книгу, рекомендую начать с Кораллового острова. Голдинг свою написал как прямой антипод этой истории, даже имена героев оставил.
Коралловый остров повлиял не только на Повелителя, но и на Остров сокровищ Стивенсона. А сам он вырос из Робинзона Крузо, который, в свою очередь, вдохновлен реальной историей шотландского боцмана, прожившего четыре года на необитаемом острове и там с концами одичавшего.
Голдинг такую романтику нашел слащавой и решил показать как на самом деле темна человеческая природа. Будет мясо.
Еще из любопытного – Джека играет Локс Пратт, никто иной как Драко Малфой в грядущей экранизации поттерианы от HBO. Можно заранее присмотреться к персонажу – типажи схожи вплоть до первого появления в мантиях.
Я освоил синхронизированные блоки в ноушене. Теперь вопросы с собеседований из всех разделов собраны на одной странице. Всего 1084 вопроса. Добавлены новые про compose, удалены неактуальные про view. Формулировки ответов переписаны, чтобы легче было заучивать.
Добавлены 2 новые лайвкодинг задачи и еще 3 из альфабанка.
Добавлено описание Bound и Unbound Function references, Lambda performance, Overloaded Function references, Mutable Property references, наследование контекста в inline-функциях.
Build.VERSION.SDK_INT_FULL, recreateOnConfigChanges, AppComponentFactory.
dropUnlessStarted и dropUnlessResumed.
SubcomposeLayout.
ListItem и Expressive.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤15 4 4 1
Получил сертификат кукодера
Прошел практическое руководство по использованию Claude Code для ускорения процесса разработки.
Теперь умею правильно сидеть на стуле листать рилсы и смотреть как клод делает всю работу за меня.
Прошел практическое руководство по использованию Claude Code для ускорения процесса разработки.
Теперь умею правильно сидеть на стуле листать рилсы и смотреть как клод делает всю работу за меня.
This media is not supported in your browser
VIEW IN TELEGRAM
Я дорос до создания собственных правил для статического анализа Kotlin-кода. Посему вот подробный гайд как их быстро навайбкодить, протестировать и выложить в Maven Central.
Можно как самому ознакомиться с пошаговой инструкцией, так и скормить ее агенту.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
2 6❤4 1
NavigationSuiteScaffold – первый шаг в дивный адаптивный мир современной Android-разработки. Вот подробнейший гайд как запихнуть этот компонент в приложение. Его скромное API уже успело наполовину устареть, возьмем только самое новое. Можно начать с замены Scaffold и потом разойтись до поддержки раскладушек и десктопов. Я попробовал, ничего сложного.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Кажется, некогда незаменимый сервис вот-вот отдаст концы. Но пока держатся и недавно обновили логотип:
🐗 ➡️ 🐗
Мне понадобилось быстро поднять VPN на эмуляторе Android. Забыл, как это делать и спросил у ChatGPT. В ответ он навалил целую кучу: хосты, прокси, DNS, виртуалки, Cold Boot, AVD, split tunneling. Что-то на сложном. Зашел на стакус оверфловус, первый же ответ – скачай VPN-приложение из Google Play. Намного проще.
Мне понадобилось быстро поднять VPN на эмуляторе Android. Забыл, как это делать и спросил у ChatGPT. В ответ он навалил целую кучу: хосты, прокси, DNS, виртуалки, Cold Boot, AVD, split tunneling. Что-то на сложном. Зашел на стакус оверфловус, первый же ответ – скачай VPN-приложение из Google Play. Намного проще.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11 1 1 1