Category: техника

Category was added automatically. Read all entries about "техника".

Продолжаем обобщать и передергивать

Евгений Трифонов накатал ответку на мой старый Software Disenchantment! На что у меня есть несколько замечаний, по мелочам и по существу.

Готов поверить, что Word в 2020-м запускается медленнее, чем консольный редактор vi в 1983-м

Интересное искажение восприятия, в котором все консольное считается ультра-быстрым, а все гуевое по-умолчанию медленным. Word очень неплохо оптимизирован на startup time как раз. Вот видео посовременнее, вот из 2010 (на железе 2010!). Как и веб-страница facebook. Несмотря на раздутость по функциям обоих. А те же vim/emacs, обвешанные плагинами, могут вполне себе долго запускаться. Или вот, например, command-line prompts, которые рисуются до 1000мс после КАЖДОЙ команды.

Да, приложения за 10 лет выросли в разы. Но объём места за то же время вырос в СОТНИ раз. То есть жить стало в десятки раз лучше.

Ну вот к этому-то и был мой основной вопрос. Мы получили выигрыш в 100 раз за счет hardware. К hardware вопросов нет. Но потеряли 10 раз в software. И хотя в сумме мы вроде как в выигрыше, к software вопросы остались! В чем причина? Неужели это обязательно? Хорошо что жить стало в десятки раз лучше, но могло бы ведь и в сотни? Так почему не стало? Мы точно знаем что могло, потому что старые приложения сохранились и работают — быстро, четко, компактно на современном железе. Зачем делать хуже, если мы уже знали, как делать лучше?

Моя цель здесь — не раскритиковать конкретный пост, а показать общий подход: мы часто заявляем «приложения разбухли/затормозили без веских причин», не до конца понимая эти причины.

У меня кстати вопросы к размеру приложений пропали после того, как фейсбук переписал мессенжер. То есть раньше я думал, там действительно что-то неладно, что такие толстые приложения получаются. Типа, фотку олега тинькоффа в 4k забыли удалить. Или статически влинковали Oracle DB, причем сразу четыре разные версии. Но нет, это банально количество кода. Переписанный с нуля текстовый чатик начинается с 360 000 строк кода в фейсбуке. Это все обычные cкомпилированные классы, просто их так вот много. Вот столько они пишут. Большие компании — большие проблемы, I guess.

А если поискать более глубокие причины, то найдется очень простой ответ: единственный более-менее промышленно практикуемый способ работы с кодом — добавление нового кода. Не улучшение, не переделывание, не замена, не удаление. Добавление. Вот и имеем что имеем.

Да, легенды говорят, где-то в далеких горах еще существует rewrite from the scratch, и он действительно может улучшить положение дел, но это скорее экзотика, о которой видят сны электропрограммисты.

(Про то, что бывают и полезные улучшения) Когда в Android ввели Adaptive Battery («умное» определение, каким приложениям можно есть аккумулятор в фоне), замеряли ли вы, изменилось ли энергопотребление вашего телефона?

Без комментариев

Yeah, Android is..interesting. Reminders come late, sometimes hours late. Dig deep in the settings in order to MAYBE fix it. It's a battery optimization thing

Who thought of that? We'll optimize battery life by NOT REMINDING YOUT IN TIME ABOUT THINGS YOU ASKED TO BE REMINDED OF!

Когда Google Play Protect в фоновом режиме заботится о вашей безопасности, вспоминаете ли вы, что раньше этого не было?

Здесь это приводится как пример оправданного улучшения и даже чуть ли не прогресса, но я лично наоборот, вспоминаю, что у меня iOS и macOS и там как-то без антивирусов все тоже неплохо работает. Так что да, постоянно задумываюсь, что с андроидом и виндоус не так, что им необходимантивирус.

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

Если ты попросил стакан молока, а разработчики возвели рядом с твоим домом молочный завод, то почему бы и не удивиться — вы там адекватные вообще? Можно быть прекрасными людьми, все обсуждать друг с другом, приходить к выводам и получить совершенно неадекватный результат в итоге. И абсолютно нормально за такую адекватность спросить. И нет, «мы все обсуждали» не достаточная причина.

Заявления об «испортившемся софте» звучат так, будто раньше разработчики экономили вычислительные мощности, а сейчас они все плевать хотели на оптимизацию.

Я думаю, разработчики не сильно изменились в плане количества усилий. Но старые программы рассчитывались на старые компьютеры, и потому на современных летают. Вопрос, собственно, только в том, почему тогда не летают новые?

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

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

Производительность JavaScript через подзорную трубу

Ха-ха-ха, производительность и JavaScript в одном предложении, лол! Славу Егорова бесконечно уважаю, но надо правильно понимать message его докладов: они про то, что чтобы заставить JS в каких-то, очень специально отобранных случаях, достойно себя вести, нужно быть минимум compiler инженером, который над самим V8 и работает.

