ermouth: (Default)
Это надо зафиксировать: Ютуб мне впервые составил плейлист органной музыки, который я слушаю уже час – и заходит.
ermouth: (Default)
Could a Neuroscientist Understand a Microprocessor? http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005268

Я примерно на третьем абзаце отмотал до начала посмотреть дату – не первоапрельская ли шутка, до того круто.
ermouth: (Default)
Внезапно без конкретной необходимости задумался, как бы я стал рисовать иконку (пиктограмку) понятия «ложь».

Первой ассоциацией проявился символ 𝓛 ) Icon of Lie.

Сразу ещё вспомнился один прекрасный момент про ложь, и Гугл мне даже видео подсунул:


ermouth: (ang)
Клавиатурные шорткаты зума на Маке – один из самых прекрасных примеров интерфейсной унификации. Не так всеохватно, как копи-пэйст, поэтому мало кто пользуется – а очень же удобно.

Cmd + и Cmd - родом из Фотошопа. На Маке они работают в адобовских продуктах, Chrome, Safari, Opera, FF, Sublime, Fraise, Atom, Terminal и iTerm, Postman, iBooks, iMovie, Skype и во всём, что связано с графикой. Ещё выпадайка с иконками программ из дока понимает Cmd+/Cmd-, при том, что Finder – не понимает.

Хром так просто образец реализации, запоминает зум отдельно для каждого домена. Скажем, вКонтакт я просто физически не могу смотреть при 100%, там нужно 125. Хром об этом помнит.

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

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

На Винде в Хроме зум – Ctrl+/Ctrl- если кто не знал. Тоже как в Фотошопе сделано.
ermouth: (ang)
Лж-френд Никитонский в своём посте про полный абзац в вебе в смысле не просто поддержки стандартов, а вообще качества стандартов, немного иронически страдает.
Но самый стресс, конечно, от безнадеги. Если на сервере ты работаешь на технологии и страдаешь, то ты знаешь, что рядом есть компании, который пишут на чем-то хорошем, и когда-нибудь ты там окажешься. <…> А на фронте не так. Логики нет, и надежды никакой нет.
Я понимаю, но мнение не разделяю. Конечно, когда впервые в полный рост сталкиваешься со всем набором прелестей около-яваскриптной экосистемы, становится грустно. Кажется, что везде бардак, анархия и вообще «куда катится этот веб».

В самом деле это не бардак и не анархия. Так выглядит изобилие.

Замечу, что изобилие – нисколько не менее хищный зверь, чем аскеза. Изобилие порождает удивительно привлекательные, захватывающие – и при этом очень расточительные артефакты. Обычно они прекрасны снаружи, но очень капризны изнутри. Причём капризность, как и в реальном мире, мало зависит от простоты или сложности артефакта. Пока не попробуешь – не узнаешь.

Скажем, мне лично несколько раз крупно не везло с синтаксисом «код внутри разметки». Вот php там, angular, handlebars и всё такое. Да, xslt ещё. Сначала просто и красиво, но чуть отвернёшься – и кровавое месиво с костылями.

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

А) Полно стабильных и проверенных артефактов. Хочешь rich controls, нормальные event-ы и ajax, работающие на чём угодно всегда – юзай jquery. Хочешь pub/sub и не париться про сокеты, лонгполлы и пр – юзай сокетио. Хочешь нормальную локальную базу – юзай localforage или pouchdb. То-есть, по аналогии с HAL (hardware abstraction layer) эти артефакты можно назвать BAL – browser abstraction layer.

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

Б) Под вновь открытую проблему быстро появляется простое и эффективное лекарство. То-есть потом, когда-нибудь, эта новая проблема может и будет побеждена и искоренена во всей экосистеме – но можно не ждать светлого будущего, а жить в реальном мире.

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

В общем, изобилие – комфортнейшее состояние экосистемы, если быть консервативным и избирательным, но прощать хорошим вещам небольшие несовершенства.

La Piovra

Feb. 26th, 2017 04:55 am
ermouth: (ang)

