Size: a a a

2019 June 19
2pegramming
забыл добавить, хочется взять разные примитивы из https://github.com/ruby-concurrency/concurrent-ruby и показать как их использовать вместе со сканером
источник
2pegramming
Начинаем стрим.

https://www.twitch.tv/davydovanton
источник
2pegramming
к сожалению из-за вылета OBS (программы для захвата экрана и стрима) у меня не сохранилась вторая половина стрима. Попробую что-то с этим сделать, но боюсь, что записи в этот раз не будет 🙁
источник
2019 June 21
2pegramming
Пятничное чтиво

На этой неделе прошел стрим, на котором подвел OBS (программа для стрима и захвата экрана). Запись спас, монтирую и надеюсь скоро выложу. А пока можно посмотреть прошлые стримы и добавить себе календарь предстоящих стримов с сайта.

Так же буду рад предложениям, вопросам и идеям для стримов. Можно написать в личку, а можно в анонимную форму.

—————————————

IoC container solves a problem you might not have but it’s a nice problem to have
В статье рассматривается что такое IoC контейнер, какие проблемы решаются с помощью контейнеров и какие трудности возникают при использовании данного подхода. Я уже писал об контейнерах в руби и последние 3 года использую приложения только с контейнерами. По собственному опыту скажу, что отдельный список зависимостей для каждого файла облегчает понимание что происходит в зависимости, а DI облегчает тестирование.

—————————————

Developing Microservices with Behavior Driven Development and Interface Oriented Design
В статье рассматривается проблема тестирования сервисной (микросервисной) архитектуры. Как пример решения проблемы предлагается использовать BDD. Указывается на необходимость четко определенных контрактов между сервисами, разделение поведения на consumer и producer. Кроме того, объясняется почему тесты должны быть независимы от реализации и почему проверка ошибок важна. Добавлю, что тестирование сервисной архитектуры сложная задача, которую до сих пор не понятно как решить. Симпатизирует мнение, что тестирование не является достаточным в сервисной архитектуре и разработчики должны вкладывать в ресурсы в инфраструктуру мониторинга и отката изменений.

—————————————

How to build an open source community
Статья 2008 года о создании комьюнити в опенсорс проектах. К сожалению опенсорс проекты часто спотыкаются о маркетинг и коммуникации, а также об отсутствие комьюнити вокруг продукта. В тексте рассматривается определение комьюнити, из каких частей  состоит. А так же, в конце много ссылок раскрывающих тему подробнее.

——— одной строкой ———

- Awesome список статей, сайтов и ресорсов связанных с ментальным здоровьем.. Хоть тема к программированию отношения не имеет, считаю, что важно оставить эту ссылку;
- Netflix использует dry библиотеки. Также в треде рассказывается, почему не прижился ханами;
- Главная новость недели - sorbet открыли для публичного использования. Я уже играю с ним в проектах, на следующем стреми планирую показать и рассказать об этой библиотеки;
источник
2019 June 28
2pegramming
Пятничное чтиво

На следующей неделе уезжаю в UK на приватное мероприятие посвященное будущему руби, поэтому стрима не будет. Вместо этого постараюсь сделать выжимку обсуждений и выложить тут. К тому же, чувствую, что стримы начинают изживать себя.

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

А пока можно посмотреть прошлые стримы. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Things I Learnt The Hard Way in 30 Years of Software Development
Мысли инженера, который провел в профессии 30 лет. Много мыслей до которых дошел сам, много базовых вещей. Зацепил пункт “A language is much more than a language”, потому это не только об языках, но и фреймворках, подходах и библиотеках. И я понял это на собственном опыте с ханами. А “git add -p” является фаворитом последние 3 года, хотя на первой работе пытались объяснить что только так качество коммитов увеличивается, а я не верил. Однозначный мастхев этого выпуска.

—————————————

On Ruby and type checkers
Sorbetting a gem, or the story of the first adoption
Discussion: Sorbet: A Type Checker for Ruby

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

—————————————

ARPANET, Part 2: The Packet – Creatures of Thought
Обожаю тексты рассказывающие историю IT. Сегодня в выпуске - история создания компьютерных сетей. В русском переводе так же можно найти ссылки на статьи об истории реле, транзисторов и полный текст истории интернета. 