Кому лучше от древнего мастерства пятиярусных кроватей, если при этом пригласить друга в гости некуда? Не пора ли овладевать новым мастерством выбора king size-кровати?

Намек на нетрадиционные отношения? Одобряю!

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

Ну у не-айтишников просто в целом нет денег на такие макбуки, на которых бы Slack вообще запустился.

Slack — это и есть рояль. Окей, он ест много памяти, но слышали ли вы, чтобы не-айтишники жаловались на него, как когда-то жаловались на Photoshop? По моим ощущениям, у обычных пользователей уже достаточно пространства, чтобы этот «рояль» не мешал им «пройти по комнате». Да, можно заменить на пианино и сэкономить место. Но если живёшь во дворце, и с годами площадь дворца становится ещё больше, то зачем?

Зачем вообще останавливать раздутие программ? Например, чтобы телефон или ноутбук 2017 года, с которыми все прекрасно физически, не превратились в тыкву три года спустя? Они же не изнашиваются за 3 года, процессор смазывать не нужно, пиксели из экрана не выпадают, память не засоряется. Нет НИ ОДНОЙ причины менять телефоны и ноутбуки так часто, кроме софтверной. Если железо ТАК сильно продвинулось (а оно продвинулось), я бы хотел воспользоваться этим преимуществом и покупать ноутбук за $200, а не за $1000, например, и чувствовать себя адекватно. Пользоваться программами, например. Я многого прошу, да?

(про Year 2000 problem) Но потом, много лет спустя, другим людям пришлось потратить кучу ресурсов на то, чтобы разобраться с последствиями этого решения и предотвратить проблемы.

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

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

Я же прошу не о выдрачивании всего и вся, не о неделях работы ради 0.01% выигрыша, не призываю срочно переходить на C++ и бегать с дизассемблером каждое утро. Мне хочется приземленных совершенно вещей: чтобы программы под себя не ходили, например. В том же переписывании мессенжера видно, что все их суперуспешные по стандартам индустрии достижения, которые они получили, связаны только с тем, что они порезали абсолютно дикую хуйню и ересь из прошлой кодбазы и просто сделали нормально. Это не какие-то супертехнологии, а базовые совершенно вещи: переиспользовать код! Юзать одну базу, а не десять! Планировать! Разговаривать между отделами!

Моя претензия лишь к тому, что в связи с этими проблемами возникает какая-то радикальная секта, верящая в скорый конец света из-за разрастания софта. В этой секте переписывают историю («раньше всё быстрее работало!»), недопонимают происходящее («а почему это Windows с годами так выросла, там же ничего особо и не поменялось»), говорят о разработчиках незаслуженные вещи («они не хотят ничего оптимизировать») и ударяются в крайность «давайте экономить каждый байт, даже когда это сделает пользователям хуже». Давайте не будем так делать.

Ну а я закончу цитатой из твита @amyhoy:

users
will
never
create
DEMAND
for
better
software
you
have
to
fucking
CHOOSE
DISCIPLINE
to
create
it

Будущее программирование

Я тут сделал доклад в JetBrains (внутренний, сорян) про будущее IDE. И после доклада было много вопросов из серии “Но ведь будущее определенно за Х, а вы его даже не рассматриваете”. Отвечаю.

— Почему вы не делаете IDE для браузера?

Visual Studio Code Online
Visual Studio Code Online

Делать IDE в браузере особого смысла нет. Да, лет десять назад, на волне успеха Google Docs всем казалось, что сейчас вообще все переедет в веб: и фотошоп, и обработка музыки, и монтаж видео, даже игры пытались. И, разумеется, программирование. Оказалось (внезапно, да) что браузер это довольно неудобная и ограниченная фигня и сидеть в нем добровольно никто не хочет. То есть это и так было понятно, просто лет десять назад казалось, что щас гугл с майкрософтом напрягутся и подтянут веб до нужного уровня. Тогда думать так было нормально. Сегодня это уже наивно, потому что мы видим, что по факту никто ничего никуда не подтянул, наоборот, закручивают гайки и делают из веба платформу для документов. 

Ну и десять лет назад, может быть, кому-то и казалось, что веб это дивный новый мир, но сегодня уже совсем не так ясно, зачем вообще лезть в браузер? От попадания туда у приложений не возникает магически каких-то волшебных свойств, которые невозможно было бы организовать на десктопе. Наоборот, многие полезные свойства гарантированно теряются: шорткаты сильно ограничены, drag-n-drop, файлы, интеграция в систему, перформанс. Зачем, мистер Андерсон, зачем? Если будущее приложений (вообще любых, кстати) и лежит где-то, то точно не в браузере.

— Но ведь есть WebAssembly!

Естественно, в таких дискуссиях неизбежно всплывает веб-ассемблер. Что тоже мне не очень понятно: веб ассемблер это такой способ запустить C++ в браузере. Но тут мы приходим опять же к вопросу: а зачем вообще запускаться в браузере? Что там есть такого, чтобы сначала усложнять себе жизнь, а затем эти проблемы героически решать?