Я когда-то нашёл занятный концепт “Программа как осьминог” – и так на всю голову впечатлился, что мы примерно такое сейчас и делаем.

Архитектура нервной системы осьминога:

v46

Архитектура федерации узлов и данных, которую мы сейчас сочиняем:

v47

Забавно, что наш осьминог, как и всамделишный, может целиком вытечь через один канал. Без остановки сервисов, включая обновления кода и состояния, которые происходят во время “перетекания”.

Только в нашем осьминоге не обязательно 8 щупалец. И можно отращивать новые или соединять имеющиеся в одно ничего не останавливая.

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

И да, во избежание возникновения конкурирующей расы сетевых октопоидов 🐙, функции вымётывания икры у нашей системы на всякий случай не предусмотрено )

ermouth: (ang)
У маковской TimeMachine – прекрасной в целом конструкции – обнаружился довольно любопытный косячок.

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

При этом значок TimeMachine в менюбаре ни разу даже виду не подал, что давно не видит диска.

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

Непорядок. Любопытный, кста, интерфейсный кейс.
ermouth: (ang)
На тему сабжа внезапно вспомнился отличный анекдот:
В семье британского лорда был немой сын. В 16 лет, за завтраком, он внезапно заговорил:
– Почему чай холодный?
– Сынуля, ты заговорил! Почему же ты до сих пор молчал?
– Так до сих пор все было в порядке.
ermouth: (ang)
Я примерно в сентябре придумал офигенную имхо идею, как не забывать мониторить спам – иногда туда что-нибудь важное попадает.

Трюк простой – надо сделать так, чтобы в спам приходило что-то интересное, но не важное и не срочное. Не вообще интересное, а именно для вас.

У меня в спам приходят дайджесты Quora  – там что раз в несколько дней я в спам заглядываю, квору почитать )
ermouth: (ang)
Полдня размышлял в несколько философском смысле о мобильных версиях сайтов, продающих услуги пакетами (туризм). То-есть, небесспорно было, что версия для мобилы вообще должна отличаться от дескотопной чем-либо, кроме форматирования элементов и компоновки списков.

У меня были всякие предыдущие соображения в картинках, но не вырисовывалось всё целиком. В чём именно главное UX-отличие от десктопа, как это сформулировать?

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

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

Попахивает «уникальной революционной методикой» ггг 😜. В следующий раз на чём-нибудь безобидном запишу процесс, выложу.
ermouth: (ang)
На Техкранче попалась старая (дряхлая даже, больше месяца) публикация про новые наушники Apple. Наткнулся на неё после того, как прочитал, что Эппл выпуск наушников этих отложил.

Лид статьи:
After only a few days with Apple’s wireless AirPod headphones, it’s clear that there will be a huge platform business based on the reliable, persistent availability of a contextual artificial intelligence that can talk to you and receive commands.

Я вообще так о них не думал. Очень любопытно, с учётом того, что встроен акселерометр – и странно, что он так небогато используется, судя по видео в материале.

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

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

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

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

Попробую такой метод на реальном чём-нибудь.
ermouth: (ang)
№1. Пришельцы, прилетевшие на Челябинском метеорите, выедают мозги политикам, захватывают сенат США и собираются строить по всей америке теплицы для выращивания сакуры.

№2. Генерал спецслужб, упоровшись препаратами, пытается порешать проблемы России – во сне договариваясь с масонами из порноромана. Попутно уничтожается агрессивная раса вагиноидов.

Вы ознакомились с кратким содержанием последнего просмотренного сериала и последней прочитанной книжки.

Дивные новые медиа дивного нового мира 😝
ermouth: (ang)
У galkovski хорошая серия эссе о Булгакове, начало тут http://galkovsky.livejournal.com/256975.html

В последнем посте встретилось прекрасное: «И Преображенский и Персиков типичные русские интеллигенты, то есть умные и легкомысленные живодёры».

Слово «живoдёp», особенно в переносном смысле, вообще редкое и выразительное, а когда по нему классификация вводится – становится совсем интересно. Я даже задумался, кого можно считать подходящим под определение и какие они вообще бывают, помимо умных и легкомысленных.

