tgindex

HowProgrammingWorks - JavaScript and Node.js Programming

описание

Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/How_Programming_Works 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua

6 496
подписчиков
Охват к подписчикам
35,9%
ERR
Реакции к просмотрам
0,85%
450 на 23 постов
Пересылки к просмотрам
0,53%
279
Постов в день
0,6
всего 23

Где отзываются чаще

доля реакций к просмотрам
  • 3 авг.без подписи1,97%
  • 10 авг.Архитектура без AI — самый медленный путь к релизу. AI без архитектуры — суета перед факапом. // Сунь-Цзы1,81%
  • 15:24Slop Engineering Toolkit: - Neuroslop types - Security cosplay - Vibe architecture - Happy path tests - Unreviewed AI code - Dependency roulette - AI-generated docs for AI - Shipping without understanding - Complexity hidden behind clean syntax1,41%
  • 5 авг.Мир был бы намного лучше, если бы люди и роботы делали несколько простых вещей - промежуточные переменные вместо сложных выражений - давали бы им семантически полезные имена - и называли переменные в JavaScript идентификаторами1,20%
  • 22 июл.Passkey (вход без пароля) Вместо пароля на устройстве создается криптографическая пара ключей: - приватный остается у вас (телефон, ноутбук, ключ) - на сервер уходит только публичный При входе устройство подписывает запрос - фишинг и утечка пароля остаются в прошлом. Минимальный пример на чистом Node.js и WebAuthn API: регистрация, вход, сессия. https://github.com/HowProgrammingWorks/Passkey1,20%
  • 29 июл.Как вы думаете, кому выгодно, чтобы вы не читали код и чтобы он все время переписывался и никогда не стабилизировался? One-shot? Все с нуля и каждый раз - вот что нужно. Все свои софты личные, одноразовые тулы, agentic loop, self-review, Best-of-N, infinite repair, full-replay...1,10%
  • 24 июл.🧑‍💻 AI: зачем нужны структуры данных для JavaScript — практические примеры для бэкенда и фронтенда Структуры данных в JavaScript обычно объясняют через их внутреннее устройство, API и оценку сложности Big O. А мы пойдем от реальных инженерных проблем: написание бизнес-логики, кода на JavaScript и TypeScript для backend и frontend, типовые проблемы в разработке: коррапт глобальных данных, гонку состояния, очереди, кеширование, история изменений, управление памятью и ресурсами. Мы разберем, почему каждая структура решает определенную проблему, и уже как следствие, то что она что-то запрещает и чем за это приходится платить, но и какие плюсы мы получаем. От обычных Array, Object, Map и Set до Linked List, Persistent List, Heap, Circular buffer, Bloom filter, Stack, Queue, Append-only, Immutable lists and Records. Отдельно классифицируем структуры для доменного, продуктового, платформенного и системного кода. https://www.youtube.com/live/qNAjrZ07un01,10%
  • 6 авг.AI ошибается. Люди тоже ошибаются. Проблема в том, что AI производит код полный недочетов и скрытых ошибок быстрее, чем чинит и в большем объеме, чем человек способен прочитать. Каждая сгенерированная строка имеет стоимость владения - ее нужно поддерживать на регулярной основе. Это не актив, а нагрузка для проекта. Код нужно проверить, понять, учитывать при следующих изменениях, он попадает в контекст занимает там место. Чем больше кода генерируется, тем дороже становится дальнейшая разработка. Нужно уменьшать стоимость проверки результата и стоимость владения. Промпт не является контрактом. Это пожелание на естественном языке, допускающее десятки интерпретаций. Можно написать модели "не ломай совместимость", "учти все крайние случаи" и "пиши надежно", но эти фразы невозможно автоматически проверить. Контракт должен быть формальным и желательно исполняемым. Типы фиксируют форму данных, сигнатуры и архитектурные границы. Это дешевый, широкий, но неглубокий контроль. Типы не подтверждают бизнес-логику, порядок операций, права доступа, транзакционность, идемпотентность, отсутствие гонок и корректность побочных эффектов. А в TypeScript типы вообще не являются точным описанием того, что будет реально исполняться в виртуальной машине. Типы стирается до runtime и виртуальная машина сама выводит свои типы, которые отличаются от того, что вы себе написали в TS. Типы описывают представление компилятора о программе, а виртуальная машина работает с реальными значениями у которых есть вычислимая "форма" и с кодом, кторый оптимизируется во время исполнения под эту форму. Данные всегда приходят из сети, БД, JSON, JavaScript-модуля, пользовательского ввода и не соответствуют тому, что было в TS. Типы в рантайме более строгие, чем в TS, например, он учитывает порядок полей в объекте, знает, как резолвится асинхронная функция, через ивентлуп или очередь микротасков, отличает значения внутри Number: HeapNumber, Smi, Int8, Uint8, Int16, Uint16, Int32, Uint32, Int64, Uint64, Float16, Float32, Float64, Word8, Word16, Word32, Word64... Более того, TypeScript сознательно не является полностью sound-системой типов. Он допускает операции, безопасность которых невозможно гарантировать статически. Поэтому типы полезны как дешевый статический фильтр, документация и компактное описание архитектурной границы. Но они не подтверждают, что программа действительно выполняет контракт. Для этого нужна runtime-валидация, ограничения данных и тесты наблюдаемого поведения. Тесты фиксируют поведение гораздо точнее. Мутационное тестирование намеренно портит реализацию чтобы проверить общую стабильность на сломанном пути. Контрактные тесты подтверждают совместимость модулей и сервисов Интеграционные тесты проверяют взаимодействие с базой, сетью и инфраструктурой. E2E фиксируют наблюдаемое пользователем поведение. Нужно зафиксировать даже неизвестное legacy-поведение, а как это сделать типами? Полная типизация внутренней реализации постепенно теряет смысл, AI способен читать реализацию целиком и отслеживать реальные рантайм-типы гораздо более точно. Во многих проектах достаточно JavaScript для реализации каждого модуля + d.ts для контрактов. Typings становятся суммаризацией кода и документации. Они описывают обещание модуля внешнему миру, не заставляя потребителя изучать реализацию. Внутри можно свободно менять алгоритмы, структуры данных и декомпозицию, пока сохраняются внешние типы, тесты и инварианты. Полностью типизированный код может быть неправильным. Он может идеально собираться и одновременно нарушать бизнес-правила, терять данные, создавать гонки, неправильно повторять платежи или выдавать пользователю чужие права. Типизация реализации создает полезные ограничения, но иногда еще и ложное ощущение надежности. А лишние типы забирают внимание человека, увеличивают кодовую базу и жрут контекст AI. Заходим к Илье, учимся тестировать с AI: https://ai.javascript.ninja/gld-ai-r1,07%
  • 4 авг.Под стримом по структурам данных задали вопрос, какие AI модели я использую и какой харнес. Отвечаю развернуто, но вы должны понимать, это моя специфика разработки Я стараюсь по неделе переключаться между моделями, чтобы знать их состояние и чувствовать особенности, но для моих задач сейчас лучше всего подходит Sonnet 4.6 (даже не 5), Codex 5.3, Grok 4.5, они не очень умные, но мне не нужно, чтобы они были умные, за то они не придумывают хитрых и запутанных решений и работают очень быстро. Вот в тех же структурах данных я их все пробовал использовать и пришел к выводу, что они примерно все на одном уровне, если применять их для текхической рутины. Они делают именно то, что просишь, особенно если сбрасывать контекст часто, хотя и деградация у них ниже, чем у флагманов. Дело в том, что я использую AI для технических вещей, писать буквы, а не придумывать решение, они двигаются по четкому заданию, котороя я написал. Но Fable 5 и Opus 5 я обычно использую для другого, чтобы они сделали альтернативное моему решение и чтобы сравнить со своим, т.е. они хороши не как вспомогательный персонал, а как самостоятельные авторы и какие-то идеи у них можно брать, хоть я обычно и выкидываю их результат, потому, что они заводят код в глухой тупик очень быстро из-за того, что умные и дерзкие. В субботу 8 августа мастер-класс в 17:00, покажу тем, кто зарегистрируется https://gm.nexttick.it/go/data-structures-code-review0,97%
  • 7 авг.Завтра Часть 2 вводного курса по применению структур данных, покажу и сами примеры внедрения и Skills для AI, чтобы писать код эффективнее 1. Встроенные структуры JavaScript: Object, Array, Map, Set, WeakMap, WeakSet, TypedArray 2. Кастомные структуры: Queue, Deque, Stack, List, UnrolledList, Circular Buffer, Heap, Trie, Graph, LRU, Pool, CRDT 3. Высокопроизводительные структуры metautil: Struct, ConsList, Trie, List, UnrolledList, Queue, Deque, Stack, Pool, Semaphore В субботу, 8 августа, в 17:00 смотрим, как подключать скилы и библиотеки и использовать их в реальном коде: https://gm.nexttick.it/go/data-structures-code-review0,95%
  • 27 июл.Почему в JavaScript мире нет культуры использования структур данных? Их неправильно учат, точнее, правильно, но этого мало, такие знания полезны только на задачках с литкода и на собесах, а вот на практике люди сразу забывают про структуры данных и реальный код только: [], {}, Set, Map Я поискал, как их обычно преподают - как устроены внутри и как работают - как оптимизировать: CPU, memory - как оценить вычислительную сложность - как оптимизировать под V8, GC Но нет даже попыток показать: - как применить на реальной задаче - как они делают код понятнее - как они помогают экономить на AI 1 августа покажу примеры на реальном коде для бизнес-логики, системного программирования, бекенда, фронтенда: https://youtube.com/live/qNAjrZ07un00,94%
  • 31 июл.Стало сложно писать лучше чем Fable, я неделю оптимизировал под V8 три несчастные структуры данных, чтобы обогнать его: Unrolled List, Doubly List, Circular Buffer. Но не бойтесь, я завтра буду рассказывать не про то, как они устроены (картинка с 6 структурами), а как их использовать (картинка с 12 интерфейсами). Завтра в 19:00 — прямой эфир о практическом применении структур данных Поговорим в формате применения, решения конкретных прикладных проблем в реальном коде: • почему "массив на все случаи жизни" превращается в техдолг • какие структуры упрощают бизнес-логику, backend и frontend • как внедрить структуры данных отталкиваясь от проблемы и болей • как выбирать решения с учетом V8, памяти, GC и стоимости работы с AI Покажу код, но не код самих структур, а код того, как они используются. Будет ли запись стрима - я пока не решил, но для тех, кто посмотрит его в прямом эфире будет секретная часть, которую я точно потом отрежу. Оставляйте вопросы заранее прямо под видео — разберем их на эфире: https://youtube.com/live/qNAjrZ07un00,85%