Стой под стрелой
11.5K subscribers
1 photo
17 links
Ведет @nikitonsky. Рекламы нет
Download Telegram
Мне давно не дает покоя вопрос: почему мы набираем код моноширинным шрифтом? Почему не пропорциональыми? Есть ли какая-то фундаментальная причина?

На этот вопрос есть два простых ответа, но оба меня не устраивают.

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

Второй — выравнивание. Типа, код не текст, читается не последовательно, и соотношение между соседними линиями важно. Иногда нужно набрать что-то типа


let foo = ( 1, -1);
let foobar = (-1, 1);


и тут моноширинность как нельзя кстати.

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

Но самое главное — эти ответы не работают лично для меня. Почему лично я выбираю моноширинный шрифт? Я достаточно open-minded, у меня нет проблем идти против мейнстрима, и в разных областях я несколько раз успешно выбирался из ямы worse is better. Но пропорциональный шрифт — нет, не могу. И не потому, что привык, и не потому, что выравнивание. И даже красота не действует (пропорциональный — красивее), а я очень чувствителен к красоте. То есть есть какой-то еще аргумент, который пересиливает красоту. Но какой?

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

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

В пользу этой теории говорит вот какой анекдот. В редакторе iA Writer есть три шрифта — строго моноширинный, моноширинный с полуторными m/w, и моноширинный с полуторными m/w и 0.75 узкими i/j/l/1. Так вот, я заметил, что первыми двумя могу писать, а последним — не могу. Он уже слишком близко подобрался к пропорциональному шрифту, слишком аккуратно выглядит, что не хочется в наборе ковыряться.

Та же история с печатными машинками. Начинались как техническое ограничение, а потом оказалось, что поверх такого просторно набранного текста без украшательств и чиркать не жалко. Красоту надо в самом конце наводить, а пока работаешь, нельзя бояться руки испачкать.
💊195👍48🤡3829🤔18🤪13🥱8😁4🤨4❤‍🔥3🙈2
У меня в папке Downloads осталась последняя картинка до инбокса зеро, поэтому пора писать про нее пост.

Картинка такая: качан капусты в задумчивой позе и сообщение:

---

ВНЕШНЯЯ ССЫЛКА! ВНИМАНИЕ!! ВНИМАНИЕ!!!1111одинодинодин

Вы покидаете ЖЖ и следуете по ссылке (далее адрес ссылки)

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

Если не знаете, что делаете, не ходите туда. А если решите все-таки пойти, ничего там не вводите, не нажимайте, и не указывайте.

Or else.

---

Эта страница появляется, когда нажимаешь на ссылку где-нибудь в посте. Ну не прям примерно такая, это вольный перевод. Но по смыслу примерно такая.

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

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

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

Кстати, интересно, если я переключаюсь на другую вкладку, я покидаю сайт? А если на другое приложение? А если выключаю телефон, не закрывая сайт? А если две вкладки открою? Где тогда я нахожуся?
😁129👍29💯22🤷‍♂1612🤡7🤔5🎃5👻3🤮1🎅1
Про дизайн хочу рассказать вот какую историю. Был у меня когда-то давно Lumia 1520 на Windows 8 Mobile. Вы, наверное, видели скриншоты — плитка, один акцентный цвет, по-настоящему плоский дизайн, крупная типографика, черный фон под олед экраны.

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

А потом он обновился то ли до 8.1, то ли до 10 Mobile, не помню точно. И произошло странное: формально все осталось как было: та же концепция, те же эффекты, но тут и там стало заметно, что он стал обычнее. Условно: раньше, когда нажимал на три точки, вываливалось попап-меню (черный прямоугольник с белыми буквами), и оно было безупречно: отступы, пропорции, положение текста, все было осмысленно и гармонично поставлено. А после обновления стало более случайно: это мог быть просто прямоугольник, с условно равными отступами со всех сторон, и он уже не производил такого эффекта. Формально то же самое, но по-проще, по-колхознее. Спокойнее, наверное, но уже не так впечатляло и не так intentional выглядело.

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

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