——— одной строкой ———

- GitHub: Generate Sorbet RBIs from YARD documentation;
- http://amp.gs/OUEn: Generate beautiful README in 10 seconds;
источник
2pegramming
Твиттер как обычно не работает, вот рабочая ссылка:
https://twitter.com/anton_davydov/status/1142090131576414209
источник
2pegramming
> По вопросам как это сделать можно писать в личку.

Основная идея в том, что бы сделать в /rbi папке rbi файл со всеми аннотациями. Для этого можно руками все написать, а можно сгенерировать через srb init в любом рабочем проекте где есть эта библиотека. В sorbet/rbi/gems/gem_name.rbi будет лежать сгенерированный файл к библиотеке без аннотаций. Нужно будет его скопировать в бибилиотеку, добавить аннотаций

Использование srb tc в геме автоматически подтянет rbi файлы из /rbi/ директории и автоматически все провериться.
источник
2019 July 05
2pegramming
Пятничное чтиво

Эту неделю провел в  UK, где в офисе cookpad ruby core разработчики  научи контрибьютить в язык. Расскажу об этом и покажу с чего начать в будущих стримах.  А пока можно посмотреть прошлые стримы. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

The Sacred Art of Concurrent and Parallel Programming
На примере clojure рассказывается разница между конкурентным и параллельным программированием. Объясняются как работаю и зачем использовать блокировки. Объясняется как работают JVM Threads, Futures, Delays и Promises. В конце показывается как написать асинхронную очередь.

—————————————

Что такое DNS – Hexlet Guides
Подробный гайд от Hexlet о том, что такое DNC. Рассказывается история появления, причины и как DNC работает. Из интересного было почитать о рекурсии в DNC. Однозначный маст рид для тех, кто не знает что это такое

—————————————

Next steps toward Go 2
Go core команда рассказывает о процессе перехода на 2.0 версию языка. Главная проблема - сделать изменения затрагивающие изменения в самом языке так, что бы разработчики смогли их пережить. Понравилась обратная связь кор команды с комьюнити, чего не хватает в ruby. Будет интересно посмотреть, что из этого получиться.

Русский перевод

——— одной строкой ———

- Code review checklist;
- Слайды, рассказывающие почему SOLID ошибочен;
источник
2pegramming
pepegramming
Пятничное чтиво

Эту неделю провел в  UK, где в офисе cookpad ruby core разработчики  научи контрибьютить в язык. Расскажу об этом и покажу с чего начать в будущих стримах.  А пока можно посмотреть прошлые стримы. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

The Sacred Art of Concurrent and Parallel Programming
На примере clojure рассказывается разница между конкурентным и параллельным программированием. Объясняются как работаю и зачем использовать блокировки. Объясняется как работают JVM Threads, Futures, Delays и Promises. В конце показывается как написать асинхронную очередь.

—————————————

Что такое DNS – Hexlet Guides
Подробный гайд от Hexlet о том, что такое DNC. Рассказывается история появления, причины и как DNC работает. Из интересного было почитать о рекурсии в DNC. Однозначный маст рид для тех, кто не знает что это такое

—————————————

Next steps toward Go 2
Go core команда рассказывает о процессе перехода на 2.0 версию языка. Главная проблема - сделать изменения затрагивающие изменения в самом языке так, что бы разработчики смогли их пережить. Понравилась обратная связь кор команды с комьюнити, чего не хватает в ruby. Будет интересно посмотреть, что из этого получиться.

Русский перевод

——— одной строкой ———

- Code review checklist;
- Слайды, рассказывающие почему SOLID ошибочен;
DNS конечно же, тяжелый перелет дает о себе знать 🙁
источник
2019 July 12
2pegramming
Пятничное чтиво

Привет, на этой неделе оказался на питерском митапе, рассказал о DI и послушал как используют dry-system. Стримы еще в отпуске, вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Should We Create a Shared Service? A Decision-making Checklist
Если у возникла проблема выделения общего сервиса - чеклист из статьи может помочь ответить на вопрос, поможет или нет.  Так же, показываются два паттерна для shared service. Лично сталкивался с Deceptive Reuse Services, боль возникает, когда клиенты сначала хотят одно и то же, но потом потребности начинают различаться.

—————————————