Сочетания с некоторыми прилагательными мне ошеломительные картинки в воображении нарисовали. ‘Счастливые’, например, или ‘взлетающий’.

Ещё вот отличное же ругательство, да. 
ermouth: (Default)

В самом конце 2013 я с уверенностью предположил, что в 2014, максимум в 2015 мы увидим порт Win 95 под браузер.

Я ошибся на месяц, да.

Снимок-экрана-2016-02-01-в-17.06.17

https://win95.ajf.me/win95.html, я пробовал в Хроме. Время от времени сайт лежит – туда сегодня куча народу ломанулось.

Оно вообще довольно долго стартует – потому что выкачивает под 100Мб с черепашьей скоростью. Причём кэшируется примерно треть, остальные 2/3 выкачиваются на каждой перезагрузке страницы, ой вэй. Ну это легко поправить – и, я думаю, поправят.

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

То-есть “летать” – это значит никаких лагов вообще ни в чём интерфейсном. Звук на месте, приложения как надо работают, вот только на IE3  у меня упал, написал Uncaught SimulateInfiniteLoop.

19-летний чувак сделал. Я фигею.

ermouth: (ang)
Меня внезапно осенило, почему лишь очень небольшая часть хороших программистов в состоянии делать хорошие юзер-интерфейсы.

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

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

Типичная программа редко приближается к ограничениям окружения – обычно имеется существенный резерв, нередко на порядки. Да и самих ограничений рантайма не так и много: CPU, IO, RAM, overall response time.

С UI всё совсем не так – ограничения на время отклика отдельных частей, геометрию, да просто количество элементов, на связность и сгруппированность их, очень жесткие, никаких «туда-сюда на порядок» там нет в помине. Плюс целевые системы могут очень отличаться по производительности и, например, размерам экрана.

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

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

Сначала выбирается стратегия, а затем итеративно строится путь, причём возврат «назад», к началу, стóит существенно дороже, чем движение вперёд. Примерно так мы играем в шахматы. Примерно так выглядит процесс обучения, когда мы учимся самостоятельно.

Компоновка – это игра, а программисты нередко слишком серьёзные )
ermouth: (ang)
Уважаемые френды, живущие в России. По вашему ощущению, если вас спросить, на сколько процентов вырос/упал ваш уровень жизни за 2015, как бы вы ответили навскидку?

[Poll #2034674]
Опрос намеренно субъективный, тем не менее, под уровнем жизни я в первую очередь понимаю уровень потребления. Не столько в деньгах, сколько в общем объёме и качестве приобретённых услуг. 
ermouth: (Default)

Год начался по-високосному.

Для начала, у меня посреди зимы в зверскую сушь и морозяку (на улице –25, дома +25) зазеленела моя новогодняя ёлка, с верхушки. И, похоже, собирается цвести дальше вниз. Это вот называется “апикальный рост”:

IMG_1484

Ёлка у меня в горшке, примерно по пояс, Picea glauca conica, живая. Что зацвела – странно, эти ёлки очень капризные и не любят ни тепло, ни сухой воздух.

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

Яваскриптовое опенсорц комьюнити внезапно тоже зимой “расцвело”. Я ожидал примерно чего-то такого в 2016, но не подряд, и не таких масштабов:

  1. Oracle выпустил JS-рантайм для JVM, причём по заявлениям довольно шустрый. Назвали Грааль (Graal).
  2. Microsoft заопенсорцила Chakra Core – JS-engine из IE11 и WinJS.

Эзотерические названия вполне закономерны, приличные JS-компиляторы уже давно ворочают минимум двумя уровнями intermedite representation и некоторые механики, скромно рисуемые вот на таких схемках как Bailout – чистый хак и магия.

chakracore_pipeline

То, что MSFT выложила свой JS-энджин в опенсорц для меня полная неожиданность. Там у них какой-то совсем тектонический сдвиг.

А вот то, что Oracle сделает в какой-то момент нормальную JS-машину я предполагал, но совершенно из сторонних соображений. Дело в том, что HotSpot вырос из компилятора Smalltalk’а под названием Strongtalk. Который придумал чувак по имени Ларс Бак 20 лет назад.

Он же, неожиданно, придумал Google V8 – самый быстрый JS-компилятор до недавнего времени. Все основные идеи в V8 – родом из Strongtalk’а. Раз эти идеи породили отличный JS-компилятор в одном месте, странно было бы, если б они не выросли во что-то похожее где-то ещё.

Конвергентная эволюция, да. Нисколько не удивлюсь, если найду в Чакре в том месте, что изображено загнутой стрелкой Bailout, те же идеи, кстати.

Апикальный рост начинается примерно одновременно сразу в нескольких местах, ога )