Вы скажете, что у айфона была такая же история с iOS 7, но не совсем: iOS 7 никогда особо органично или цельно не выглядел.
💯91👌4023👍15💩7🗿4🤷2🥰1🤔1🤝1🎅1
Прочитал отчет The Performance Inequality Gap. Пишут, что медианная мобильная (!) веб-страничка (2.6 MiB) теперь весит больше оригинального Doom (2.48 MiB). Прикинь, твой телефон парсит несколько мегабайт кода, чтобы ты смог посмотреть на три строчки текста и картинку. О — оптимизация.

Также пишут, что пользователи SPA в среднем совершают около 1 навигации. То есть все эти мегабайты джаваскрипта, которые ты качаешь заранее, потому что «лучше день потерять, потом за пять минут долететь», в итоге выливаются в один-два клика И ВСЕ.

Фронтендерам доброе утро: плохо работаете, ребят. Все еще недостаточно медленно, старайтесь, пожалуйста, получше.
😁237💯8729😭18🐳10🖕6👏2🤔2🤯1🤝1🎅1
Сходил на фотовыставку, и там одна серия, женщина ездила по Египту, напрашивалась к местным семьям в гости и фотографировала их очень бедные дома и быт. Потом напечатала из фотографий книгу, отвезла ее и попросила писать участников и сочувствующих, что они об этих фотографиях думают, прямо поверх фотографий. Комментарии тоже выставлены.

И там прекрасно: «Так можно делать»/«Так нельзя делать». «Он все делает правильно»/«Нужно по-другому». «Она устала»/«Она мало работает». «Хорошо выглядит»/«Плохо выглядит». «Так не бывает» (мой любимый комментарий, под документальной фотографией, блин!)/«Мы точно так же живем». «Зачем вы это показываете?»/«Спасибо, что показали!» «Идеально ухваченный момент»/«Нужно было по-другому фотографировать». «Он на моего брата похож...» «О, пакет из Пятерочки!»

Ощущения, как в Твиттер вернулся.
😁95🔥8719🎅6🤩3
Почему-то считается, что дизайнеру или программисту круто бы думать об интересах бизнеса, что инженер, который о них думает, ценнее, чем тот, который не думает.

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

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

Я много раз разговаривал с инженерами, которые жаловались, что бизнес не дает им времени на рефакторинг или сделать нормально. Ну так он и не должен давать! Бизнес интересует бизнес, а вас, как инженера, должно интересовать, как сделать качественно, устойчиво, эффективно. К вам никто никогда снаружи с этим запросом не придет, это должна быть ваша собственная мотивация, ваши собственные ценности, ваши собственные стандарты, понимаете?

И к вам приходят, чтобы вы их продавливали. А бизнес бизнес и без вас сделает.
💯24149👍35🤡30🎅15👎13🔥11💊7😁2
Читаю Human Interface Guidlines из 1992-го, а там:

> If you include a More Choices button in a dialog box, it’s best to extend the bottom of the window to accommodate the additional information. You could move a side of the window without causing too much change in the perceived stability of the window. However, avoid expanding the window symmetrically in all directions, because this behavior destroys the user’s initial sense of the window being one object with some of it not visible.

Там дальше еще про то, что если окну надо расшириться вниз, а оно упирается в край экрана, то его можно поднять, но если пользователь его потом опять скукожит, то двигать обратно его уже не надо.

Почему? Стабильность. Это важный принцип, который современные интерфейсы полностью проебали.

Сегодня окна раздвигаются во все стороны. Внутри многих окон скролл, то есть интерфейс ездит, то есть нестабилен. В Сафари в адресной строке текст «введите адрес сайта» центрирован, но когда ставишь в него фокус, он переезжает к левому краю. Зачем? Почему? Это бессмысленная анимация, которая прямо нарушает принцип стабильности и ничем другим не оправдана.