When SQL Isn’t the Right Answer
Статья о  noSQL базы данных. От продажных статей отличается исторической справкой. Рекомендую прочитать виды data models для таких баз. Их четыре, но описание каждого даст понимание того, какие структуры данных можно хранить в noSQL. Статья может помочь подготовиться к некоторым главам Designing Data-Intensive Applications.

—————————————

Scalable architecture without magic
Подробная статья о том, как сделать scalable архитектуру. Рассматриваются SQL/noSQL базы данных. Как работать с несколькими серверами, кешем и данными. Так же описываются возможные ботлнеки, которые могут возникнуть во время проектирования. А так же, показываются схемы построения таких систем.

——— одной строкой ———

- YouTube: Being a Better Developer With EXPLAIN
- Introduce support for ActionView::Component · rails/rails · GitHub
источник
2019 July 19
2pegramming
Пятничное чтиво

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

Стримы еще в отпуске, вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Schema Evolution and Compatibility — Confluent Platform
Эволюция схемы данных проблема о которой начинают думать, когда сталкиваются в первый раз. Обычно возникает в сервисной архитектуре, но и в монолите тоже может возникнуть. Эта проблема касается как async (схема данных события) так и sync (http схема) коммуникаций. Confluent описали виды совместимости и порядок обновления клиентов, что полезно во время перехода на сервисную архитектуру. Так же, больше подробностей можно найти в Designing Data-Intensive Applications. Однозначный мастрид этой недели.

—————————————

Goodbye ActiveRecord!
Опыт компании Aircall, которая разделяет монолит на сервисы и в качестве работы с базой решила взять ROM. Описываются ограничения active record, что из себя представляет ROM и как изучить библиотеку. Статья - старт для тех, кто не знает зачем или с чего начать использование библиотеки. Так же, советую запись доклада Петра о 4 версии ROM (текущая версия - 5).

—————————————

Autocompletion with deep learning
Еще один автокомплит для редакторов, на этот раз с deep learning. Поддерживаются популярные языки (включая руби). Для работы автокомплита ребята обучили модель на 2 миллионах файлах из гитхаба. Также рассказывается об архитектуре приложения и возможности использования документации для предрешена. Я не фанат автокомплитов, хватает автокомплита  строки из буфера или слова из буфера в виме. Но после статьи уже хочу поиграть с этой штукой, надеюсь биндинги к виму будут.

——— одной строкой ———

- Объяснение мема об 10x инженере
- Как правильно приглашать на встречи
источник
2019 July 26
2pegramming
Пятничное чтиво

Эту неделю провел в обнимку с Kafka, поэтому ссылки будут тоже тематические. На стримах покажу на практике как все сегодняшние ссылки работают в руби и расскажу почему это круто. Так же,  открыт CFP на RubyRussia. Можно заполнить форму, а можно написать лично, попробую помочь с темами.

Стримы отпуске, темы пишутся. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Kafka in a Nutshell - Kevin Sookocheff
Thorough Introduction to Apache Kafka

Две статьи, описывающие базовые концепции кафки. Старт для тех, кто хочет разобраться как база работает. Если хотите быстро разобраться что такое кафка - забейте на zookeeper, streaming API. Прочитайте что такое producers, consumers, consumers group, а лучше поставьте кафку локально и напишите hello world продюсер и консьюмер (можно взять karafka). Для локальной работы Confluent Platform сделали docker-compose.yaml который ставит последнюю версию кафки и все необходимое . Так же стоит понять что такое message в контексте кафки и как partitions помогают паралелизовать консьюмеры. После этого уже можно смотреть на репликацию, зукипер и другие страшные вещи.

—————————————

Schema Management

В distributed systems много проблем. Первая проблема, которая появляется, когда сервисов становиться больше 2 - как гарантировать работу сервисов с одинаковыми данными. А так же, как обновлять схему запроса/ответа, чтобы не сломать систему. Такие проблемы относятся к эволюции данных и схемы данных и подробно описываются в Designing Data-Intensive Applications. Умные ребята подумали и сделали schema registry, которая позволяет хранить описание схем в отдельном топике кафке. Это означает, что каждая схема данных находиться в едином месте и каждый продюсер и консьюмер будет использовать одну и ту же схему данных. К сожалению, schema registry работает только с avro и за счет имутабельности сообщений кафки решает проблему совместимости схем о которой писал в прошлую пятницу.


