Чарльза Доджсона

Чарльза Доджсона

Темы
Неделя
Apr 27, 2020 → May 6, 2020

Архив недели @went_out

Понедельник


Привет ) Бывает так, что иногда в коллективном бессознательном появляются флуктуации. Возможно кто-нибудь тут ещё помнит истории замечательного математика Чарльза Доджсона? Мы знаем как быстрей, но это будет дольше. В эфире @went_out. Да прибудет с вами: typeof null ...

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

Венец всего, конечно typeof null. Когда начинаешь с ним спорить, то прям чувствуешь, что у языка есть душа, настоящая "душа"... как у Gibson или Fender... Шутка ли, придумать такое в 1995 году?

Object.getPrototypeOf(Object.prototype) -- "загляденье": оно всегда так и было, несмотря на то, что этот метод проверки появился только в ES5...

Суть typeof null весьма сложно отразить в самой спецификации. Нельзя же заставить всех думать в одну сторону. Потому, что наследование в JavaScript связано с типизацией через восприятие более тонкого уровня, подробности тут: cs.utexas.edu/users/wcook/pa…

И, несмотря на то, что про исходную "случайность" природы typeof null написано много, хочется верить, что это был последовательный вывод. Вместо того, чтобы null продолжал быть "billion-dollar mistake" мы можем увидеть, что в JS это billion dollar "Win". Просто все отшучиваются.

Кстати, несмотря на то, что "HOPL IV will be postponed", всё же мы уже можем посмотреть на некоторые его части, а именно: JavaScript: The First 20 Years zenodo.org/record/3710954…

Решил забороть кучу личных болей в серверной ноде и заодно узнать, у кого что болит - dev.to/jabher/i-decid…. RT please, ну и напишите сами, если что-то болит
И если вы тоже чувствуете некоторую неловкость, что-нибудь вроде "давно пора", то welcome в сопутствующий статье тред. twitter.com/jabher/status/…

Друзья! У нас две проблемы. Минобороны и пуговица. Пуговицу мы найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу. (© "День Радио") Пуговицу можно поискать тут: github.com/tc39/proposal-…

Wrote an intro blog post dedicated to AsyncLocalStorage, the new standard CLS API: medium.com/@apechkurov/on… P.S. I'm keeping my fingers crossed to see a broad API adoption.
Или что-то случилось, или одно из двух! (© Братья пилоты) Что случилось, и почему из двух поможет понять Async Local Storage API в свежей Node.js®. Описание механики от соавтора @AndreyPechkurov можно найти здесь: twitter.com/AndreyPechkuro…

Проследить всю историю событий можно тут: github.com/nodejs/node/pu…

И само Async Local Storage API, конечно же! nodejs.org/dist/latest-v1…

Есть мнение, что у компьютеров тоже есть душа, и она отражается в стикерах... Теперь мяч на вашей стороне :)
notion image

И само Async Local Storage API, конечно же! nodejs.org/dist/latest-v1…
Вот тут Андрей @amel_true замечательно объясняет назначение в выпуске № 100 @DevSchacht: youtube.com/watch?v=WK0d_p… twitter.com/jsunderhood/st…

Dear sir @BrendanEich. 25 years ago we've got typeof null as a part of JavaScript inheritance system. Regardless if it was done by occasion, some of us might believe it was Not yet another "billion dollar mistake". Is this behaviour a part of the whole system you were thinking?

Вторник


@jsunderhood Use undefined.
И вот как понять, всё ещё шутит или уже нет? twitter.com/BrendanEich/st…

Все сложные системы склонны к самоорганизации. Случайности лишь подтверждают этот факт. И свершившийся факт случайного события порождает плеяду ответных случайностей. Об этом нам писал ещё дедушка Шеннон, конечно же Клод. Ответ про typeof null тут: github.com/tc39/ecma262/p…
notion image

Начинается новый день... (© КИНО Муравейник) Это офис ) Поутру, когда ещё никого нет, он особенно хорош... Мяч на вашей стороне )
notion image

@jsunderhood Use == null.

@jsunderhood Use == null.
разобрались ) twitter.com/BrendanEich/st…

🔥Тред (Чарльза Доджсона)
Некоторые современные исследования Гипотезы Лингвистической Относительности показывают явные корелляции между выразительным инструментарием языка программирования и предпочтениями программистов.

В этой связи особенно важно отметить стилистическую ценность мультипарадигменных языков в решении одной весьма известной проблемы, а именно: Expression Problem. en.wikipedia.org/wiki/Expressio…

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