(Кстати, курсор и текст едут к левому краю с разной скоростью, что только дополнительно добавляет к ощущению расхлебанности интерфейса.)

Или другой тупой пример из Материала: наверняка вы видели текстовые поля, в которых название поля написано внутри, типа плейсхолдер, а когда на него фокусируешься, оно уезжает наверх, типа подпись. Снова: зачем? Это лишнее дерганье и дребезжание с абсолютно непонятной целью (ну кроме как выебнуться и сделать не как у других).

Другой давно забытый пример технологии древних — дропдауны. В классическом Мак ОСе когда ты нажимал на дропдаун, текст выбранного пункта должен был остаться на месте. Условно, у вас есть выпадайка:

Цвет: [Синий ▼]

И вот когда вы нажимаете на нее, вылазит окошко с вариантами, допустим

Красный
>> Синий <<
Зеленый

И слово >> Синий << в попапе должно полностью совпасть по координатам с тем, где оно стоит в интерфейсе под попапом. Чтобы был эффект, что оно не двигается.

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

Вот еще:

> To give users a conceptual sense of stability, the interface provides a clear, finite set of objects and a clear, finite set of actions to perform on those objects. Even when particular actions are unavailable, they are not eliminated from a display but are merely dimmed.

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

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

Я уж не говорю про условный iOS, там дрыгание туда-сюда, подпружинивание, скукоживание-раскукоживание и трансформации одного в другое вообще возведены, кажется, в принцип. Вроде бы на последнем айпаде даже светофор зумится туда-сюда при ховере. Хотя казалось бы!

Короче. Стабильность — твой бро. А ховер и анимации — не твой бро. Не шевелите, пожалуйста, интерфейс.

И верните мне мой 1992-й.
222👍71💯27🥱10🎅7❤‍🔥52🥰2👌2🤔1💔1
Решил повспоминать, что было лучше при переходе с Винды на Мак, а что хуже. По совокупности я все-таки выбираю Мак, но, как видите, не все шоколадно, есть как плюсы, так и минусы.

Плюсы макОС:
- Драг энд дроп настолько хороший, что превращается в основной инструмент
- Меню сверху: не захламляет окно, легче целиться
- Комманд удобнее нажимать чем контрол
- Квик лук (быстро глянуть любой файл, не открывая программу)
- Установка приложений копированием
- Черный курсор лучше видно, чем белый
- Светло-голубое выделение лучше инвертированного
- Cmd+Left/Right удобнее чем Home/End
- Отмена в полях ввода
- Светофор слева удобнее чем кнопки справа
- Эстетика (иконки, цвета, шрифты)
- Встроенная программа просмотра ПДФ
- Можно переносить открытый файл и программы его не потеряют

UPD:
- F-кнопки нигде не используются

Минусы:
- Энтер в Файндере переименовывает, а не открывает файл
- Delete не удаляет файл
- Посмотреть все фотки в папке сложно
- Ускорение мыши (Бирман говорит, стало лучше)
- Переключение окон: отдельно между приложениями, отдельно внутри приложения
- Приложение может быть открыто и не иметь окон
- Два способа свернуть окно
- В окне открытия/сохранения правая кнопка и перетаскивание работают по-другому
- Не работает ⌘X ⌘V на файлах
- fn up/down проматывают страницу, но не перемещают курсор

UPD:
- Развернуть окно проблематично
- Нет календарика по клику на часы
- .DS_Store
👍93🥴42🤡32💯2010🎅3😱2🦄2
Метафоры в компьютере би лайк:

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

Можно открыть окно. Да, на столе. Только через него ничего не будет видно.

По правой кнопке МЫШИ можно вызвать меню, из воздуха, как в ресторане.

Еще на столе стоит мусорная корзина и он обклеен обоями.