—————————————

Stream-based Architecture
Build Services on a Backbone of Events

Важно понимать, что кафка является distributed streaming platform. Это значит, что привычные паттерны, которые используются в pub/sub не подходят. Поэтому стоит использовать другие подходы к построению архитектуры. В статьях выше описывается понятие Stream-based Architecture, в чем отличие такой архитектуры. Описывается процесс Event Driven Flow и затрагивается почему топики должны быть domain specific. Основные проблемы работы с кафкой - обучение инженеров и затраты на operations. Поэтому, если думаете, что кафка решит проблемы приложения - прочтите эти две статьи и попробуйте представить как может выглядеть data flow в приложении.

——— одной строкой ———

- HAProxy EBtree: Design for a Scheduler, and Use (Almost) Everywhere;
источник
2019 August 02
2pegramming
Пятничное чтиво

Стримы отпуске, темы пишутся. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Modelling Bounded Contexts with the Bounded Context Design Canvas: A Workshop Recipe

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

—————————————
Little thread about Lightning video adapters

Люблю “как это работает” статьи. Сегодня твиттер тред о том, как работает HDMI адаптер для айфона/айпада, осторожно Hardware Porn. Я купил этот адаптер год назад, так как айпад легче ноутбука и если есть возможность показать презентацию с айпада - стоит воспользоваться. Из треда выше увидеть как это выглядит и как работает.

Русский перевод

—————————————

Algebraic Effects for the Rest of Us

Благодаря Никите часто слышу фразу algebraic effects. Dan Abramov описывает что это, почему это должно волновать js разработчиков. Как это работает и что вообще с этим делать в контексте языка и реакта. Для рубистов делается dry-effects, доков нет, но куча примеров в PR-ах. Пока сложно разобраться с эффектами, поэтому буду ждать доклада от Никиты на RubyRussia.

——— одной строкой ———

- Book Review: Designing Data-Intensive Applications;
- Медленно, но верно готовлюсь к выступлению на RubyRussia
источник
2019 August 09
2pegramming
Пятничное чтиво

Pepegramming  третий год подряд (первый раз второй)  является информационным партнером конференции http://amp.gs/Slkg  (ex railsclub). Благодаря помощи питерскому сообществу в этом году два билета на розыгрыш. Форму сделаю в течении недели. А победителей узнаем на первом стреми этого сезона.

Стримы возвращаются с каникул! Первый стрим проведем 28 августа. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Chaos Engineering — Part 1
Chaos Engineering — Part 2

Chaos Engineering не дает покоя последние 1.5-2 года. Идея, заложенная в практике описывается одним предложением: представь, что может произойти при отказе части системы, безопасно сломай, запиши результаты и сделай систему лучше. В первой части статьи указывается что такое Chaos Engineering, как практика появилась и подробно расписываются концепции. Во второй части приводится пример того, как пользоваться этой практикой.

Русский перевод первой части

Кроме статьи, советую прочитать книгу, а так же посмотреть на awesome список.

—————————————

Thinking about the Go Proposal Process (Go Proposals, Part 1)
Go Proposal Process: Clarity & Transparency (Go Proposals, Part 2)

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

—————————————

Are you really ready for serverless?
О serverless говорят каждую неделю. Часто serverless преподносят как серебряную пулю и панацею от проблем. Последняя статья на сегодня - подводные камни, о которых принято умалчивать.  Статья основана на докладе AWS re:Invent 2016 и детально описывает проблемы, упомянутые в оригинальном докладе. “Functions are the unit of deployment and scaling” ударила в сердце. Если, после прочтения твиттера, задумывались о миграции на serverless - статья станет подспорьем подумать два раза перед миграцией.

——— одной строкой ———

- BlazingSQL, the GPU-accelerated SQL engine of the RAPIDS ecosystem, is now 100% open-source licensed under Apache 2.0!;
- Github: Документ с описанием Coupling Criteria. Мастхев для мигрирующих на сервисы;
- Практические задания для изучения Kafka и Kafka streams;
источник
2pegramming
Как считаете, нужен ли еще один чат, для обсуждения контента из этого канала?
Анонимный опрос
25%
да
58%
нет, чатов и так много
18%
нет, не хочу ничего обсуждать
Проголосовало: 306
источник
2019 August 16
2pegramming
к сожалению на этой неделе не справился и ссылок не будет. Приношу извинения.