— Но ведь если IDE написать для браузера, ты сразу сможешь запуститься на любом устройстве?

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

Нет, ребята, запинать код — не такая уж и проблема. Проблема — это чтобы продукт выглядел уместно в той среде, где запускается. Чтобы вел себя адекватно. Чтобы интегрировался. Поэтому write once, run anywhere это довольно наивная утопия, посмотрите хотя бы на кошмар UI-библиотек на Java. Гораздо здравомысленнее выглядит подход Flutter, которые сразу говорят: под каждую платформу виджеты свои, пишите дважды. Да, это тяжеловато разработчикам, зато прекрасно для тех, кто будет приложением пользоваться. Оптимизировать разработку продукта под время/удобство разработчика вообще путь в никуда. А если писать UI-код под каждую платформу заново звучит страшновато, то посмотрите на разработчиков игр — они под каждую консоль просто всю игру заново пишут, иногда это даже разные команды. И ничего, живут как-то, игры выходят, оптимизируются под особенности железа, используют фичи платформы. Игроки довольны.

— Ноутбуки говно, будущее за планшетами, ультимативной мобильностью и работой из купе поезда Москва-Владивосток. А что, разве нет?

Да, раз в год в интернете очередной персонаж объявляет год отказа от ноутбуков и программирования на айпаде. Да, так можно сделать. Можно найти способ, придумать, извернуться. Вопрос только: зачем?

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

Но время прошло. Айпаду уже почти 10 лет, и за это время стало понятно, что у каждого из устройств есть свой sweet spot. Для телефона это приложения, доступ к которым нужен на бегу. Для ноутбука — серьезная офисная работа. Для планшета — чтение и рисование? Так или иначе, у каждой задачи есть свой максимально удобный форм-фактор, максимально подходящий набор приложений, максимально подходящая обстановка. Скажем, для рисования это действительно экран с пером, а не ноутбук, не аудиоколонка и не телефон. Для прослушивания музыки — умная колонка, а айпад с ноутбуком будут overkill. А вот для программирования — десктоп с большим монитором, настоящей клавиатурой и мышкой/трекпадом. Все остальное — компромисс.

Да, можно программировать и на ноутбуке, почти ничего не потеряв. Можно программировать и на айпаде. Можно и на телефоне, наверное, и даже на часах. Вопрос же не в том, как может извернуться человек. А в том, что вот перед вами программист, решивший остаток своих дней посвятить созданию программ. Предположим, чисто гипотетически, что например IntelliJ IDEA УЖЕ существует для всех на свете возможных платформ, включая MiFit. Так вот, зачем, какая сила даже чисто теоретически может этого человека заставить выбрать устройством работы с кодом айпад, а не нормальную рабочую станцию? Даже при прочих равных. Ну не сможет он, бедняга, поехав в отпуск и оставив ноутбук на работе, поправить десять строчек кода. Сможет только (и будет) смотреть мультики с детьми. Настолько ли это большая проблема? Настолько ли частая? И та ли эта ситуация, вокруг которой мы должны строить будущее для всех остальных?

Спасибо, кстати, что хотя бы никто не спросил, почему мы ничего не планируем для VR-а.

— За чем же тогда будущее? На что ориентироваться?

(окей, это я уже сам себе вопрос задаю, хочется какой-то позитивный месседж в конце оставить)

Есть несколько универсальных констант, на которые можно ориентироваться всегда и никогда не прогадаешь. Это так же верно сейчас, как было 10 лет назад и как будет через 10 лет.

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

Кросс-платформенная разработка важна как минимум для трех главных платформ: macOS, Windows, Linux. Пользуясь случаем, хочу напомнить, что настоящий язык по-настоящему кросс-платформенной разработки — никакая не Java, и все еще не JavaScript и уж конечно не WebAssembly, а C++. Вот уж что-то, что действительно runs anywhere.

Скорость всегда будет одной из главных фич любой программы, и уж конечно IDE. Взлет Sublime Text, Atom и VS Code связан не с успехом JavaScript, а с тем, что ждать, пока запустится Visual Studio/XCode/Eclipse/IDEA нет ну никаких сил. Если хотите расширить доступность вашей IDE — надо не выпускать ее под iPad, а лучше снизить потребление памяти вдвое. Пользуясь случаем, напомню, что по части скорости обскакать Atom/VS Code все еще есть куда (с Sublime Text уже сложнее).

Наравне со скоростью всегда будет цениться хороший UX. Буквально, если вам нужно ворваться на рынок IDE — просто берете и делаете нормально. Тут как-то даже и конкуренции особой нет.

Вот, например, я потихоньку собираю скриншоты проблем в Idea и VS Code (для отдельного поста):