Что непонятно?
😁244🔥56👍14💯7🥱64🎅3🤡1🎄1
Как я стал программистом.

Вообще первым компом у меня был советский ZX Spectrum. Но там карьера что-то не пошла: рыночек был маловат, аудиокассеты были в дефеците. Потом у нас появился 486-й, а вместе с ним — QBasic.

Какое-то время я перепечатывал программы из книжек и поражался тому, что они делают то, что написано. Потом сообразил, что можно что-то писать и самому, и начал рисовать всякие идеи в тетрадке в клеточку, а потом переносить эти рисунки в код. Одна клетка — 10 пикселей, линия — LINE, круг — CIRCLE. Можете себе представить. Рисовал машины там, роботов, ракеты.

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

И тут в голове что-то щелкнуло. А что если... Да не, не может быть. Это слишком просто... Слишком тупо... Или гениально? Это не сработает. Но я должен попробовать!

Короче, я написал цикл из заливки красным, заливки синим и GOTO. И мигалка начала мигать!

С тех пор я абсолютно точно могу назвать момент, когда я из кодера превратился в программиста.
👍276147🍾58🥰19😁18🎄12🔥7🤡3🐳2🌚2🎅2
Дизайнер Илья Бирман пишет про 404-ю страницу:

> Человек на тупиковом экране, ему говорят «тут ничего нет». Хорошо ведь помочь ему пойти туда, где что‑то есть! Хорошая практика с 404‑й страницы помогать человеку попасть на какую‑то существующую, хотя бы в раздел сайта, где не нашлась нужная.

> Конечно, любой интерфейс — зло. С этой точки зрения было бы лучше, если бы вместо кнопки «перейти к поиску» тут бы сразу был поиск. А ещё лучше, чтобы экран не был тупиковым изначально: этого объявления больше нет, но вот похожие, которые вы скорее всего станете искать теперь.

Это популярный тренд — на маркетплейсах, в Ютубах всяких, ты ищещь, тебе ничего не нашли (или нашли три варианта) и вот еще тебе всякого хлама в довесок, про который ты не просил.

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

Кажется, я нашел ответ. Контроль. Да, да, это тоже тема из HIG 1992-го года, прикиньте.

> Allow the user, not the computer, to initiate and control actions. People learn best when they’re actively engaged. Too often, however, the computer acts and the user merely reacts within a limited set of options. In other instances, the computer “takes care” of the user, offering only those alternatives that are judged “good” for the user or that “protect” the user from having to make detailed decisions. This approach mistakenly puts the computer, not the user, in control.

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

А потому что главный тут не компьютер. Главный — пользователь. Пользователь решает, что делать, когда, где, с кем и сколько. Компьютер молча ждет и подчиняется. У компьютера нет инициативы, нет мнения, нет своей повестки. Он делает то, что ему скажут, и только. Это принципиально.

Конечно, этот принцип давно размылся, и во многом именно поэтому компьютерами стало так неприятно пользоваться. Needy programs это именно это: компьютер пристает к человеку с чем-то своим. Компьютер что-то решает. Компьютер что-то предлагает. Компьютер как-то «помогает» или «упрощает». Короче, что угодно, только молча не слушается. Не много ли чести?

И вот это «показать в поиске похожие» это именно из этой серии. Я что-то искал. Не нашел. Дайте мне ответ на мой вопрос. Да или нет. Нет — тоже ответ, и да, я хочу его именно в таком виде получить. Ничего не нашлось.

А дальше я уже сам решу. Я хочу чего-то еще посмотреть? Пойду посмотрю. Хочу поискать? Поищу. Хочу закрыть страницу? Закрою страницу. Да, вот такой вот я, и компьютер не должен мне слова на это сказать. Хочу, и все.