В следующую пятницу все по расписанию
источник
2019 August 23
2pegramming
Пятничное чтиво

На прошлой неделе не смог сделать ссылки, исправляюсь. Стримы возвращаются с каникул! Первый стрим проведем 30 августа, это пятница. Вероятно, что стримы теперь будут выходить в пятницу или выходные. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

Розыгрыш билетов откладывается, так как жду программу со списком докладов. Как появится - сразу же начнем розыгрыш билетов.

—————————————

Monads as a Programming Pattern
Еще одна статья о монадах. На этот раз автор пытается представить монады в виде паттерна. Описывается работа Maybe/Nullable/Optional,  List/Collection, и Promise/Awaitable монад с примерами на популярных языках программирования. Дается точное определение, говориться о теории категорий и синтаксисе. А так же рассматривается await из js, python и c#. Читать пост определенно стоит ради понимания того, как на практике работают некоторые монады и чтения мыслей автора касаемо того, чем могут быть монады.

—————————————

Testing Microservices: Overview of 12 Useful Techniques

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

—————————————

From CRUD to CQRS. Part1. CQRS
Один из способов сложной композиции в сервисной архитектуре - использование read и write models. В таком подходе можно подготовить данные для чтения в подходящий формат и использовать подходящую базу данных (например эластик). CQRS является паттерном проектирования подобных моделей, а в статье на примерах показывается как реализовать паттерн. Если после статьи хочется больше узнать о CQRS - глава 7.2 из Microservices Patterns книги подробно рассказывает о том, как проектировать сервисы связанные read model.

——— одной строкой ———

- How old are dependencies in your (ruby) project? - DEV Community 👩‍💻👨‍💻
- Канал с идеями вокруг разных языков и экосистем. В списке языков: elixir, crystal и ruby
источник
2019 August 30
2pegramming
Пятничное чтиво

Начнем с грустных новостей. По техническим причинам стримы откладываются. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

В этом году Pepegramming разыгрывает два билета на rubyrussia конференцию! Условия как и в прошлом году:
- Заполняем форму;
- Рассказываем друзьям и коллегам о розыгрыше;
- 13 сентября разыгрываю 2 билета;

—————————————

Good Database Design Starts Here - Towards Data Science
Автор статьи объяснит что для него хороший дизайн базы данных. Так же, в статье описываются виды моделей, нормализация, стандарты именования, документация и тестирование. Если хотите узнать чуть больше о базах данных, но не знаете с чего начать - текст покажет на что можно посмотреть.

—————————————

Documenting Software Architecture
Работа архитектором подразумевает написание документации по проектам. Автор собрал популярные виды документации для проектов и описал каждый из них. Для себя открыл Class dependency diagram так как последнее время занимаюсь автогенерацией подобных диаграмм. Об этом подробнее расскажу на предстоящей rubyrussia. А статья однозначный мастрид, если хотите прокачать навык документирования систем, которые проектируете.

—————————————

RabbitMQ vs Kafka
Цикл из 6 статей которые пытаются описать в чем же разница между  kafka и MQ. В начале описывается, что из себя представляет RabbitMQ и Kafka, показываются плюсы и минусы. Далее автор описывает разницу между push и pull моделью для работы с событиями. А в следующих статьях описываются паттерны и топологии используемые в RabbitMQ и Kafka, а также fault tolerance высокая доступность с каждым из сервисов. Статья будет полезна тем, кто выбирает что использовать в системе или тем, кто думает, что kafka тот же MQ только популярнее.

——— одной строкой ———

- Пропозал на добавление simple immutable value object в кор руби;
источник
2pegramming
Спасибо @saintprug, у нас теперь 3 билета на розыгрыш!

Если хотите присоединиться к лучшему российскому комьюнити - прошу в чат
источник
2pegramming
И последнее на сегодня

В следующий четверг (5го числа), в москве, пройдет ruby митап. Сам на него придти не смогу так как буду в тайланде на конференции, но регистрация доступна по этой ссылке:

https://railsclub.timepad.ru/event/1050182/
источник