Пользуясь случаем, напомню, что количество фич ≠ хороший UX. Мало сделать правильные фичи, нужно еще удержаться и не делать неправильные/ненужные/бесполезные. Feature bloat — анти-фича, и это как раз та дыра, куда сейчас летит VS Code. У них слишком много рук и слишком много свободного времени, поэтому на запуске она уже выглядит как зведолет. А значит, это еще одна возможность обскакать лидера рынка.

В общем, если будете вдруг делать IDE — успехов!

усы2

Впечатления от iPhone после 6 лет Android/Windows телефонов

Наконец вернулся к Apple. До этого отмотал три года на Nexus 5X, перед этим — Lumia 1520 и iPhone 4S. Последний до сих пор у меня лежит, я его даже включаю иногда, чисто поржать — современные приложения занимают примерно верхнюю половину экрана тулбарами, нижнюю — клавиатурой, а между ними остается места на 1-2 строки текста.

Так вот. iPhone 8. Пока свежи впечатления.

Очень маленький. Сильно меньше Nexus 5X, который и сам всего 5,2", мелочь по сегодняшним стандартам. iPhone 8 всего 4,7". Надо было брать плюс. И нет, десятка не спасет, потому что важна ширина экрана, а не высота (ну в кнопки я не попадаю, ну. Пальцы толстые).

Стекло и округлые формы — очень скользкий. Как обмылок. И нет, я не преувеличиваю. Чехлы я терпеть не могу, а без них телефон практически невозможно держать одной рукой, что-то нажимать и чувствовать себя уверенно, что он не выскользнет. Да что там, я даже из кармана каждый раз с опаской его достаю. Понимаю теперь людей, которые кольцо-держатель сзади клеят. Apple Pay вообще атас, по сути ты наклоняешь телефон ровно так, чтобы ему удобно было выскользнуть (от себя), и надеешься только на трение между большим пальцем и кнопкой home.

Лично у меня от одной этой картинки подкашиваются ноги

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

Приложения сильно веселее и вылизаннее. Тут никакого сравнения. Видно, что для iPhone стараются, даже одна и та же компания. Сбербанк, например, на голову красивее. Речь не о функциях, ничего принципиально нового они конечно не делают, но — анимации (да, не нужные, но приятные, satisfying, и небольшие), какие-то не знаю, переходы, взаимодействия, цвета, иконки. Твитбот, например, очень неожиданно удивил, как можно создать ощущение отзывчивости в условиях, когда Twitter API всем отвечает с одной скоростью.

1password работает прям лучше. Не знаю почему, я был уверен, что на iOS всё как раз анально огорожено и нормального менеджера паролей не сделаешь. Нет, он как раз лучше.

Интеграция с Маком, да, приятная. Сразу начинает какие-то звонки принимать, пароли шарить, использовать сеть телефона, показывать заряд телефона, наушников и т.д. AirDrop опять же.

Даже заряд показывает, лапочка. А ведь его никто этому не учил!

Можно фотки айФоном делать с Мака и сканировать документы. Всё без настроек, само заработало. Ну и приятно, что можно засинкать например контакты, не привлекая в процесс Гугл вообще. Экосистема, понимаешь.

Кнопки «взад» сильно не хватает. Многие приложения реализуют «свайп слева», многие, но не все. Гугл, например, этот жест интерпретирует как листание. Плюс иногда вылезет какой-то попап без очевидной кнопки закрытия и сиди думай, как убрать. Или клаву например схлопнуть как? 

Особенно бесит несимметричность камеры. Попасть в камеру — свайп влево, а выйти — по кнопке Home. Постоянно путаюсь.

Перегруженная кнопка Home. Там есть тап, двойной тап, длинный тап, и у них еще разные действия в зависимости от того, где ты находишься. Скажем, двойной тап это либо вызов Apple Pay, либо переключение между недавними приложениями.

А. Ну и иконки наконец все одного размера и формы.

Ну да, Андроид не мог выровнять даже размеры квадратов

Сам iOS тоже не без багов. То страничка не пролистнется, то настройки зависнут. Ну бывает.

Force touch я так и не распробовал. Предполагается что если ты сильно нажимаешь на экран, то это еще одно доп. действие, на которое навешаны какие-то дополнительные интеракции. Например, на Home Screen оно вызывает контекстные меню у приложений, в Сафари приближает картинки и т.п. Ну так вот, из-за того что этот жест в принципе есть, приходится нажимать long tap очень осторожно (т.к. чуть переборщил и уже force touch). А long tap это вещь более старая, более универсальная и как следствие более полезная (перестановка иконок на Home screen например). Одно толковое применение Force Touch все-таки есть — это превращение клавиатуры в трекпад чтобы двигать текстовый курсор.

Еще не понял до конца что делать с нотификациями. На Андроиде нотификации работали четко как инбокс с задачами. То есть они копились, а потом я их разгребал. В связи с этим очень важный жест «разделаться с нотификацией, т.е. убрать ее, отметить как обработанную». Так вот, на iOS как будто чтобы их выкинуть надо ДВА раза смахивать влево, а это капец как муторно. Если смахивать вправо, то оно откроет приложение с этой нотификацией, если влево — меню. А как быстро избавиться? И когда нотификация приходит баннером сверху, тоже непонятно, как ее сразу удалить, а не просто убрать с экрана.