А рекламу своих говнотоваров, едва замаскированную под «заботу» и «помощь», в жопу себе засуньте. Не надо нам такой «помощи», спасибо.
👍253109💯94👎6👏4🤝4💊4🎅3😁2🤔2
Сказали, что моим постам не хватает оглавления (не тут, в нормальном блоге). А я задумался — нафига постам вообще оглавление?

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

Получается, оглавление нужно, чтобы читатель чувствовал себя чуть лучше, когда решает не читать пост. Но мне-то, автору, какой интерес ему в этом помогать?
🤡140👍52💯28🤔17😁8🎅8🥱6🥴53🔥1💊1
Скучно стало. Думаю, может Линукс поставить?

Какой дистрибутив посоветуете? Чтобы железо работало из коробки, выглядело прилично, в терминале не надо было ковыряться.

Только не устраивайте срач, пожалуйста.
😁228🤣113🤡4414👍7🕊5🎅4🔥2👎1🤯1🖕1
Веб-программирование это специальная олимпиада какая-то.

Портирую тут несложную игру на айпадик на веб-технлогиях (потому что а как еще?). Думаю, раз для себя, сделаю синхронизацию прогресса как-нибудь по-простому. Например, сгенерю пользователю id и буду заливать прогресс по этому id на сервер.

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

«Но Никита, это же ради твоего же комфорта! Представь, что все сайты начнут хранить все что они хотят». О божечки, и что же тогда, они могут занять, не побоюсь этого слова, ...мегабайт? А то и десять? Камон, в мире, где Гугл клавиатура, которая вообще-то не должна ничего хранить, может вырасти до нескольких гигабайт? Где отвести пару гигов на «живые обои» это как раз плюнуть? Где, несмотря на все усилия Эпла по засиранию диска «системными файлами», у меня все равно рутинно свободно 30-40 Гб на самом маленьком телефоне? В этом мире вы будете дрочить мой вшивый килобайтный куки? Не, ребят, это не забота о пользователе, это издевательство какое-то.

В другой ситуации, ковырял кукисы уже для своего сайта, чтобы запоминал зимний режим и ночной режим. Открыл панель куков, добавил одну вручную для теста, ставлю ей Expiration, думаю, жестить не буду, 9999 год это слишком далеко, вряд ли кто-то из нас до него доживет (а если и доживет, у него будут совсем другие проблемы), поставлю 2099. Вписываю, а эта сука берет и исправляет на 2026-07. WTF? Бегу к Клоду консультироваться, а он мне: вообще-то браузеры ограничивают Expiration кука до 400 дней или меньше. Тут 180, но не суть, важен принцип. В чем идея? В чем, сука, идея?

То есть злоумышленник, например, каким-то образом украл у меня куку. И записал ее в базу данных, или, прости господи, на диск. И она у него живет бесконечность. И он может ей воспользоваться в любой момент. А Я НЕ МОГУ. Потому что вшивый браузер думает, что хранить что-то дольше шести месяцев небезопасно. У вас что, байты портятся за шесть месяцев? Чего небезопасного-то? Какая модель угроз тут? Что мы предотвратили???

Сравните с обычными программами. Нужно сохранить информацию? Создал файл, записал. И он, сука, будет лежать вечность. ВЕЧНОСТЬ! Ни одна падла его не посмеет тронуть (если только вы его не положите в iCloud, который тут же загрузит его в облако и удалит, просто потому что). Господи, такие простые вещи, такие базовые, почему мы живем в мире, где самая популярная платформа для разработки приложений не может даже создать файл, как это умели все компьютеры, наверное, с 1960-х? За что нам это страдание, где мы провинились перед Господом?

P.S. Неудиветельно, что всех вокруг заебали логины. Мало того, что их пихают туда, где надо и где не надо, так браузеры еще физически неспособны их для тебя запомнить дольше чем на две недели.
181💯145😭56🤡13🔥9👍4😈3😁2💩1🫡1🎅1
Перечитал Magic Ink, классическо эссе Брета Виктора из 2006-го. За год до выхода айфона, между прочим!

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

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

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