И современное состояние JavaScript вплотную приблизило нас к решению этой задачи. Развитый инструментарий Прототипного Наследования в комбинации с Функциональной Природой позволяет использовать уже известные решения: Классы Типов, Мультиметоды и даже Категорные Суммы.

Беусловно, есть ограничения, самым важным из которых является распределение процессов Конструирования во времени. Базовое ограничение состоит в том, что хоть мы и можем унаследоваться от множества конструкторов, но сделать это получится лишь последовательно.

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

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

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

Отсюда видно, что в этой частности мы остаёмся в рамках проблем разрешимости, и в том числе в рамках теоремы Гёделя о неполноте.

🔥Тред (Чарльза Доджсона)
Тут вопрос спросили, про качество кода. @AnonovVaasya спасибо. Увы... Не знаю, рассказать то могу, а вот сделать как... twitter.com/AnonovVaasya/s…

Для себя волнующих моментах в последнее время предпочитаю давно всеми забытый паттерн с Фабриками Конструкторов: это когда функция возвращает конструктор, поставляя ему переданный аргументом прототип.
notion image

Если вы спросите стал ли бы я применять такое в коммерческих продуктах, то я бы стал... Это работало 20 лет назад, и ничего другого я не знал. Сейчас оно тоже работает. Будет ли мой коллега рад такому коду? Опросы показывают, что этот код пугает, особенно новичков, результатами.

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

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

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

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

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

Потом, конечно же, пришли люди и сказали, что в прототип нужно класть функции, мол, это удобно, и вообще мы отсталые. И, конечно же, всё испортили. Потом ещё появился Object.create, который окончательно доломал всю эту нестройную систему... Деревья больше не растут.

Так прошло 20, и мол, зачем вспоминать времена когда динозавры правили планетой? Но может быть сейчас то как раз самое время, чтобы это можно было вспомнить. У нас есть Object.setPrototypeOf, и, как это ни странно Proxy.

И если положить Proxy в конец цепочки прототипов, то... Можно, конечо, и не делать этого, но тогда будет всё "навиду" и в отладчике будет некрасиво. В общем Proxy может решить п. 3.

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

При этом наследование из экземпляра в экземпляр даёт всё те же самые возможности, что и раньше: контроллируется Execution Path, жизненный цикл и, самое главное: Контекст!

Контекст -- он оказывается неразрывано связан с this, просто потому, что так устроено само это наследование. И мы можем его потерять, но не при создании цепочки, а потом, когда уже всё случилось.

🔥Тред (Чарльза Доджсона)
Завершился Node.js SPb MeetUp11. От Андрея Печкурова @AndreyPechkurov мы узнали об алгоритмах консенсуса, хотел бы уметь так объяснять эти сложности. Андрей Гончаров @ai_goncharov зажигательно рассказал про тонкости флагов «strict mode» в TypeScript 😎: youtube.com/watch?v=WQpnlp…

Среда


без оркестра джемить можно, ритм наше всё: youtube.com/watch?v=V35iN9…

За установкой Слава, автор библиотеки от которой зависит почти 3 миллиона пакетов. Горжусь тем, что удалось с ним побыть "в одной лодке". npmjs.com/package/deep-e…
notion image

если получится, буду выкладывать пайку А Вам нравится запах Канифоли?
🤔 51.3% иногда просто так дышу им
🤔 20.5% предпочитаю иные ароматы
🤔 28.2% вариант 3, необязательный

Отдавая всё же должное Mongoose... Мне импонирует их реализация наследования. Ещё у них работает Slack и жив github. Ru канал в telegram. И Typegoose тоже хорошо, ребята пробовали и полёт нормальный. И GraphQL, да и много где движок поддерживается, и хорошо.

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

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

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

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

Вся хрупкость ощущается, когда смотришь на данные через давно известные методологии проектного управления. Шутка в том, что они исходно предназначены для описания процессов во времени, в отличие нашей привычки делить время алгоритма на до/сейчас/после: en.wikipedia.org/wiki/Program_e…

И вот если смотреть на оператор присвоения через призму Gantt Chart, то становится ясна одна очень существенная деталь. В отличие от диаграммы, где у каждой задачи есть минимум: имя, срок и результат; эта операция в алгоритме очень редко является чем-то настолько же оформленным.

Даже когда есть указание на типы примитивов и структур и/или их валидация. Даже когда есть Конструкторы структур. Даже когда конвертации из одного структурного типа в другой специально оформленны в методы ... Даже тогда сам процесс конвертации остаётся "Подразумевающимся".

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

🔥Тред (Чарльза Доджсона)

Четверг