После свайпа нужно либо жмакать Clear, либо свайпать влево еще раз

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

Видишь нотификации? А они есть (надо потянуть снизу, чтобы увидеть)

Неоднозначная навигация. Я люблю как — каждый экран живет ровно в одном месте. А тут допустим экран с виджетами можно вытащить на заблокированном экране слева, в нотификациях сверху или на нулевом экране home screen. То есть три места. Поиск — два (виджеты и любой home screen). Нотификации — два (заблокированный и сверху). Камера снизу из контрол центра, справа на заблокированном экране, сверху из нотификаций и еще просто из иконки. То есть четыре места. Путает короче. На андроиде как было? Два раза нажал питание — камера. Я только этим шорткатом и пользовался, у меня даже иконки нигде не было.

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

скролль прицельно, %username%!

Но в целом все равно iOS приятнее Android. Приложений больше, они качественнее, Cocoa (или как он у них называется) сильно веселее Material, по совокупности всё более причесано и меньше совсем очевидной тупни. Лучше, но всё равно даже близко не «совершенный, идеальный интерфейс», вполне такой себе продукт своего века, с плюсами и минусами, насколько это вообще в человеческих силах.

усы2

КПД веба

Я тут выбрался на природу, а интернет тут только мобильный и только на букву Х (H, в смысле, ну прям не очень). И вот приспичило мне Ютуб-видосик посмотреть, где-то час в 720p.

Вы думаете что это было тяжело и больно? Как раз нет, средствами en.savefrom.net сам видеофайл, 600Mb в итоге скачался за интервал в пару-тройку часов. Мне норм, потому что я получил результат, примерно соответствующий физическим ограничениям и ситуации.

А вот что я не смог, так это открыть youtube.com на ноутбуке (через тот же мобильный интернет). То есть оно пыжилось очень сильно и долго, но максимум, что удалось увидеть — skeleton screen один раз (видимо, был закеширован где-то) и частичный лого в левом верхнем углу в другой раз с буквами «o» и «e» (серьезно, не знаю, как так, но вот так — реально только две буквы загрузились, и именно эти). При этом в network tab девтулов конечно много всякого происходило, что-то передавалось, запрашивалось, тянулось, ломалось, сервисворкеры че-то там шуршали, но результат — пустой экран, сколько не жди.

Ну как бы — а чего ты ожидал, без интернета-то? — но на самом деле чего я ожидал это веб-страницы с несколькими картинками. Просто подумайте — ну насколько сложно это должно быть, и насколько сложно это на самом деле сейчас? В вебе сегодня вообще общее место, каждый первый сайт жирный переросток, собранный из миллиона технологий, работающий только в предположении, что у тебя всё хорошо, тратящий на это в миллионы (106) больше ресурсов, и серверных, и сетевых, и клиентских, чем того требует задача, чем того требует получаемый результат вообще, и все делают вид, что это окей, потому что это поддерживает экономику видимо? Есть повод улучшать сети, покупать разработчикам новые мощные ноутбуки (в mbp mid 2018 можно воткнуть 32Гб RAM и запустить Atom и Slack одновременно!), переобучать их?

Я не разбираюсь, да мне и не очень интересны причины, но это всё чудовищное, просто ненормально гигантское несоответствие между задачами, средствами и результатом, делает меня грустным. Конечный пользователь, я, ничего не получает от того факта, что YouTube сделан на чем он там сделан — Polymer? Angular? — я получаю ту же самую простую веб-страничку с сеткой картинок и подписями-гиперлинками к ним. Еще раз: насколько это сложно? 1 HTML, 1 CSS? Я готов согласиться, что плеер, да, ему там требуется некое количество JS, все-таки нетривиальная задача, и какое-никакое кастомное взаимодействие, но всё остальное-то, боже мой? Зачем? Куда уходят эти тысячи человеко-лет, потраченные на достижение тривиального в общем-то результата непропорционально сложным и обходным путем? Ведь это всё зря, зря, мимо и низачем. Адское трение и чудовищный уход энергии в тепло вместо полезной работы. И тренд на то, чтобы делать хуже. Никто не заинтересован делать лучше. Когда это прекратится? (Никогда, я знаю, но отказываюсь в это верить)

https://twitter.com/cmuratori/status/1018985856843968512

Me: Everyone's web site is way slower than it should be.
Web: That's because they have to scale!
Me: But it seems like things still go down under load.
Web: ...
Me: Amazon runs AWS, and _their_ site didn't even stay up!
Web: Oooh look! Someone released a new JavaScript framework!


усы2

Утреннее занудство