Круто, что он правильно определил основную трудность: перевод из дизайнерского языка на язык машины, и предсказал необходимость и успех ИИ:

> Until machine learning is as accessible and effortless as typing the word “learn,” it will never become widespread.

Вот тут ржал от саркастических кавычек:

> Programmers write to “files,” read from “sockets,” draw with “fonts” and “images,” and think in “programming languages.”

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

Например, он хотел бы, чтобы компьютер наблюдал за привычками пользователя и «подсказывал» наиболее вероятные следующие шаги. Типа, пользователь всегда ездит на работу в 7:30, давайте покажем ему, не знаю, расписание поездов в 7:20. Мило, но все такие «умные» фичи, которые я видел, меня всегда только бесили, потому что, кажется, ни разу ничего не угадали. Маршруты всегда показывают левые, о погоде не предупреждают, про дни рождения напоминают о людях, с которыми я особо и не общался. А те компании, которые хоть чуть-чуть пытаются, пытаются в первую очередь для себя: рекламку там пропихнуть, данные собрать и перепродать (а потом рекламку пропихнуть). От этого скорее холодно, чем жарко.

Или другая идея: программы должны дружить. Почта там получила письмо, в котором друг зовет на пиццу? Почему бы остальной операционной системе об этом не узнать и не начать предлагать рЕлЕвАнТнУю информацию? Ну вы знаете почему. (Потому что мертвого заебут, вот почему).

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

А как все хорошо начиналось!
👍137😢52💯3219🐳15🎅4🙏2🗿2💊1
Короче, заметил, что приложение, которое у меня по клику на часы в менюбаре показывает календарик (Дато) периодически «вылетает». Молча пропадает, часов в менюбаре нет, очень фриковое чувство, на самом деле.

Думал, ну баг может, собрался писать уже разработчику. Пошел на сайт за формой, а у него там FAQ, очень веселый: «Иконка пропала? macOS 26. Курсор мыши дрожит? macOS 26. Текст перевернут? (что? да!) macOS 26, перезагрузитесь».

Хорошо что у меня не macOS 26! Но про мой баг тоже есть ссылка — если это происходит, это потому что на вашем диске мало места и макОС убивает рандомно приложения, чтобы его освободить (где логика?) Называется CacheDelete.framework -> assert_group_cache_deletion. Началось с Каталины (10.15).

Ну офигенное решение, че! Во-первых, если места мало, это еще не значит, что надо бросать все и его освобождать. Мало и мало. Я ожидаю, что смогу своим компьютером до последнего байта пользоваться, не надо тут панику на 10-20 Гб начинать разводить.

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

Просто хочу узнать ход мысли и систему ценностей того чувака, который подумал и решил: знаешь что? Убивай. Место важнее.
💯177😁8831😱12👍9💊4🎅3😭1💅1🦄1
Редкий шанс написать первей Бирмана: вышел очередной выпуск нашего подкаста! Обсуждаем HIG и около. Ищите «Думаем дальше» где вы ищете подкасты, пишите в комментариях «уже подумал», если нашли!
😁6913🎅8👎4💩3🔥2🌚2🏆2🙉2🤔1🤷1
В далеком 2011-м году я пришел работать в компанию и мне выдали комп на Линуксе. «Зашибись!» — подумал я, потому что как раз слышал, что Линукс очень удобен для разработчиков.

Но немного им попользовавашись, я понял, что не очень-то он и хорошо сделан. Дошло до смешного: после каждой перезагрузки Линукс перемешивал иконки на моем рабочем столе. Как можно так программировать? Подумал я. Что за абсурдный, глупый, ничем не обоснованный баг! Уж точно координаты десяти-двадцати объектов можно куда-нибудь записать, и совсем непонятно, как можно ее потерять. Настолько меня это впечатлило тогда, что вот до сих пор помню.