Бывалые, I need help ) Это у меня одого тут такая неясность, что куда написано и в какую сторону читать сообщения "вверх" или "вниз", может поперёк?:
🤔 36.8% да, ты ламер
🤔 23.5% нет, но это весело
🤔 39.7% угадывать необязательно

Рад был ходить с тобой по одной планете Стивен ) Ты навсегда останешься в наших сердцах! 55:37 Keep Talking youtu.be/hokGXqEsCXk?t=…

Вот да, и именно поэтмоу! Дело же в волшебных пузырьках! media.ccc.de/v/esp17-41-bay…

Добрейшего ) без музыки никак, поэтому сегодня будем паять сдохшие потенциометры: pic.twitter.com/sCAXPE1CYm
Вчера очень... долго... спорили... Решили всё же взять коньяку и водки... но потом мнения разделились между виски и абсентом... дожили... I'll be back... twitter.com/jsunderhood/st…
notion image

Вот и всё...
🤔 55.6% Пик Балмера
🤔 20.0% Мыс Челюскина
🤔 24.4% Утёс Маяковского

Четверг. Дождя нет, поэтому тут будет небольшой тред про экономику и научно технический прогресс с точки зрения прогресс в IT . Один из лучших недавних JavaScript-related докладов с Логистической Кривой спасибо Андрею @andrey_sitnik: youtu.be/SbgqR79nPd0?t=…

Спорить не с чем: факт "смещения" тенденций от "технологии" в "предпочтения" совсем не является чем-то новым. Для примера: "Attacking through innovation" (Richard N. Foster, McKinsey Quarterly, 2000 #3) и работы Н.Д. Кондратьева. Одни и те же вопросы, графики, ответы. 100 лет!

Именно поэтому последние десять лет я исследую не экономику, а эРгономику. У инновационного процесса есть стимуляторы, они очень простые: удобное кресло, хорошая техника, приятные люди вокруг и всё такое прочее. К.О., конечно. Но Хорошо получается лишь тогда, когда Интересно!

К.О. подтверждает: для того, чтобы было интересно "горящих глаз" недостаточно: "выгорят"! Минувшей год "токсичности" тоже уже не раз был. Soft Skills не всех спасут, теория поколений не догма. Если человеку нравится программировать на JavaScript, то "специалисты" ему не навредят.

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

Много лет думал, что Тэффи права со своими "Человекообразными". Потом случайно прочёл Гессе, "Игру в бисер". Стоят друг друга.

🔥Тред (Чарльза Доджсона)

Пятница


Мир, Труд, Май ) @petrgrishin приходи почаще
notion image

The JavaScript coders guide to getting more from GitHub and npm by @ethomson May 6 githubsatellite.com/schedule/?utm_…

Суббота


Последние годы зимой в Ростове тепло, поэтому даже с приходом зимы "мангал" и посиделки в офисных кальянных не прекращаются. И, конечно же Вчера нас в офисе было бы намного больше ) тут будет тред про JavaScript Ростова-на-Дону
notion image

Как и большинство других технологий JavaScript не самодостаточен, поэтому сперва хотелось бы выразить огромную благодарность @martynovva со соратники за поистине титанический обзор: habr.com/ru/post/483110/

Вернёмся к JavaScript ) Сообщество RND.JS не большое, зато очень дружное и очень яркое, а южный менталитет и жара добавляют к сердечности +100500 ) Networking -- наше всё. Благодаря усилиям @xufocoder в последние годы мы общаемся регулярно и в offline: jsweekdays.ru

И, куда же без After-Party! Для того, чтобы они случались нужны митапы и конференции ) Некоторые записи прошедших выступлений можно посмотреть на канале: youtube.com/channel/UC23mR…
notion image
notion image
notion image
notion image

И вдруг как-то раз мы решили, что уже хочется делать и просто Party. Это прошлогодний весенний Front-End party RND.JS. Да, бананы тоже можно запекать на мангале. И продолжать кодить в кальянной -- это законно )
notion image
notion image
notion image
notion image

Закрытие сезона мангала Конечно же запомнили не все, но "страна должна знать своих героев", поэтому фотографу наливали не сильно:
notion image
notion image
notion image

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

🔥Тред (Чарльза Доджсона)
Как и большинство других технологий JavaScript не самодостаточен, поэтому сперва хотелось бы выразить огромную благодарность @martynovva со соратники за поистине титанический обзор: habr.com/ru/post/483110/
С надеждой, что всё это скоро закончится : @rndtechpro верим, надеемся, ждём ) @conf_south сделаем интернет ещё лучше ) twitter.com/jsunderhood/st…

Воскресенье