В твиттере попалась картинка https://twitter.com/mitt_nya_nym/status/1009350180766928896

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

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

Короче, плохая метафора подобна котенку с пуговицей. Всем доброго утра

усы2

Зуб за зуб

Надо было это написать к анонсу iPhone 7, конечно. Это тот, где убрали гнездо для наушников.

Я всеми руками за беспроводное будущее. Я уже частично там: у меня куча всего беспроводного дома. Только работает оно не очень. В машине мы с женой периодически меняем телефоны — то она хочет музыку послушать, то я один еду — и это всегда небольшая пляска, чтобы телефон соединить, и отдельная — чтобы понять, что он соединился. Предыдущий мой телефон вообще перезагружался, если во время подкаста принять звонок в машине.

Дома у нас беспроводная колонка, которая умеет два одновременных устройства, и это вообще песня: «устройств» как минимум 4, поэтому чтобы послушать музыку откуда ты хочешь, надо как-то их спаривать, а на колонке, разумеется, «одна кнопка™» (с логотипом bluetooth, ни больше ни меньше) и что происходит вообще не очевидно.

Ну и эти веселые ситуации, когда проигрывание музыки/фильма прерывается секунд на 5, чтобы второе подключенное устройство (не специально, конечно, просто отспарить их еще сложнее, чем спарить) произвело какой-нибудь «пук» на нотификацию и отключилось обратно. Короче, колонка эта у нас проходит по категории «самый ненавистный предмет» и сейчас подключена проводом к стационарному компу. Двумя проводами даже: аудио и зарядкой.

Эппл-трекпад радует меня тем, что на каком-то расстоянии (ноут взял в соседнюю комнату) или по таймауту неактивности намертво отконнекчивается от макбука. Намертво — это не значит, что устройство пропадает, нет, устройства как раз друг друга видят, но разговаривать категорически отказываются. И никакое количество включений/выключений/сбросов/передобавлений это не лечит. Только перезагрузка ноута. Что характерно, после перезагрузки коннектится он легко и непринужденно. То есть всё в целом было в порядке, просто не хотели разговаривать. (видимо, какой-то драйвер в компе дохнет и не рестартует)

Или как я ночью перед конференцией пытался минут 20 заставить айпад и макбук увидеть друг друга по AirDrop, чтобы перекинуть слайды (макбук видел айпад, а мне надо было в обратном направлении гг). В итоге сделал через шнур и iTunes. И это всё эппловское, а не разных китайских производителей! Экосистема проявляется, разве что, в том, что Nexus 5X с макбуком соединить по bluetooth я в принципе не смог. Нерешаемая задача. Не хотят, и всё тут.

Самое противное во всем этом, что в случае с проводными устройствами ты мог хотя бы шнур пошевелить. Понятно было, что дергать. С беспроводными хуже — лежат два куска железа, дуются друг на друга, а дураком себя чувствуешь ты. Куда нажимать непонятно. Эппл пытается этот переход сгладить, добавив в процесс понятный физический жест (положите наушники на айфон, воткните карандаш в айпад), но пока оно так же хреново работает. Например, пресловутый карандаш у меня сегодня не хотел рисовать, пока я не удалил его в блютус-устройствах. Ладно я гик, как обычный человек должен был до этого догадаться? Колонку моя жена чуть в окно не выкинула однажды, но айпад как-то более жалко.

Я не знаю, но наверняка есть какая-то техническая причина, почему нельзя сделать нормально? Почему этот вот discovery такой ад? Почему устройства не хотят говорить? Из всего bluetooth-зоопарка у меня не было ни одного беспроблемного устройства. Ни одного! Единственно 100% надежно работающее беспроводное у меня дома — это микрософтовская клавиатура с USB-ресивером. Втыкаю/перетыкаю его по десять раз на дню, и всегда всё подхватывается мгновенно. Вот они как-то добиваются беспроблемной работы?

И в целом я был только рад, когда эппл выкинул CD-ROM — интернет и флешки тогда уже работали. Когда убрали Ethernet порт, уже был WiFi и он работал. А вот с блутусом как-то до сих пор не полетело.

В общем, вы поняли, что я смотрю с оптимизмом в будущее устройств без дырок для всего: наушников, sd-карт, мониторов, зубочисток, пальцев. Как бы ни было соблазнительно отказаться от проводов, рукам потеребить что-нибудь всё равно хочется.

усы2

AnyBar: OS X menubar status indicator



Написал небольшой универсальный индикатор для менюбара на Маке. Слушает по UDP порту, мигает цветами в зависимости от того что пришло. Можно несколько запустить на разных портах. Выглядит так:



Использую лично я для индикации состояния билда (вот плагин для boot-clj). Билд крутится в терминале, а так как экранчик у ноутбука маленький, то терминал на заднем плане где-то. Если сломалось — сразу видно по статус-бару. Вот видик, показывающий, как это работает, на старой версии.

Исходники и ссылка на скачивание на гитхабе:

https://github.com/tonsky/AnyBar

Вступайте в фан-клуб, в общем.

Ну и похвастаться:

усы2

Windows Phone

Тут пошла волна обсуждений Windows-телефонов, ну и я выскажусь, чего уж. В целом мне телефон нравится (Lumia 1520, Windows Phone 8.1), менять его не собираюсь.

Основные страдания, с ним связанные — конечно, отсутствие приложений. Кроме MS, Nokia, Gameloft и безработных студентов почти никто под него не пишет (YouTube и Facebook приложения, например, выложены в магазин Microsoft Corporation), создается ощущение страны третьего мира.

Мне много не нужно, я почти ничем не пользуюсь на телефоне, но базовые вещи хотелось бы. Инстапейпера нет, Дропбокс, Покет, Коуб только неофициальные, соответствующего качества (ок, Дропбокс сегодня вышел — через 5 лет после iPhone). Даже если приложения все-таки выпускают серьезные фирмы, чувствуется недостаток внимания. 2ГИС только онлайн. PDF-ридеры, неожиданно, все или идиотские, или мылят текст (фиг знает, может у меня телефон большой, но на 6” и 370 ppi я хочу читать пейперы как со страницы журнала). Киндл официальный глючит эпически: прям до вылетов на определенном моменте книжки или до пропуска одной-двух строк между страницами. Хрома нет, браузер только ИE, который в принципе вполне сносный и современный (видео-аудио, веб-сокеты, передний край) кроме одной детали: почему-то он какой-то из пунктов CSS стандарта интерпретирует не так как все, в результате размеры слов в абзаце иногда эпично скачут.

Поиграть тоже мало во что есть. Редкая игра из AppStore долетает. В основном все игры или Gameloft, или MS сама портирует. Candy Crush — топовой игре в AppStore — понадобилось два года чтобы до WP дойти. Ну разве что Angry Birds есть, но они и на утюгах есть.

Но это о грустном было, а о веселом вот что: социальные сеточки почти все (фб, вк, тви, инстаграм, вайн, форсквер, даже Path, вотсапп, вайбер) и неплохого качества. Яндекс почти весь под WP портирован. Встроенные приложения или отличные, или огонь: почта, календарики, погода, переводчик (со встроенным микрософтовским аналогом word lens), скайп. Понятно, что идеальный скайп-аппарат это как раз Виндоус Фон — я один раз взял трубку, поговорил и даже не понял, что мне по скайпу звонили. Есть офис, если нужно.

Камерой я продвинуто не пользуюсь, но там вроде как куча наворотов, всяких приложений, возможностей. Я просто на кнопку жму и снимаю. Кстати, физическая кнопка для камеры — тоже огонь.

Еще из выдающегося: дизайн. Микрософт вполне заслуженно родоначальник плоского стиля, и тут он во всей красе (и даже лучше) — лаконичный, стильный, мощный, современный. Эстетически каждый день пир для глаз. Не надо путать с примитивизмом — он достаточно сложно сделан, но обманывает кажущейся легкостью и простотой. И очень удобный — все прекрасно видно и читается сразу, классная типографика, всё хорошо масштабируется — я, например, нигде не страдаю, что на 6” экране ОС или приложения выглядят по-идиотски, в отличие от iPhone 6+, у которого чувствуется натянутость. Material design это вообще смех. Вообще, все основные сентименты у меня связаны с Metro UI, который на самом деле выдающаяся дизайн-система, причем совершенно неожиданно от Микрософт — у которых, как мы помним, «нет вкуса». И вот они на коне и всех обскакали, конкурентов пока не видно.

И последнее, что сильно удивляет после iPhone — количество свобод. Очень многое можно менять и настраивать под себя, в отличие от «вам это не нужно» Эппл. Каждое в отдельности — не конец света, но в совокупности уже существенный аргумент.

Например, micro-usb зарядка — супер удобно, я внезапно понял, сколько у меня этих шнуров дома оказыавется. Оффлайн карты Nokia Maps сразу из коробки — меня в поездках по миру много раз выручали. Можно SD-карту воткнуть, никто слова не скажет, места, соответственно, валом. Тайлы настраиваются под себя — частые и информативные по-крупнее и повыше, редкие вниз или рассованы маленькими, в четверть тайла, по углам. Это и удобно, и живо, в отличие от скучного порядка iOS. Плюс тайлы еще и живые, все нотификации сразу видно с главного экрана, заходить в приложение не надо. Особенно актуально для погоды и календаря. Даже на экран блокировки можно вывести картинку приложения (например, сегодняшнюю погоду или Bing картинку дня).

Еще из убойных функций — тайлом можно добавить на экран объекты изнутри приложений: конкретную книгу, альбом, подкаст, место на карте, настройку из панели управления, человека. Удобно читать несколько книг сразу, не нужно внутри приложения между ними переключаться.