Прошло 15 лет. Я давно накопил на Макбук и в целом гораздо более доволен качеством, но оно, как вы знаете, падает с каждым годом. И вот дошло до того, что каждый раз, как я подключаю ноут к внешнему монитору, он меняет обои на дефолтные маковские. Такие, анимированные, с лесом. И хоть ты тресни, чего я только не делал: ставил свои, ставил дефолтные маковские, ставил одноцветные, одинаковые, разные, на внешнем мониторе, на ноуте. И все равно, нет-нет да и вылезет этот дебильный лес, вид которого меня уже триггерит. Что за абсурдный, глупый, ничем не обоснованный баг! Уж точно название одной картинки можно куда-нибудь записать, и совсем непонятно, как можно его потерять.

Настолько меня это впечатляет, что недавно увидел эти обои у чувака в Ютубе и меня это триггернуло: нифига себе, думаю, макос уже внутрь веб-страничек научился свое говно анимированное пихать!
😁280💯37🔥1410🤡10🎅2💊1
С удивлением узнал, что в Rust нет синтаксиса для инициализации хэшмапов (словарей).

———

ВАЖНОЕ ДОБАВЛЕНИЕ. Нет СИНТАКСИСА. СИНТАКСИСА нет. Синтаксиса. Как для массива, вы не пишете new Массив( и дальше аргументы через запятую, вы ставите квадратную скобочку. Вот так же для мапов должно быть. И при печати тот же синтаксис должен использоваться, а не «Объект 28 указатель 126»

———


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

Ладно там Джава условная, где мапов тоже нет. Когда ее делали, многое еще непонятно было, как компьютеры надо программировать. Но между Джавой и Растом 15 лет прошло, все остальные за это время давно уже все сообразили! Хотя и к Джаве есть вопросики — даже Эрленг хэшмапы добавил, и это в язык, где их изначально не было (там вообще ничего не было)! А вы все телитесь.

Определить фундаментальность структуры данных очень легко: она есть в JSON. Множества там, например, нет. Или очереди. Вещи полезные, но не так часто, не фундаментальные. А мапа есть.

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

Короче, будете делать свой язык — знаете, с чего начать (с выбора крутого названия, понятно, но после этого).
👍98😁59👎39🤡20💯1713🤔8🎅6🥱5🔥1🍌1
Коллеги, меня слышно? Подождите, сейчас наушники подключу...

Разговаривал на днях с другом, и он мне говорит: хочу, мол, язык, чтобы типизация статическая, но чтобы компьютер все типы сам выводил, чтобы ничего нигде аннотировать не надо было.

И вот я думаю: а в чем прикол? Статическая типизация же нужна, ну, для типов? Если их не видно, ты не сможешь понять, что какая функция принимает и возвращает, а, значит, и помощи никакой не будет?

Тут вы мне скажете: есть же ИДЕ! Она все выведет и покажет. Может быть, но этого я тоже не понимаю: сначала одни люди усердно трудятся, чтобы типы спрятать, а потом другие трудятся еще усерднее, чтобы их обратно показать. Как бы все при деле, конечно, но в чем глобальный смысл этого маневра? Медленно, дорого, хрупко.

Ну или ошибки: допустим, ты где-то накосячил, но все типы выводятся, а значит автоматически обновились и ошибка расползлась транзитивно по всей системе. Компьютер же не знает, чего ты хотел, ты же ему не сказал, он знает только что ты на самом деле сделал. И вот где-то на другом краю системы ты видишь ошибку: у типа Socket нет метода «зарегистрироваться на Госуслугах». И начинается охота: а почему ты вообще решил, что тут может быть сокет, откуда он пришел и т.д.

И всего этого можно было бы легко избежать: достаточно просто подписать тип у каждой функции. Все равно по факту ты его всегда знаешь, так чего бы и не задекларировать свои намерения сразу?
👍126🤡6732💯14😁9🤔7🗿3👎2🤯1🍌1🎅1