Echopraxia

Oct. 18th, 2015 11:39 am
ermouth: (ang)
Прочитал на днях Echopraxia Питера Уоттса, на английском. Скоро выйдет перевод на русском – и я бы советовал его дождаться тем, кто хочет почитать. Вокабуляр Уоттса огромен, изобилует редкими прилагательными и специальными терминами – так что читается это всё в оригинале весьма непросто. Тем не менее, я получил огромное удовольствие – возможно, потому что почти все околобиологические термины мне знакомы (иначе я бы вообще из словаря не вылезал).

Read more... )
Итого

Читать, без всякого сомнения. Очень круто, хотя концовка, конечно, несколько обескураживает.
ermouth: (ang)
Очень клёвая презенташка. В середине, естественно, появляется LISP – куда ж без него )



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

GC, правда, родом из 1970 (оригинал публикации CJ Cheney) и его по нынешним временам никак эффективным не назовёшь – зато он очень простой. 
ermouth: (ang)
Последнюю неделю я практически рыл носом землю, чтобы понять точно, что же вызвало потерю данных. Нашёл и зафайлил кучу багов разной степени тяжести в PouchDB, но ручное прикрытие каждого так и не давало ответа, в чём же в самом деле причина.

Апофеоз истории вот тут https://github.com/pouchdb/pouchdb/issues/3961. В результате я написал тест, который имитирует, что происходит в cloudwall без запуска cloudwall – но оказалось, что этот тест никто кроме меня не может воспроизвести. А у меня он железно воспроизводился на двух моих Маках в 100% случаев – но только для двух доменов, для остальных доменов всё было ок. Я даже стал подозревать в какой-то момент, что зелёные человечки – не выдумка (шучу :)

Ключик в решению проблемы увиделся, когда я слил свои файлы IndexedDB из Хрома разработчику PouchDB, и он не смог воспроизвести баг даже с ними. Просто ничего больше не осталось, как грешить на файловую систему – всё остальное было к тому моменту тщательнейшим образом проверено и отброшено.

Так и оказалось – на обоих Маках у меня были сбои на FS. На эйре, видимо, деградировал SSD, а на iMac – HDD, который часть Fusion Drive. Именно поэтому баг и не проявлялся, пока не закроешь вкладку в Хроме – браузер закрывал файл, а файловая система его обнуляла из-за ошибок в бинарном дереве каталога.

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

Из этого надо вынести несколько уроков:

  1. БД ни при каких обстоятельствах не должна считать нижележащую технологию надёжной. А так считают и PouchDB, и IndexedDB и, увы мне, CloudWall.

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

  3. Баг – лучший учитель. Я за последнюю неделю досконально разобрался, как устроен PouchDB  в части репликации, внешних ajаx-запросов и взаимодействия с IndexedDB. Попутно разобрался со схемой запросов к IDB по-хорошему (ну и гадость, доложу я вам), с производительностью IDB, с тем, как устроены файлы каталогов в HFS+, и много ещё чего попутного по мелочи.

Такие дела. Извинился перед чуваками за наезд – хотя он бесспорно был небесполезен. Я ясно вижу, что они меняют и тесты, и сам подход.

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 03:17 pm
Powered by Dreamwidth Studios
OSZAR »