В выключенном состоянии экран телефона гаснет не до конца, а показывает время + нотификации (называется Glance). Удобно, что не нужно никуда нажимать, чтобы увидеть что никто не написал. При этом живет без подзарядки 2 дня (ну, это у меня просто телефон большой).

Плюс всякие экспериментальные фишки периодически появляются. Например, недавно вышла настройка gestures для управления звонками — чтобы ответить, никуда не надо нажимать, достаточно приложить трубку к уху. Чтобы отклонить, переворачиваешь телефон, и т.п. Есть приложение, которое на любой браузер может вывести изображение с телефона. Есть режим улучшения читабельности на ярком солнце.

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

(no subject)

Наверняка, многим серьезным веб-программистом преходилось испытать неприязнь, когда они узнавали, что чтобы выложить веб-сайт надо еще изучать пхп. Все соглашаются (и в интернете я тоже читал) что это очень, очень плохой язык. Это на самом деле глупость и когда я прочитал я долго не мог поверить ходил спрашивал и оказалось не зря. Тепер ьвеб-сайты можно писать на самом популярном в мире языке джаваскрипте. Это революционный переворот и он происходит прямо на наших глазах. Что это значит для нас, ребята? Что мы уже знаем, как писать сйты по сути. Я был шокирован, как там все организовано, но похоже они все вопросы продумали с самого начала и договорились что это будет очень востребованный проект.Более того, умные C++ перцы из гугл которые по утрам ездят в автобусах набитых баскетбольными мечами уже работают над тем, чтобы джаваскрипт работал быстрее С++, потому что он комплируется сразу в результат, минуя стадию вычисления! Вы наверняка заметили это по тому, что gmail.com открывается за 5 секунд, а не 20 как это было в до-интернетную эпоху, может хотя бы самые древние. Его кстати тоже делали в гугл. Что это если не порыв я не знаю. То есть, если вы напишете свой сайт на nodejs, он автоматически будет бытсрым и будет масштабироватсья (обрабатывать столько клиентов, сколько пришло, это настоящая проблема в пхп была и некто не знал как с ней быть). Например, данные между разными запросами не изолированны и вообще можно использовать одни и те же глобальные переменные для всех клиентов и экономить память. В том же пхп это в принципе не возмонжно и засчет этого у ноды такая гиганская производительность. Там даже продумано если вы будете работать с другом или кто-то допустим, то я зык специально за счет очень удобной типизации можно писать так что вы не будете знать что и как вам передает ваш друг. Это очень удобно потому что позволяет меняь програму в одном месте и вообще не парится о том же друге что там у него програма все равно запустится.Только представьте! Любой кусок кода можно насать один раз. Например, функцию, переворачивающущю строку, и вызывать ее из браузера или включать музыку с телефона. Особенно если заморочиться совместимостью северного кода и особеностей разных браузеров. Также они добавили возможность создавать внутри функции другие функции и это очень круто, но я пока не понял как потом вернуться в первую функцию. Но самое главное, что над нодой сейчас работает туча народу просто, они переписывают все что было до них написано на ноду и у них получается лучше потому что они сразу заточились на производительность и чтобы было лучше а так же просто использовать. Например нужно сходить в базу данных создал проект на гитхабе сразу набежали форкнули завтра только пуллреквесты принять и можно заливать в продакшн на свой ноутбук. Сообщество очень дружелюбное, если кому-то удается сделать что-то работающее на ноде его обязательно хвалят и подбадревают потому что это правда успех. Я пока не понял как допустим считать файл но говорят эт из-за безопасности,там все очень надежно, ведь если к тебе вдруг идет миллион клиентов и вы облажаетесь в 10% случаев ты облажаешься перед 100 000 человек. Поэтому например если где-то произошла ошибка лучше сразу аккуратненько завершиться чем пазориться перед остальными, тем более если перезапустить сервер то там и память лишняя освободится и бегать начнет пошустрее, да и перезапускается он очнь бытсро. Иногда бывает быстрее перезапустить сервер чем дождаться окончания сборки мусора. Ктому же nodejs так оптимизирован что никогда не займет больше одного ядра а это значит что базу данных например можно поставить на тот же ноут на другое ядро для экономии ресурсов и надежности (иметь что-то на той же машине всегда надежнее, много ли что, все у кого есть дома интернет вы это итак знаете) и все будет быстро бегать и даже можно во что-нибудь пошпилить или дальше форум по nodejs почитать но тогда надо побольше ядер купить. Но в серверы как раз много ядер и ставят и как видите nodejs прекрасно справляется с этой задачей. Правда что бы писать на ноде нужно купить макбук потому что все примеры в интернете написаны на мак буке но я думаю если выделаете высокопроизводительный веб-сервис, вам всеравно прийдется пройти раунд финансирования у родителей чтобы потом его запускать. Вообщем я в восторге хотя немного напрягает что гдето должны быть проблемы но я пока не понял не столкнулся ая уже очнь долго с ней разбираюсь и пока не понял.