Вот и Воскресенье ) Спасибо, что побыли со мной эту неделю! Мы успели поговорить про состояние контекстов, важность typeof null, про экономику и лингвистическую относительность. тут будут ссылки на треды

Ещё раз рекомендую эту книгу, не просто потому, что в ней много всего интересного, в ней состояние понимания происходящего "на будущее" ) Её же порекомендовал Брендан Айк в треде ответов про важность typeof null. zenodo.org/record/3710954…

@jsunderhood Use == null.
Да, начав с typeof null, с его важности и справедливости этого ответа, решили пообщаться с twitter аккаунтом Брендана Айка и выяснить его мнение на этот счёт, тред тут: twitter.com/BrendanEich/st…

Или что-то случилось, или одно из двух! (© Братья пилоты) Что случилось, и почему из двух поможет понять Async Local Storage API в свежей Node.js®. Описание механики от соавтора @AndreyPechkurov можно найти здесь: twitter.com/AndreyPechkuro…
Ещё мы посмотрели вокруг состояния контекста Async Local Storage API в Node.JS. Там будет много изменений, и, надеюсь, что всё будет становиться лучше и лучше: twitter.com/jsunderhood/st…

@Oleg75113370 @jsunderhood Тут демка, она странная, да: twitter.com/went_out/statu…
Узнали моё мнение о данных и Type Class twitter.com/jsunderhood/st… twitter.com/went_out/statu…

@jsunderhood Почему надо удивляться хиральности, если она практически везде есть и в микромире и в макромире? И в законах физики и в лингвистике. Нет ни одного точного перевода и потому невозможно перевести слово туда-обратно и получить тоже слово. Потому что в одинаковых словах разный смысл.
Немного обсудили Лингвистическую Относительность, ничего не понятно, но весело: twitter.com/martynovva/sta…

@martynovva Например мне понадобилось решить в целом абсолютно аналогичную проблему, но на, с позволения "микро" уровне, где распредределение во времени отражало ошибку при попытках воссоздать топологическую сортировку int последовательности вызовов в async_hooks. Мои тесты оно не проходит.
обсудили про энтропию и хиральность: twitter.com/jsunderhood/st… twitter.com/jsunderhood/st… twitter.com/jsunderhood/st…

Четверг. Дождя нет, поэтому тут будет небольшой тред про экономику и научно технический прогресс с точки зрения прогресс в IT . Один из лучших недавних JavaScript-related докладов с Логистической Кривой спасибо Андрею @andrey_sitnik: youtu.be/SbgqR79nPd0?t=…
Вспомнили про Логистическую Кривую twitter.com/jsunderhood/st…

Вот да, и именно поэтмоу! Дело же в волшебных пузырьках! media.ccc.de/v/esp17-41-bay…
Выяснили, что треды твиттера "не для всех", но дело было в волшебных пузырьках: twitter.com/jsunderhood/st…

Вот и всё...
Так и не спаяли потенциометры: twitter.com/jsunderhood/st…

Закрытие сезона мангала Конечно же запомнили не все, но "страна должна знать своих героев", поэтому фотографу наливали не сильно: pic.twitter.com/xO4PQBG3kd
посмотрели фотографии мангала twitter.com/jsunderhood/st…

Здесь свежий рассказ Ильи Климова про то, что это такое и зачем оно нужно @xanf_ua в обсуждении с соавтором PR @AndreyPechkurov youtu.be/H8gl5IpDWKA?t=…

Вот тут Андрей @amel_true замечательно объясняет назначение в выпуске № 100 @DevSchacht: youtube.com/watch?v=WK0d_p… twitter.com/jsunderhood/st…
И, конечно же, обзор от Андрея @amel_true twitter.com/jsunderhood/st…

Все сложные системы склонны к самоорганизации. Случайности лишь подтверждают этот факт. И свершившийся факт случайного события порождает плеяду ответных случайностей. Об этом нам писал ещё дедушка Шеннон, конечно же Клод. Ответ про typeof null тут: github.com/tc39/ecma262/p… pic.twitter.com/1MFAfyoj9S
И на мой взгляд, это стечение обстоятельств более чм обоснованное и справедливое, так как отражает смысл null в JavaScript, что он особенный, т.к. он про объекты, а не про данные: twitter.com/jsunderhood/st…

Некоторые планы по развитию ситуации вокруг Async Hooks и Async Local Storage тут: github.com/nodejs/diagnos…

🔥Тред (Чарльза Доджсона)

Среда


К сожалению, на этой неделе неуважаемая редакция не сумела договориться с гостем 🤦‍♂️ Отдыхаем и ждём следующей недели🏡

Ссылки