[
  {
    "num": 149,
    "datetime": "2021-12-16T19:00:00+02:00",
    "season": 2022,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/kEn9wA5wbHbW3a2m9"],
    "event": "https://www.eventbrite.com/e/devclubeu-149-tickets-224372392867",
    "speeches": [
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["jVx5eqS7bYQ"],
        "speakers": [
          {
            "names": {"*": "Ilya Karpovs", "ru": "Илья Карповс"},
            "titles": {"*": "Software Engineer @ Lokalise"},
            "url": "https://www.linkedin.com/in/ilya-karpov-riga",
            "image": "ikarpovs.jpg"
          }
        ],
        "titles": {"ru": "Edutainment и программирование"},
        "descr": {
          "ru": [
            "Какое-то время назад было сложно найти хорошие курсы программирования или материалы, чтобы дети могли изучить основы программирования самостоятельно. Времена изменились, и теперь существует множество интерактивных инструментов, игр и обучающих видео. Больше не нужно ждать первых курсов вуза, чтобы изучить основы. Илья расскажет о своём опыте обучения детей программированию на месте и удаленно, а также поделится ответами на главные вопросы по теме."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["2Uemr0dqHPo"],
        "speakers": [
          {
            "names": {"*": "Mihhail Dunajev", "ru": "Михаил Дунаев"},
            "url": "https://www.linkedin.com/in/mikhail-dunaev-ab6b6a68",
            "image": "mdunajev.jpg"
          }
        ],
        "titles": {"ru": "DeFi, NFT, CDBC, ERC20… Все блокчейн базворды 2021 в одной презентации"},
        "descr": {
          "ru": [
            "Новая волна популярности блокчейнов принесла с собой много новых технологий и терминов.  Из доклада простыми словами вы узнаете о отличиях алгоритма Proof-of-Work от Proof-of-Stake, что такое Умный Контракт, как создать свои токены и как стать экспертом в крипто индустрии за 20 минут."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["DBkLFL4E5YA"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"ru": "Селениду 10 лет"},
        "descr": {
          "ru": [
            "Недавно библиотеке Selenide исполнилось 10 лет. Это сейчас она популярна и используется банками, платёжными провайдерами и другими компаниями во всём мире, а когда-то всё начиналось с крошечного проекта на гитхабе и доклада в девклубе. Посмотрим, как мы шли к успеху, как со временем менялся API и что будет дальше."
          ]
        }
      }
    ]
  },
  {
    "num": 148,
    "datetime": "2021-10-28T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["astalnuhhin"]},
    "photo": ["https://photos.app.goo.gl/5oorCsgL83g2SJZDA"],
    "event": "https://www.eventbrite.com/e/devclubeu-148-tickets-195924374077",
    "speeches": [
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["f0g7xYIu4F4"],
        "speakers": [
          {
            "names": {"*": "Pavel Gerasimov", "ru": "Павел Герасимов"},
            "url": "https://www.linkedin.com/in/gerasimovpk",
            "titles": {"ru": "Инженерный менеджер @ Wrike"},
            "image": "pgerasimov.jpeg"
          }
        ],
        "titles": {"ru": "“Сделайте это быстрее!” Как улучшить производительность одной из самых сложных вьюх в продукте."},
        "descr": {
          "ru": [
            "Иногда (ну, всегда) продукты развиваются, сталкиваются с новыми требованиями, и ваши легаси вьюшки, разработанные в старые добрые времена, начинают работать не так хорошо, как ожидают клиенты. Для решения этой проблемы у вас есть два пути - переписать все с нуля (что обычно приводит в ярость стейкхолдеров) или попытаться улучшить существующую кодовую базу, чтобы она соответствовала новым требованиям.",
            "Мы расскажем, как мы начали страдать от проблем с производительностью в Wrike Workload - одной из самых тяжелых и сложных вьюх в нашем продукте, как мы улучшили общую производительность за несколько месяцев, и какие инструменты и технологии мы использовали для этого.",
            "О докладчике: \"Инженерный менеджер нескольких межфункциональных команд в Wrike. Бывший CEO и соучредитель Le Talo Robotics - стартапа, где наш автономный самозаряжающийся дрон, находящийся в Москве, управлялся из Китая.\""
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["ELIaPCAbUig"],
        "speakers": [
          {
            "names": {"*": "Aleksei Sharov", "ru": "Алексей Шаров"},
            "titles": {"ru": "Фронтенд-техлид @ Wrike"},
            "image": "asharov.jpg"
          }
        ],
        "titles": {"ru": "Нейросети для чайников, теория и практика"},
        "descr": {
          "ru": [
            "В этом докладе мы поговорим про то, что из себя представляют простейшие нейронные сети, как они работают и обучаются, а в конце - покажем пару работающих примеров.",
            "О докладчике: \"Фронтенд-техлид юнита Wrike for IT в компании Wrike. Работал в компаниях Borland и Dell, делаю фронт уже 15 лет - от Ruby on Rails и MVC.NET до Angular и React. Люблю Dart и Flutter, в свободное время... программирую. 🙂\""
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["R1vpVmpUlH0"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Kot", "ru": "Евгений Кот"},
            "titles": {"ru": "Директор по развитию @ Wrike"},
            "image": "jkot.jpg"
          }
        ],
        "titles": {"ru": "Камо грядеши, фронтенд?"},
        "descr": {
          "ru": [
            "Сейчас нет отрасли более стремительно развивающейся, чем фронтенд. Можно поспорить, но сколько ещё экосистем вы знаете, где фреймворки возникают с такой скоростью? Веб стандарты внедряются и тут же устаревают. Самый главный вопрос: куда мы идём, и к чему придём? Вопрос не праздный: как не остаться не у дел в этом бурлящем потоке и схватить только самое важное, то, что будет трендом в 2022 году.",
            "О докладчике: \"Фронтенд-разработчик в течение многих лет, спикер. Соорганизатор конференции HolyJS. Dart/Flutter/Web GDE. Директор по развитию @ Wrike. Евгений прошел долгий путь от C++ и низкоуровневого программирования до пользовательских интерфейсов и \"браузерных штучек\". В конце концов, что, если не Web, лучше всего отражает внутреннюю суть мироздания?\""
          ]
        }
      }
    ]
  },
  {
    "num": 147,
    "datetime": "2021-09-30T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/4M1zzU2rE7U7vLTBA"],
    "event": "https://www.eventbrite.com/e/devclubeu-147-tickets-180343772077",
    "speeches": [
      {
        "org": {"cam": ["eweber"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["wgRJnRUjUVg"],
        "speakers": [
          {
            "names": {"*": "Ilja Zverev", "ru": "Илья Зверев"},
            "url": "http://ilya.zverev.info/",
            "titles": {"ru": "Эксперт по открытой картографии"},
            "image": "izverev.jpg"
          }
        ],
        "titles": {"ru": "Как любовь к автобусам заставила выучить Flutter"},
        "descr": {
          "ru": [
            "Я люблю карты и общественный транспорт. В Таллинне он бесплатный, поэтому я езжу много и всюду. Увы, планирование маршрутов с телефона оставляет желать лучшего: сайты медленные, а приложения перегруженные.",
            "Однажды меня эта ситуация достала, и я потратил месяц на изучение Flutter и написание своего приложения. Эта история — про открытые данные, пользовательские интерфейсы и первые шаги в мобильной разработке."
          ]
        },
        "top": {"season": 2021, "place": 5}
      },
      {
        "org": {"cam": ["eweber"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["ipXrXljgSFU"],
        "speakers": [
          {
            "names": {"*": "Misha Beshkin", "ru": "Миша Бешкин"},
            "url": "https://ee.linkedin.com/in/mihailsb",
            "image": "mbeskin.jpg"
          }
        ],
        "titles": {"ru": "PHP уже не тот и Laravel пророк его"},
        "descr": {
          "ru": [
            "Три года назад я искал работу, и мне предложили поработать в знакомой для меня комбинации PHP+CSS+jQuery на одном легаси проекте. Согласился я, потому что хотел потратить некоторое время на освоение новых технологий и подучить теоретическую часть.",
            "Особых иллюзий по поводу технологии не питал, потому что считал что PHP умер, и его не стоит воскрешать. Мне повезло оказаться в одной команде с адептами фреймворка Laravel - вот так и втянулся.",
            "Немного расскажу о том, почему финтек стартапы нередко выбирают стэк PHP/Laravel+Vue.js, чем интересен современный PHP и как тестировать в Laravel."
          ]
        }
      },
      {
        "org": {"cam": ["eweber"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["N0tlJFn2WW8"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko_2020.jpg"
          }
        ],
        "titles": {"ru": "Программирование - откуда и куда мы идем?"},
        "descr": {
          "ru": [
            "Мы изучим, как эволюционировали науки, которые привели нас к построению первых вычислительных машин и чем все это в итоге обернулось. Рассмотрим, какие вставали вызовы, повлиявшие на развитие языков программирования. Пофилософствуем, тем ли путем мы пошли, и помечтаем на тему, что нас ждет в будущем и что нам с этим делать."
          ]
        }
      }
    ]
  },
  {
    "num": 146,
    "datetime": "2021-08-26T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["astalnuhhin"]},
    "photo": ["https://photos.app.goo.gl/zopLar8Na98TrCPd9"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["2nLGTDl8dpM"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"ru": "Про яхты"},
        "presentations": ["20210826_akeks_sailing.pdf"],
        "descr": {
          "ru": [
            "Офтопик от Антона о его опыте хождения на яхте по морям."
           ]
        },
        "top": {"season": 2021, "place": 5}
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["6MUWa3K0_6Q"],
        "speakers": [
          {
            "names": {"*": "Artjom Vassiljev", "ru": "Артём Васильев"},
            "titles": {"*": "Co-founder @ getshipit.com"},
            "url": "https://linkedin.com/in/tjomk",
            "image": "avassiljev.jpg"
          }
        ],
        "titles": {"ru": "Elm, или как писать frontend код без единой runtime exception"},
        "presentations": ["20210826_avasiljev_elm.pdf"],
        "descr": {
          "ru": [
            "История о том, как я открыл для себя функциональное программирование и познакомился с Elm, в чём он лучше других языков, что (не) так с сообществом разработки этого языка, и почему в итоге я не стал использовать его в своих проектах."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["Nu01peDzntg"],
        "speakers": [
          {
            "names": {"*": "Ivan Ponomarjov", "ru": "Иван Пономарёв"},
            "titles": {"*": "Техлид @ КУРС / Преподаватель @ МФТИ"},
            "url": "https://inponomarev.ru",
            "image": "iponomarjov.jpg"
          }
        ],
        "titles": {"ru": "LJV: Чему нас может научить визуализация структур данных в Java"},
        "descr": {
          "ru": [
            "LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. С помощью рефлексии он позволяет визуализировать внутреннее устройство структур данных.",
            "Мы запустим LJV на разных структурах (от String до ConcurrentHashMap и ConcurrentSkipListMap) в разных версиях Java и посмотрим, что там внутри, как оно менялось от версии к версии, и как это всё работает."
          ]
        },
        "top": {"season": 2021, "place": 2}
      }
    ]
  },
  {
    "num": 145,
    "datetime": "2021-07-29T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/nerKnaSQBGsdNTGQ7"],
    "event": "https://www.eventbrite.com/e/devclubeu-145-tickets-164470933991",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["ch5sxsQJzW4"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"ru": "Koncerns: Почему я не тороплюсь на Котлин"},
        "descr": {
          "ru": []
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["ISR6dawacHE"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"ru": "Почему Котлину не нужно много фреймворков"},
        "presentations": ["20210729_akeks_kotlin.pdf"],
        "descr": {
          "ru": [
            "Kotlin - прекрасная замена Java. При програмиировании на Java люди склонны использовать множество дополнительных фреймворков/библиотек/утилит. Напротив, Kotlin предоставляет очень простую стандартную библиотеку и языковые функции, которые делают большинство популярных зависимостей ненужными или устаревшими.",
            "В течение последних двух лет я исследовал возможности использования очень небольшого количества зависимостей в реальных производственных проектах с простым доступом к базе данных, dependency injection и прочим необходимым функционалом.",
            "Во время выступления я собираюсь объяснить код моего последнего шаблона серверного приложения, основанного на Jooby и корутинах, и объяснить, как различные языковые функции Kotlin помогают резко сократить объём кода."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["vEReGpAeA60"],
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "titles": {"*": "Developer Advocate @ JetBrains"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          }
        ],
        "titles": {"ru": "Kotlin и зоопарк платформ"},
        "descr": {
          "ru": [
            "Что такое \"мультиплатформа\" в Kotlin и для чего оно надо."
           ]
        }
      }
    ]
  },
  {
    "num": 144,
    "datetime": "2021-06-17T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["astalnuhhin"]},
    "photo": ["https://photos.app.goo.gl/qG5TZjGUd5qFD2pt9"],
    "event": "https://www.eventbrite.com/e/devclubeu-144-tickets-158918662999",
    "speeches": [
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["асинхронность", "javascript", "js", "async", "await", "promise", "callback"],
        "youtube": ["tRnia7I1uA4"],
        "speakers": [
          {
            "names": {"*": "Eugene Mirotin", "ru": "Евгений Миротин"},
            "titles": {"*": "Software Engineer @ Play North OÜ"},
            "url": "https://www.linkedin.com/in/guard",
            "image": "emirotin.jpeg"
          }
        ],
        "titles": {"ru": "Как работать с асинхронностью в JS, сохранять рассудок и влиять на людей"},
        "descr": {
          "ru": [
            "Почему асинхронность — неизбежное зло, что с ним делать и каких ошибок стоит избегать. Рассмотрим темы: откуда берётся асинхронность и почему она так важна в JS; callbacks — единственный способ организации асинхронности; promises — как они устроены и почему полезны; ключевые слова async/await; типичные ошибки при работе с промисами."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["рынок труда", "эстония", "работа в эстонии", "рекрутер"],
        "youtube": ["SjGTTp2a4Sc"],
        "speakers": [
          {
            "names": {"*": "Julia Jolkin", "ru": "Юлия Ёлкин"},
            "titles": {"*": "Fullstack IT Recruiter @ IT Talent"},
            "url": "https://www.linkedin.com/in/juliajolkin",
            "image": "jjolkin_2021.png"
          }
        ],
        "titles": {"ru": "«Ретроградный Меркурий» эстонского рынка IT труда. Чему нас научил карантинный год?"},
        "presentations": ["20210617_jjolkin_retro-mercury.pdf"],
        "descr": {
          "ru": [
            "Последний год буквально заставил многих из нас поработать над ошибками. Перестроить, доработать, видоизменить, исправить свои ошибки в работе, в карьере, согласно новым требованиям времени. Давайте оглянемся назад, и обсудим, какие уроки мы из этого вынесли.",
            "За это время я проконсультировала большое количество потерявших работу специалистов IT, с интересом анализируя, кто просел в карьере, по какой причине, каким специалистам стоит переквалифицироваться, а также, что стоит изучать, чтобы не отстать от поезда.",
            "Удаленная работа и страхи вытащили на поверхность глубокие психологические проблемы, с которыми нам предстоит работать еще долго.",
            "Я подготовила для вас обзор ситуации на рынке IT вакансий: востребованность, тренды, зарплаты. Подскажу, что стоит изучать и как максимально быстро найти работу мечты. До встречи в DevClub!"
          ]
        },
        "top": {"season": 2021, "place": 5}
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["IeeS-AMyV8M"],
        "speakers": [
          {
            "names": {"*": "Kirill Linnik", "ru": "Кирилл Линник"},
            "url": "https://ee.linkedin.com/pub/kirill-linnik/50/a65/976",
            "image": "klinnik.jpg"
          }
        ],
        "titles": {"ru": "Машинное обучение в картинках"},
        "descr": {
          "ru": [
            "Новый доклад от создателя «GDPR и котики»! Машинное обучение и AI уже давно не hype, но многие разработчики до сих считают всё это магией и не знают, с чего начать. Поэтому кто же, если не ДевКлуб расскажет про это всё именно с точки зрения разработчика, а не младшего научного сотрудника? Да ещё и в картинках!"
           ]
        }
      }
    ]
  },
  {
    "num": 143,
    "datetime": "2021-05-27T19:00:00+03:00",
    "season": 2021,
    "place": {
      "name": "Põhja Öökull", "loc": "https://www.google.com/maps/@59.4455381,24.7192036,3a,37.3y,36.16h,87.97t/data=!3m7!1e1!3m5!1stKF8tAi0sdqNhMey-Yv6-g!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DtKF8tAi0sdqNhMey-Yv6-g%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D328.5263%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656",
      "addr": "Kopli 70a, 10411 Tallinn", "url": "https://www.facebook.com/P%C3%B5hja-%C3%96%C3%B6kull-109799177453157"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/f5GqrLAKDXDhVckG7"],
    "event": "https://www.eventbrite.com/e/devclubeu-143-tickets-156487746061",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["vybY32xaYWs"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"*": "New age in web development: Svelte & Snowpack"},
        "descr": {
          "ru": [
            "Несколько лет назад web разработка освоила компиляторы и бандлеры и стала реактивной. Но в наше время браузеры развиваются быстро и можно пересмотреть инструментарий, чтобы привести его ближе к тому, как устроен сам веб и сделать разработку проще и продуктивнее."
          ]
        },
        "top": {"season": 2021, "place": 3}
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["wtf", "commit"],
        "youtube": ["uBhpBOX8VYg"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"ru": "WTF commit messages"},
        "descr": {
          "ru": [
            "Как правильно писать commit message, почему это важно и что бывает, если писать их спустя рукава."
          ]
        },
        "top": {"season": 2021, "place": 1}
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["h8o0J449spA"],
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "titles": {"*": "Developer Advocate @ JetBrains"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          }
        ],
        "titles": {"ru": "Всякое про Kotlin"},
        "descr": {
          "ru": [
            "Поболтаем про язык программирования Kotlin. Как выглядит идиоматичный код, мои любимые возможности синтаксиса и стандартной библиотеки, а также какие новые фишечки были добавлены в 1.5."
          ]
        }
      }
    ]
  },
  {
    "num": 142,
    "datetime": "2020-10-28T19:00:00+02:00",
    "season": 2020,
    "place": {
      "name": "Hotel L'Embitu 4 Superior", "loc": "https://g.page/hotellembitutallinn",
      "addr": "Lembitu 12, 10114 Tallinn", "url": "https://lembituhotel.ee"
    },
    "org": {"mod": ["asviridenko"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/vNuj4iSx2kXZKwSEA"],
    "event": "https://www.eventbrite.com/e/devclubeu-142-tickets-126404582509",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["k3izUh2KHe8"],
        "speakers": [
          {
            "names": {"*": "Stanislav Katkov", "ru": "Станислав Катков"},
            "titles": {"*": "Ronin Coder & Aspiring Internet Entrepreneur"},
            "url": "https://www.facebook.com/5katkov",
            "image": "skatkov.jpg"
          }
        ],
        "titles": {"*": "Bootstrapping side-projects"},
        "descr": {
          "ru": [
            "Почему каждый IT'шник должен иметь сайд проект и как над ним работать, чтобы не было обидно за потраченые годы. Буду делиться опытом с личных баталий."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["3a5VMSmtVg4"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"ru": "Введение в Функциональное Программирование для фронтэндеров. Часть 3"},
        "descr": {
          "ru": [
            "Мы уже познакомились с базовыми принципами FP, разобрались с композицией и рассмотрели распространенные функциональные абстракции. Закончили тем, что начали изучать \"Теорию Категорий\".",
            "Далее разберём Higher Kinded Types (упоминались в конце прошлого выступления) и попробуем понять значение фразы: \"Монада - это моноид в категории эндофункторов\".",
            "Интересно будет не только фронтендерам: синтаксис примеров на TypeScript достаточно прост для понимания.",
            "Обязательно ознакомьтесь с первыми двумя частями: https://www.youtube.com/watch?v=EaXoQlLsl4c (1), https://www.youtube.com/watch?v=fd1H7L1DIpI (2)."
           ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["yBUvFJpKvsU"],
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "titles": {"*": "Developer Advocate @ JetBrains"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          },
          {
            "names": {"*": "Aleksandr Tavgen", "ru": "Александр Тавген"},
            "titles": {"*": "Software Architect with Data Science and Financial Background"},
            "url": "https://www.linkedin.com/in/aleksandr-tavgen-24431815b",
            "image": "atavgen.jpg"
          }
        ],
        "titles": {"ru": "Экспресс Интервью"},
        "descr": {
          "ru": [
            "Антон Архипов подготовит вопросы на 3 большие темы. На каждый вопрос по 5-7 минут.",
            "Последние 10-15 минут посвятим вопросам из опросника при регистрации."
          ]
        }
      }
    ]
  },
  {
    "num": 141,
    "datetime": "2020-09-29T19:00:00+03:00",
    "season": 2020,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["klinnik"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/JK6FPiLszBrsZbip6"],
    "event": "https://www.eventbrite.com/e/devclubeu-141-tickets-121265752129",
    "speeches": [
      {
        "org": {"cam": ["jtimosin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["0R-EHzLuPCQ"],
        "speakers": [
          {
            "names": {"*": "Aleksei Bljahhin", "ru": "Алексей Бляхин"},
            "titles": {"*": "Head of Open Banking / PSD2 @ IceFire"},
            "url": "https://www.linkedin.com/in/aleksei-bljahhin-a426889",
            "image": "abljahhin.jpg"
          }
        ],
        "titles": {"ru": "HOIA - что это, и как это работает"},
        "descr": {
          "ru": [
            "В связи с ситуацией в мире и непосредственно в Эстонии команда разработчиков создала приложение HOIA (https://hoia.me/ru). Через это мобильное приложение вы сможете быстро узнать о возможных близких контактах с больным COVID-19, что позволит вам предпринять шаги для защиты своего здоровья и здоровья других. На встречу придёт главный разработчик этого приложения, с которым мы можем обсудить наиболее интересные моменты."
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["a6mjxnmODn8"],
        "speakers": [
          {
            "names": {"*": "Igor Bossenko", "ru": "Игорь Босенко"},
            "titles": {"*": "CEO & Solution Architect @ Kodality"},
            "url": "https://www.linkedin.com/in/igor-bossenko",
            "image": "ibossenko.jpg"
          }
        ],
        "titles": {"ru": "Не Джирой единой"},
        "descr": {
          "ru": [
            "Jira - неоспоримый лидер на рынке систем управления проектами и систем отслеживания ошибок. В докладе я расскажу, почему мы задумались о замене Джиры, о нашем процессе отбора и внедрения альтернативы. И, да, мы остались очень довольными. :)"
          ]
        },
        "top": {"season": 2021, "place": 5}
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["fd1H7L1DIpI"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"*": "Введение в Функциональное Программирование для фронтэндеров. Часть 2"},
        "descr": {
          "ru": [
            "В первой части мы познакомились с базовыми принципами FP: композиция, higher-order & first-class functions, чистые функции, карирование функций и полиморфные функции.",
            "На этот раз мы познакомимся с наиболее популярными полиморфными типами, комбинаторами и начнем знакомиться с “Теорией Категорий” и узнаем как она нам помогает упрощать ежедневные задачи.",
            "Интересно будет не только фронтендерам, т.к. синтаксис примеров на TypeScript достаточно прост для понимания даже для тех, кто его не знает."
          ]
        }
      }
    ]
  },
  {
    "num": 140,
    "datetime": "2020-08-31T19:00:00+03:00",
    "season": 2020,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["jtimosin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/LsHBti7T5rqMHoSn8"],
    "event": "https://www.eventbrite.com/e/devclubeu-140-tickets-117958494031",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["tests", "experience"],
        "youtube": ["SSglWLW40Ac"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"ru": "Flaky tests: Метод"},
        "descr": {
          "ru": [
            "Продолжение саги про моргающие тесты. На сей раз будет меньше видосиков и больше логики: в каком порядке вещи должны случаться и что бывает, когда порядок нарушается. На десерт расскажу про общий метод решения флейки тестов."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["EaXoQlLsl4c"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"*": "Введение в Функциональное Программирование для фронтэндеров. Часть 1"},
        "descr": {
          "ru": [
            "Не секрет, что функциональное программирование (FP) уже давно снова набирает обороты на бэкенде, чему способствуют развитие таких языков, как Scala и Kotlin, но почему-то в мире WEB-фреймворков эту тему стараются избегать, и зря! Я покажу основные принципы FP в сравнении с императивным стилем и покажу, что область применения этой парадигмы бесконечно большая и несёт в себе только Функциональное Добро, которое подчиняется в первую очередь математическим законам, многие из которых вы уже знаете, но просто, возможно, не в курсе.",
            "Доклад будет интересен всем разработчикам (не только фронтендерам), так как, в основном, будут описываться принципы, которые не зависят от языка. Примеры на TypeScript достаточно просты, чтобы можно было их понять без знания синтаксиса."
          ]
        }
      }
    ]
  },
  {
    "num": 139,
    "datetime": "2020-07-30T19:00:00+03:00",
    "season": 2020,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/Lqxjeau7VTiz6gmL7"],
    "event": "https://www.eventbrite.com/e/devclubeu-139-tickets-114822230382",
    "speeches": [
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["zChp-ba4N0Q"],
        "speakers": [
          {
            "names": {"*": "Konstantin Klugman", "ru": "Константин Клугман"},
            "titles": {"*": "Product Manager @ MRPeasy.com"},
            "url": "https://www.linkedin.com/in/klugman",
            "image": "kklugman.jpg"
          }
        ],
        "titles": {"*": "От 0 до 1M ARR без инвестиций за 5 лет"},
        "descr": {
          "ru": [
            "План выступления: 1. От идеи до фирмы; 2. Организационные и технические методы и решения; 3. Как ИТ фирма может работать без отдела продаж; 4. Ответы на вопросы."
          ]
        }
      },
      {
        "org": {"cam": ["jgoloborodko"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["4bChVlkHosM"],
        "speakers": [
          {
            "names": {"*": "Ilja Livenson", "ru": "Илья Ливенсон"},
            "titles": {"*": "Co-Founder & CEO @ OpenNode"},
            "url": "https://ee.linkedin.com/in/ilja-livenson-8015674",
            "image": "ilivenson.jpg"
          }
        ],
        "titles": {"ru": "Что нового с Гособлаком?"},
        "descr": {
          "ru": [
            "Илья расскажет, как продвигается проект Гособлако (riigipilv.ee), что получается, с чем есть проблемы. Ещё расскажет, какая польза от Гособлака людям, которые пишут софт для публичного сектора."
          ]
        }
      }
    ]
  },
  {
    "num": 138,
    "datetime": "2020-02-26T19:00:00+02:00",
    "season": 2020,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["asviridenko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/XsDr21e5PfYqRa1N8"],
    "event": "https://www.eventbrite.com/e/95790242193",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["1nRS6aLRhZs"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Software Craftsman @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"ru": "Что такое Работающий Продукт и как его делать"},
        "descr": {
          "ru": [
            "В начале был Agile-манифест, провозгласивший, что Работающий Продукт важнее Исчерпывающей Документации. Потом был Манифест Программистского Мастерства (Software Craftsmanship), добавляющий, что Работающий Продукт нужно также Искусно Мастерить. Но что это все значит?",
            "Мне кажется, что за 19 лет после публикации Agile-манифеста разработчики до сих пор недопонимают как сделать их продукты действительно работающими. У почти каждого проекта, с которым я сталкиваюсь, есть проблемы даже с элементарным запуском. Как я могу что-то улучшить в проекте, если он тупо не запускается?!",
            "Будут обсуждаться такие темы как удобство использования для разработчика, юнит-тестирование и популярные анти-паттерны, чтобы привлечь ваше внимание к тому как сделать ваши продукты элементарно работающими и действительно поддерживаемыми как вами, так и другими."
          ]
        },
        "top": {"season": 2021, "place": 4}
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["eweber"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["suumsPE5twA"],
        "speakers": [
          {
            "names": {"*": "Ervin Weber", "ru": "Эрвин Вебер"},
            "titles": {"*": "System Administrator @ Toggl"},
            "url": "https://ee.linkedin.com/in/webervin",
            "image": "eweber.jpg"
          }
        ],
        "titles": {"*": "Google SRE"},
        "descr": {
          "ru": [
            "Гугл замутил свое видение DevOps, с инженерами и практикой. Зачем были нужны SRE и CRE, и могут ли они понадобится лично тебе?"
          ]
        }
      }
    ]
  },
  {
    "num": 137,
    "datetime": "2020-01-29T19:00:00+02:00",
    "season": 2020,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["jgoloborodko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/7FDNYcWQVh2ptexU6"],
    "event": "https://www.eventbrite.com/e/devclubeu-137-registration-91024604041",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["J7pWxAwL1Lw"],
        "speakers": [
          {
            "names": {"*": "Aleksandra Madis", "ru": "Александра Мадис"},
            "titles": {"*": "Senior Software Engineer @ Microsoft"},
            "url": "https://www.linkedin.com/in/aleksandra-madis-93255820",
            "image": "amadis.jpg"
          }
        ],
        "titles": {"ru": "Хьюстон, у нас проблемы!"},
        "descr": {
          "ru": [
            "Рассказ о Grace Hopper Celebration of Women in Computing (GHC) – крупнейшей в мире конференции, объединяющей женщин, заинтересованных или работающих в сфере информационных технологий, а также центре NASA в Хьюстоне. На конференцию собирается более 20 000 женщин из IT области со всего мира. Что это за конференция, билеты на которую расходятся за считаные минуты? Что там происходило в 2018 году? О чём рассказывали? Также поговорим о VIP-туре (Level 9 Tour) по центру NASA."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["PLJygZnFxQA"],
        "speakers": [
          {
            "names": {"*": "", "ru": "Антон Бабенко"},
            "titles": {"*": "Terraform fanatic, CEO @ Betajob"},
            "url": "https://www.linkedin.com/in/antonbabenko",
            "image": "ababenko.jpg"
          }
        ],
        "titles": {"*": "Terraform & Terragrunt"},
        "descr": {
          "ru": [
            "Антон расскажет о Terraform 0.12 с разных точек зрения. Начиная с процесса обновления, компромиссов и хаков. Для чего Terraform? Почему вы должны быть в восторге от его использования? Некоторые мнения не будут похожи на ответы типичного сотрудника / консультанта, которые вы, возможно, слышали раньше. Он также опишет Terragrunt, покажет преимущества и недостатки использования его с реальным кодом реальных клиентов. Доклад будет довольно интерактивным с реальным кодом, так что не стесняйтесь задавать ваши проблемы и вопросы."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["4o9WWGpxIug"],
        "speakers": [
          {
            "names": {"*": "Sergei Chipiga", "ru": "Сергей Чипига"},
            "titles": {"*": "Software Engineer @ Pipedrive"},
            "url": "https://www.linkedin.com/in/sergei-chipiga-05b29661/",
            "image": "schipiga.jpg"
          }
        ],
        "titles": {"*": "Профилирование кода в Python"},
        "descr": {
          "ru": [
            "Когда разработчики начинают говорить о профилировании кода, в большинстве случаев это выглядит как нечто экстраординарное, требующее специальных навыков и глубокого знания языка программирования. Другими словами, правильное профилирование приложения похоже на джедайские навыки. Конечно, профилирование приложений требует опыта и времени на исследования, но в целом никакой магии в этом нет. На конкретном примере я хотел бы показать, как это происходит при профилировании продакшн-приложения.",
            "В мире Python существует несколько инструментов профилирования. Я буду использовать py-spy, потому что он может подключаться к рабочему процессу, имеет широкий список опций и может генерировать формат flame результатов. Сперва на простых примерах мы познакомимся с самим инструментом py-spy и flame форматом. А затем уже рассмотрим дамп с реального приложения под высокой нагрузкой, которое оказалось в зависшем состоянии, и увидим как интерпретировать результаты дампа, чтобы найти проблемные места в коде."
          ]
        }
      }
    ]
  },
  {
    "num": 136,
    "datetime": "2019-12-17T19:00:00+02:00",
    "season": 2020,
    "place": {
      "name": "Olümpia hotell", "loc": "https://goo.gl/maps/dW36V6WUFhnTdCw9A",
      "addr": "Liivalaia 33, 10118, Tallinn, Estonia", "url": "https://www.radissonblu.com/en/olumpiahotel-tallinn"
    },
    "org": {"mod": ["jgoloborodko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/1LbXDH3XD3VJ9iY69"],
    "event": "https://www.eventbrite.com/e/devclubeu-136-tickets-85939085117",
    "speeches": [
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["movie"],
        "youtube": ["3-I8JpQsAoE"],
        "speakers": [
          {
            "names": {"*": "Anton Stalnuhhin", "ru": "Антон Стальнухин"},
            "titles": {"*": "Программист, который иногда смотрит кино"},
            "url": "https://ee.linkedin.com/in/astalnuhhin",
            "image": "astalnuhhin_movies.jpg"
          }
        ],
        "titles": {"*": "Код в кино #2: Иногда они возвращаются"},
        "descr": {
          "ru": [
            "Продолжим изучать, как в мире кино показывают программистов, и, особенно, их код. Рассмотрим ещё пару десятков примеров. Тем, кто пропустил первую часть, повторный показ здесь: https://www.youtube.com/watch?v=kPC043A0Op0"
          ]
        },
        "top": {"season": 2021, "place": 5}
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["DataGrip", "JetBrains", "IDE", "sql"],
        "youtube": ["I4Ifpg5_CIs"],
        "speakers": [
          {
            "names": {"*": "Maxim Sobolewski", "ru": "Максим Соболевский"},
            "titles": {"*": "PMM @ JetBrains"},
            "url": "https://www.linkedin.com/in/moscas/",
            "image": "msobolewski.jpg"
          }
        ],
        "titles": {"*": "DataGrip — IDE для SQL от JetBrains"},
        "descr": {
          "ru": [
            "Пять лет назад в JetBrains решили, что те возможности, которые предоставляют IDE на платформе IntelliJ для работы с базами данных, могут быть интересны не только разработчикам на java или php, но и тем, для кого работа с данными — основная деятельность. Так появился DataGrip —  продукт для SQL-разработчиков, который может подключиться к любой (почти) СУБД и обладает всеми преимуществами платформы IntelliJ. Работа с базами поддерживается во всех платных IDE от JetBrains, поэтому доклад будем интересен многим, кто их использует.",
            "В докладе мы рассмотрим базовые примеры использования DataGrip, сделаем акцент на некоторых уникальных возможностях и покажем, как избежать рутины в работе с SQL."
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["offtopic", "standup"],
        "youtube": ["53k5UmFK55Y"],
        "speakers": [
          {
            "names": {"*": "Olga Linnik", "ru": "Ольга Линник"},
            "titles": {"*": "Комедичка из Таллинна"},
            "url": "https://www.facebook.com/linniklinnik",
            "image": "olinnik.jpg"
          }
        ],
        "titles": {"*": "Как девклуб сделал из меня комедичку"},
        "descr": {
          "ru": [
            "В прошлом году я выступила в девклубе, где рассказывала о своих знакомствах в тиндере, чем очень веселила публику. И мне так это понравилось, что я решила узнать, кого еще смогу рассмешить. А в процессе поиска понять, где проходит тонкая грань между комедичкой и клоунессой.",
            "(Доклад на 20 минут)"
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"]},
        "lang": "ru",
        "labels": ["JetBrains", "Space", "IDE"],
        "info": {
          "ru": "По просьбе докладчика видео не будет выложено в публичный доступ.",
          "en": "Video is not edited by speaker request",
          "et": "Video on kõneleja soovil kinni pandud."
        },
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "titles": {"*": "Developer Advocate @ JetBrains"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          }
        ],
        "titles": {"*": "JetBrains Space - ближе к звёздам!"},
        "descr": {
          "ru": [
            "Неожиданно для многих, 5 декабря JetBrains анонсировали новый продукт, Space. Space - это интегрированная среда для командной работы. Основная функциональность включает в себя хостинг Git-репозиториев, код-ревью, автоматизацию, репозитории пакетов, трекер задач. Но есть и много дополнительных возможностей которые делают работу в командах лучше. В этом докладе Антон сделает обзор того, что уже возможно в Space.",
            "(Доклад на 20 минут)"
          ]
        }
      }
    ]
  },
  {
    "num": 135,
    "datetime": "2019-11-28T19:00:00+02:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["jtimosin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/5oqgZuDgTEWVhtkz9"],
    "event": "https://www.eventbrite.com/e/devclubeu-135-tickets-83125579847",
    "speeches": [
      {
        "org": {"cam": ["jtimosin"], "edit": [""]},
        "lang": "ru",
        "labels": ["kotlin", "puzzlers"],
        "youtube": ["V1y0793T-70"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Software Craftsman @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"*": "Kotlin Puzzlers (2019)"},
        "descr": {
          "ru": [
            "Антон продолжит загадывать загадки в Kotlin. В прошлый раз прошло вот так: https://www.youtube.com/watch?v=IsjeD6PFzZw"
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": [""]},
        "lang": "ru",
        "labels": [],
        "youtube": ["sl3McgY_wEc"],
        "speakers": [
          {
            "names": {"*": "Tatjana Gordejeva", "ru": "Татьяна Гордеева"},
            "titles": {"*": "Юрист (стаж более 20 лет)"},
            "url": "https://www.facebook.com/tanya.hrc",
            "image": "tgordejeva.jpg"
          }
        ],
        "titles": {"*": "Трудовое право Эстонии: кто, что, где и как"},
        "descr": {
          "ru": [
            "Татьяна сделает общий обзор трудового права, расскажет об электронных ресурсах – тематических источниках информации, а также из чего должен состоять трудовой договор и его отличия от контракта. Уделит время понятиям о конфиденциальности, тайне и интеллектуальной собственности и другим актуальным вопросам."
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["L_H4wPD73I0"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"*": "Почему IT решения стоят так неприлично дорого?"},
        "descr": {
          "ru": [
            "Почему решения, которые состоят из виртуального материала, который ничего не стоит, в итоге оказывается дороже целого дворца, построенного из настоящих строй материалов. Евгений поделится наблюдениями о том, как все участники проекта негативно влияют на его сроки и стоимость. Так же обсудим рецепты, которые помогут снизить стоимость."
          ]
        },
        "top": {"season": 2019, "place": 1}
      }
    ]
  },
  {
    "num": 134,
    "datetime": "2019-10-24T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/BsaXg6fUuia6VK4RA"],
    "event": "https://www.eventbrite.com/e/devclubeu-134-tickets-77265995673",
    "speeches": [
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["management", "selfimprovement"],
        "youtube": ["SgE7DwR90Z4"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Software Craftsman @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"*": "The World needs Full-stack Craftsmen"},
        "descr": {
          "ru": [
            "Разработчики и ИТ-специалисты в целом, как правило, становятся узкоквалифицированными. В прошлом часто возникали конфликты между разработчиками БД, разработчиками приложений, тестировщиками. Сегодня разработчики продолжают делиться на фронтэнд / бэкэнд / Android / iOS / и ещё что угодно. А это приводит к раздутым командам, неэффективному взаимодействию, отсутствию ответственности каждого конкретного разработчика, низкому коэффициенту командного коллектива и неспособности раз и навсегда решить производственные проблемы. Термин «Full-Stack» часто применяется к разработчикам, отвечающим за все аспекты их работы, но практика XP / Craftsmanship идет дальше - мы также должны взять под контроль нашу коммуникацию, требования, операции, тестирование и всё остальное.",
            "Истинные мастера могут быть на порядок эффективнее, чем узкоквалифицированные разработчики. Они не только пишут код, но и решают проблемы. Конечно же, вы хотите быть одним из них!"
          ]
        },
        "presentations": ["20191024_akeks_craftsmen.pdf"],
        "top": {"season": 2019, "place": 2}
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["reactive", "source"],
        "youtube": ["csfWD4q9JLk"],
        "speakers": [
          {
            "names": {"*": "Sam Kruglov", "ru": "Сэм Круглов"},
            "titles": {"*": "Java Developer @ Monese"},
            "url": "https://www.linkedin.com/in/sam-kruglov/",
            "image": "skruglov.jpg"
          }
        ],
        "titles": {"*": "Reactive никуда не денется"},
        "descr": {
          "ru": [
            "Использовать реактивный подход - это ключ к пребыванию на достойном уровне среди современных стандартов. В начале, у нас есть обычный MVC сервис.",
            "Сначала, мы зададим определение современной системе и её основные проблемы. Затем, мы подправим наш сервис, чтобы решить эти проблемы. После всех изменений наш REST API продолжит функционировать как прежде, но при этом мы будем использовать Event Driven Architecture и получим множество преимуществ!"
          ]
        },
        "presentations": ["20191024_skruglov_reactive.pdf"]
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["management", "trade union"],
        "youtube": ["W_PhloSCLzQ"],
        "speakers": [
          {
            "names": {"ru": "Ивaн Beршинин"},
            "titles": {"*": "EMO врач @ Järvamaa Haigla"},
            "url": "https://www.linkedin.com/in/ivanvershinin",
            "image": "iversinin.jpg"
          }
        ],
        "titles": {"*": "Профсоюзы и IT"},
        "descr": {
          "ru": [
            "Инфотехнологии, программисты, профсоюзы… Казалось бы, это очень далёкие друг от друга вещи... Однако, это совершенно не так! Приходите, поговорим с вами о том, что представляют из себя профсоюзы; почему их нет в сфере инфотехнологий сейчас, и именно сейчас они очень нужны. Посмотрим, какие возможности для отстаивания своих интересов нам даёт законодательство, какие были прецеденты профсоюзной борьбы в Эстонии. А также обсудим вопрос, хотим ли мы создать свой IT профсоюз, и как это сделать."
          ]
        },
        "presentations": ["20191024_ivershinin_ittradeunion.odp"],
        "top": {"season": 2019, "place": 3}
      }
    ]
  },
  {
    "num": 133,
    "datetime": "2019-09-24T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["tgordejeva"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/vBZNLCNyZDgsH87q6"],
    "event": "https://www.eventbrite.com/e/devclubeu-133-tickets-73089762447",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["open source", "project", "marketing"],
        "youtube": ["zQAGh_o7Dqs"],
        "speakers": [
          {
            "names": {"*": "Sergei Jegorov", "ru": "Сергей Егоров"},
            "url": "https://ee.linkedin.com/in/bsideup/en",
            "image": "sjegorov.jpg"
          }
        ],
        "titles": {"*": "Как сделать OSS проект успешным... и даже не на JavaScript!"},
        "descr": {
          "ru": [
            "Допустим Вы хотите сделать ваш OSS проект успешным. Какой план? Просто закинуть его на GitHub? Добро пожаловать в клуб '10 звёзд 1 форк'! Чтобы сделать OSS проект успешным, над этим придётся работать 'full-time'. Наблюдать за его первыми шагами, гордиться даже маленьким успехам... По сути дела - почувствовать себя родителем.",
            "Но... Что ж такое 'успех' в данном вопросе? И как вести себя хорошо на пути к 'успеху'?",
            "В данном докладе я хотел бы поговорить про основы (а так же некоторые продвинутые техники) того, как управлять такими проектами, как помочь им расти и что ожидать *после* того как Вы выложили его на GitHub. Ведь в мире столько отличных проектов с огромным потенциалом которые так и не достучались до своей аудитории!"
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin", "astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["tests", "hating", "testng", "junit"],
        "youtube": ["U6z2dK7MwmI"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"*": "10 причин моей ненависти"},
        "descr": {
          "*": [
            "People often ask why I hate Page Objects, TestNG, ReportPortal, try/catch, loops, ifs, implicit waitings, explicit waitings, Dependency injection, Spring, etc. in tests. I will talk briefly - 5 minutes for every topic."
          ],
          "ru": [
            "Люди часто спрашивают, почему я ненавижу age Objects, TestNG, ReportPortal, try/catch, loops, ifs, implicit waitings, explicit waitings, Dependency injection, Spring и прочее в тестах. Коротенечко, по 5 минут на тему, поясню."
          ]
        },
        "presentations": ["20190924_asolntsev_hating.pdf"]
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["testing"],
        "youtube": ["q1iS9G9yJlQ"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Gritsevski", "ru": "Александр Грицевский"},
            "titles": {"*": "Lead Quality Manager @ Kuehne + Nagel"},
            "url": "https://www.linkedin.com/in/leadqualitymanager",
            "image": "agritsevski.jpg"
          }
        ],
        "titles": {"*": "Тестирование программного обеспечения сложнее, чем разработка."},
        "descr": {
          "ru": [
            "Изменение менталитита в отношении инженеров по обеспечению качества."
          ]
        },
        "presentations": ["20190924_agritsevski_qa.pdf"]
      }
    ]
  },
  {
    "num": 132,
    "datetime": "2019-08-22T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["jtimosin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/r2WyVnccLEYSR2Ap8"],
    "event": "https://www.eventbrite.com/e/devclubeu-132-tickets-69266896151",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["Qgqqs3BCTBg"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Korotkov", "ru": "Александр Коротков"},
            "titles": {"*": "Architect and full stack Ai engineer @ Omniva"},
            "url": "https://www.linkedin.com/in/krotix/",
            "image": "aleksandrkorotkov.jpg"
          }
        ],
        "titles": {"*": "Machine learning решение за 4 месяца"},
        "descr": {
          "ru": [
            "I would like to talk about my experience of developing full stack ML solution for OCR(Optical character recognition). This is a small presentation about the task, solution and result of project."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["xBU-YVbp89I"],
        "speakers": [
          {
            "names": {"*": "Oleg Dokuka", "ru": "Олег Докука"},
            "titles": {"*": "Software Engineer @ Netifi"},
            "url": "https://github.com/OlegDokuka",
            "image": "odokuka.jpg"
          }
        ],
        "titles": {"*": "Multiplayer Pac-Man with RSocket"},
        "descr": {
          "ru": [
            "One of the challenging aspects of building modern games is making it multiplayer. Can we use HTTP there? We can, but we will not get a real-time game. Can we use WebSockets / TCP? Of course, we can and we should! However, developing API on top of WebSocket is another challenge that no one wants to solve, but everyone does. Existing libraries do not give us a required variety of communication models. Today we will show you the way to tackle this - using RSocket. RSocket is an application protocol that makes developing any networked application as easy as pie. To prove that, we are going to build a multiplayer Pac-Man, and during the process compare different ways of making a multiplayer game."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["p6nXKii-GEo"],
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          }
        ],
        "titles": {"*": "Анализ и отладка приложений в IntelliJ IDEA"},
        "descr": {
          "ru": [
            "Выкачали исходники, открываем проект в IDE, и…. где? что? как это работает!? IDEA не только помогает писать код, но и помогает в этом коде разбираться. У нас в арсенале целый набор замечательных инструментов которые упрощают жизнь при работе с legacy-кодом.",
            "В данном докладе мы рассмотрим 3 основным темы:",
            "- Инспекции кода",
            "- Отладка приложений",
            "- Структурный поиск (и замена)"
          ]
        }
      }
    ]
  },
  {
    "num": 131,
    "datetime": "2019-07-25T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["asviridenko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/4Yp1yeKqCqQs9ZvX7"],
    "event": "https://www.eventbrite.com/e/devclub-131-tickets-65774640721",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["rYguZ_ejFko"],
        "speakers": [
          {
            "names": {"*": "Tatjana Gordejeva", "ru": "Татьяна Гордеева"},
            "titles": {"*": "Тренер-инструктор группового тренинга UYO"},
            "url": "https://www.facebook.com/tanya.hrc",
            "image": "tgordejeva.jpg"
          }
        ],
        "titles": {"*": "Как вести себя на первом свидании ITишнику"},
        "descr": {
          "ru": [
            "О первом свидании, и не только: любовь в схемах и таблицах.",
            "1. Deep learning самого себя. Мужчины и женщины в нашей жизни.",
            "2. Алгоритмы судьбы или «вечные грабли». Можно ли с этим что-то сделать?",
            "3. Ищем primary key в SQL наших отношений.",
            "4. Javascript или выбор языка общения в паре.",
            "5. Раскрываем секретную формулу pick-up’a."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["hegoyam3E7E"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Tavgen", "ru": "Александр Тавген"},
            "titles": {"*": "Software Architect with Data Science and Financial Background"},
            "url": "https://www.linkedin.com/in/aleksandr-tavgen-24431815b",
            "image": "atavgen.jpg"
          }
        ],
        "titles": {"*": "Observability - the good, the bad and the ugly"},
        "descr": {
          "ru": [
            "Расскажу про задачу создания мониторинга и observability для операционных команд без лишних False Positives и непонятных алертов. Проблемы, ловушки, анти-паттерны, и как это сделать правильно.",
            "Как справиться с зоопарком мониторинга. Спагеттификация дашбордов. Зачем Уберу 9 миллионов метрик, и почему это антипаттерн. Метрики как потоки данных. Анализ данных временных рядов. Новый язык Flux от InfluxDb и создание пайплайнов для метрик на Flux. «Прогулка пьяницы» по вашим метрикам, и зачем измерять случайность."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["r19d0mDMxYQ"],
        "speakers": [
          {
            "names": {"*": "Juri Timoshin", "ru": "Юрий Тимошин"},
            "titles": {"*": "Engineering Services and Operations @ Microsoft"},
            "url": "https://www.linkedin.com/in/juritimoshin",
            "image": "jtimosin_2018.jpg"
          }
        ],
        "titles": {"*": "Vim. Часть 3."},
        "descr": {
          "ru": [
            "Плагины, настройка под свои нужды. Vimrc: options, mappings, abbreviations."
          ]
        }
      }
    ]
  },
  {
    "num": 130,
    "datetime": "2019-06-27T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["agritsevski"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/n9hmjAJrguqDydJ87"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["7JldQl0qLZA"],
        "speakers": [
          {
            "names": {"*": "Viktor Kondin", "ru": "Виктор Кондин"},
            "titles": {"*": "QA Lead @ Genius Sports"},
            "url": "https://www.linkedin.com/in/viktor-kondin-5276ab68",
            "image": "vkondin.jpg"
          }
        ],
        "titles": {"*": "Introduction to Quality Assistance"},
        "descr": {
          "ru": [
            "На сегодняшний день качество выпускаемого на рынок ПО существенно снизилось. Любой внимательный пользователь может найти достаточно много ошибок, как серьёных так и не очень, в работе программ, выполняющих самые разные функции. Целью доклада не является установка или представление аудитории причин, влияющих на это, а предлагается ознакомиться с относительно новой методологией на рынке — Quality Assistance.",
            "Quality Assistance — новая методология, предложенния компанией Atlassian, направленная на интенсивное привлечение разработчиков к процессу тестирования, а также нахождение и УСТРАНЕНИЕ ошибок на ранних этапах разработки.",
            "Доклад будет состоять из нескольких логических частей: (1) Ознакомление аудитории с существующей методологий Quality Assurance, указав её минусы, историю и отсутствие права на существование в 21-ом веке :) (2) Ознакомление аудитории с Quality Assistance. Основные идеи и понятия. (3) Шаги по интеграции Quality Assistance “у Вас в фирме” (4) Процесс эволюции навыков тестирования команды, их измерение и как следствие изменение уже адоптированной методики Quality Assistance."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["8A5BqCY2cX8"],
        "speakers": [
          {
            "names": {"*": "Sergei Chipiga", "ru": "Сергей Чипига"},
            "titles": {"*": "Software Engineer @ Pipedrive"},
            "url": "https://www.linkedin.com/in/sergei-chipiga-05b29661/",
            "image": "schipiga.jpg"
          }
        ],
        "titles": {"*": "Machine Learning, Feature Store & ClickHouse"},
        "descr": {
          "ru": [
            "В этом докладе я бы хотел рассказать о своем опыте вхождения в Machine Learning. С какими необычностями и особенностями пришлось мне столкнуться. Значительная часть доклада будет посвящена одному из ключевых пунктов в построении Machine Learning - Feature Store. Также поделюсь мыслям о возможности использования колоночной базы данных ClickHouse в качестве хранилища для Feature Store. Наверное, довольно часто для этого в качестве стандарта де-факто можно встретить применение AWS-стэка, RedShift, Spark, Hadoop, но, тем не менее, присмотримся и к других решениям. ClickHouse (https://clickhouse.yandex) - это open-source разработка от компании Yandex, и, судя по активности в телеграм-чате и использованию другими компаниями, он набирает популярность, к чему и я приложу руку на devclub."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["4JJNccWtdNI"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"*": "Antistatic", "ru": "Антистатик"},
        "descr": {
          "ru": [
            "Чем плохи статические методы (кроме того, что \"это не ООП\")? Так ли уж полезен dependency injection? Есть ли жизнь без спринга?",
            "Эти вопросы давно вызывают много споров. Пуканы рвутся, но к единому мнение общество пока не пришло. Я расскажу, как менялось со временем моё понимание этих вещей и к чему я пришёл сейчас."
          ]
        }
      }
    ]
  },
  {
    "num": 129,
    "datetime": "2019-05-30T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Topia office", "loc": "https://goo.gl/maps/xRxZ8CFDwhY8mskc7",
      "addr": "Lõõtsa 12, 11415, Tallinn, Estonia", "url": "https://www.topia.com/contact-us"
    },
    "org": {"mod": ["jtimosin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/BeDYScCHDpNxT4ER8"],
    "event": "https://www.eventbrite.com/e/devclubeu-129-tickets-62354390661",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["reactive", "functional"],
        "youtube": ["D1TibtDjOJs"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Tavgen", "ru": "Александр Тавген"},
            "titles": {"*": "Software Architect with Data Science and Financial Background"},
            "url": "https://www.linkedin.com/in/aleksandr-tavgen-24431815b",
            "image": "atavgen.jpg"
          }
        ],
        "titles": {"*": "Reactive and functional approaches"},
        "descr": {
          "*": [
            "Сoncurrency and Parallelism. Context switch pain. Functional approach. Java Reactive Revolution. Blocking vs NonBlocking execution. Functional Architecture."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["postgresql", "db"],
        "youtube": ["-aNODNDSSTY"],
        "speakers": [
          {
            "names": {"*": "Igor Bossenko", "ru": "Игорь Босенко"},
            "titles": {"*": "Founder and CEO @ Kodality"},
            "url": "https://www.linkedin.com/in/igor-bossenko",
            "image": "ibossenko.jpg"
          }
        ],
        "titles": {"ru": "Пошкодим в PG"},
        "descr": {
          "ru": [
            "Докладчик поделится опытом развертывания PostgreSQL серверов с использованием докера, поделится тонкостями настойки сервера, расскажет о \"дырах\" by design, которые обязательно нужно закрывать, ну и попишем интересные SQL-ы."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["google cloud", "vpn"],
        "youtube": ["kq3wD3S1mpg"],
        "speakers": [
          {
            "names": {"*": "Ervin Weber", "ru": "Эрвин Вебер"},
            "titles": {"*": "System Administrator @ Toggl"},
            "url": "https://ee.linkedin.com/in/webervin",
            "image": "eweber.jpg"
          }
        ],
        "titles": {"ru": "BeyondCorp: Есть ли жизнь после VPN?"},
        "descr": {
          "ru": [
            "Коротко расскажу про то, как по мере роста проекта OpenVPN сервер стал необходимостью, и как по мере роста команды он же стал - проблемой. Зачем и откуда взялось BeyondCorp? Поделюсь личным опытом использования Identity Aware Proxy в связке с Access Context Manager и мыслями что делать с VPN в дальнейшем."
          ]
        }
      }
    ]
  },
  {
    "num": 128,
    "datetime": "2019-04-30T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["eweber"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/UEw4deaP8kez2ZmXA"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": ["kubernetes", "cluster"],
        "youtube": ["Mh2-9je_N1Q"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"*": "Rule your cluster with Kubernetes"},
        "descr": {
          "ru": [
            "Расскажу о своем опыте использования Kubernetes в продакшене: как развернуть кластер; деплоймент вашего приложения (попробуем мою заготовку); мониторинг кластера и приложения; как скалировать; интеграция с Хостинг провайдерами.",
            "Все это не так просто выудить из стандартной документации и об этом мало говорят на различных тренингах, по этому я решил поделиться своими наработками на эту тему. Очень часто возникает вопрос: «С чего начать?», постараюсь ответить на этот вопрос."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["azure", "active directory", "security"],
        "youtube": ["Qr-9Yqz9zlU"],
        "speakers": [
          {
            "names": {"*": "Mihhail Raer", "ru": "Михаил Раер"},
            "url": "https://www.facebook.com/mraer",
            "image": "mraer.jpg"
          }
        ],
        "titles": {"ru": "Azure Active Directory и используемые в ней токены"},
        "descr": {
          "ru": [
            "Мы поговорим о том, какие токены использует AAD, как стандартные (OAuth2 access tokens), так и специальные хитрые (PFT), которые используются для доступа в MSGraph. Так же затронем фичу Conditional Access в AAD."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["tests", "flaky"],
        "youtube": ["elQ2LGGU2bg"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"*": "Flaky tests (2)"},
        "descr": {
          "ru": [
            "Нестабильные (или flaky) тесты - головная боль автотестеров. Ещё вчера тест был зелёный, а сегодня он вдруг покраснел. Приходится их прокликивать руками или перезапускать. Всё это сильно замедляет процесс разработки и убивает эффект от автоматизации.",
            "Я покажу новые примеры flaky тестов из реальных проектов и новые методы их расследования. В этот раз будет больше визуальных эффектов и видосиков. Интересно будет всем.",
            "Доклад можно смотреть без первой части."
          ]
        },
        "top": {"season": 2019, "place": 4}
      }
    ]
  },
  {
    "num": 127,
    "datetime": "2019-03-26T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["tgordejeva"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/4LALnACQoz6RWmW26"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["postgresql", "db"],
        "youtube": ["wdbWn_2od8w"],
        "speakers": [
          {
            "names": {"*": "Aleksei Mihhailov", "ru": "Алексей Михайлов"},
            "url": "https://www.linkedin.com/in/alexei-mikhaylov-33b282a6",
            "image": "amihailov.jpg"
          }
        ],
        "titles": {"ru": "Темпоральные таблицы в PostgreSQL"},
        "descr": {
          "ru": [
            "Часто бывает необходимо иметь доступ к историческим данным в базах данных, когда требуется ответить на вопрос «Как выглядели мои данные 1-го февраля?». Темпоральные данные являются частью стандарта SQL 2011, но не все производители баз данных реализовали эту функциональность. PostgreSQL, самая популярная СУБД с открытым исходным кодом, до сих пор не поддерживает темпоральные данные, но это не значит, что такую функциональность нельзя реализовать самостоятельно.",
            "В этом докладе Алексей поделится опытом внедрения темпоральных таблиц в уже работающую базу данных на PostgreSQL с помощью неофициального расширения temporal_tables - где выиграли, где проиграли и какие проблемы возникли по ходу внедрения."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": [],
        "youtube": ["wCCR1Tkxc-s"],
        "speakers": [
          {
            "names": {"*": "Nikita Salnikov-Tarnovski", "ru": "Никита Сальников-Тарновский"},
            "url": "https://ee.linkedin.com/in/nikem",
            "image": "nsalnikov.jpg"
          }
        ],
        "titles": {"*": "Streaming architecture - beyond mere code"},
        "descr": {
          "ru": [
            "Очень многие учебные материалы по потоковой обработке данных концентрируются на примерах кода. Как конкретно использовать ту или иную библиотеку или фреймворк? Но работающее приложение - это не только код, но и такие вопросы как: откуда брать данные, куда их потом пихать, как долго хранить, как обновлять приложение и данные. Обо всем этом и о том, что еще нужно знать, чтобы успешно оперировать потоковое приложение в проде, мы и поговорим в рамках этой встречи. Доклад основан на опыте обработки миллиардов сообщений каждый месяц на протяжении нескольких лет."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["blockchain", "game"],
        "youtube": ["yYThXsYonTE"],
        "speakers": [
          {
            "names": {"*": "Sergei Labutin", "ru": "Сергей Лабутин"},
            "url": "https://www.facebook.com/labutin.sergei",
            "image": "slabutin.jpg"
          }
        ],
        "titles": {"ru": "Блокчейн и игры - на пороге новой индустрии"},
        "descr": {
          "ru": [
            "Состояние рынка игровой индустрии в целом и по сегментам. Вводная про блокчейн, сложное - простыми словами. Рассуждения, каким образом добавляется ценность и что это за ценности. Проблемы, которые возникают сейчас, на эпохе становления технологии. Как эти проблемы решают некоторые из Эстонских компаний."
          ]
        }
      }
    ]
  },
  {
    "num": 126,
    "datetime": "2019-02-28T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["agritsevski"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/jxbSRZXjs8UwXonu5"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["meeting", "equipment"],
        "youtube": ["ZJPFFjfZKDg"],
        "speakers": [
          {
            "names": {"*": "Aleksei Fjodorov", "ru": "Алексей Фёдоров"},
            "url": "https://vk.com/23derevo",
            "image": "afjodorov_2019.jpg"
          }
        ],
        "titles": {"ru": "Оборудование для конференций и митапов: видео, звук, свет, трансляция"},
        "descr": {
          "ru": [
            "В докладе Алексей расскажет как его организация эволюционировала в плане используемого оборудования и железячной экспертизы для конференций и митапов."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["feedback", "case study", "meeting"],
        "youtube": ["e7pBN15XmPk"],
        "speakers": [
          {
            "names": {"*": "Ruslan Ahmetzyanov", "ru": "Руслан Ахметзянов"},
            "url": "https://www.linkedin.com/in/руслан-ахметзянов-5b6046114",
            "image": "rahmetzjanov.jpg"
          }
        ],
        "titles": {"ru": "Имеющий уши да улучшит: работаем с фидбэком правильно"},
        "descr": {
          "ru": [
            "Какому фидбеку можно верить и как его добиться? Как отличить хороший фидбек от плохого, а нужный — от ненужного? Как обнаружить, что команда занимается совершенно неважными улучшениями? Как задавать вопросы так, чтобы вам отвечали правду? Что такое bias и почему о нем нельзя забывать никогда? Когда нужен ML в исследованиях?"
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["tests", "jupiter", "junit", "java"],
        "youtube": ["LuLBL-DHTAQ"],
        "speakers": [
          {
            "names": {"*": "Dmitri Tuchs", "ru": "Дмитрий Тучс"},
            "url": "https://www.linkedin.com/in/dtuchs",
            "image": "dtuchs_2019.jpg"
          }
        ],
        "titles": {"ru": "Jupiter - параллельная реальность"},
        "descr": {
          "ru": [
            "До недавнего времени разработчики JUnit придерживались подхода, что заниматься «параллельностью» выполнения тестов должен не сам фрэймворк, а surefire или gradle. Кроме того, часто можно было услышать мнение, что сама идея парализации выполнения тестов при помощи Java threads имеет гораздо больше недостатков, чем преимуществ, fork-и очень быстро упираются в ресурсы «железа». Начиная с версии 5.3 JUnit предоставляет заманчиво простой способ запускать тесты параллельно, осталось только выяснить, так ли страшны thread-ы в тестах? Выяснять будемна примере самых требовательных ко времени исполнения — UI-тестов (Java, Selenide, Maven)."
          ]
        }
      }
    ]
  },
  {
    "num": 125,
    "datetime": "2019-01-31T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["jtimosin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/gSY5vfwrj1CxVDR19"],
    "event": "https://www.eventbrite.com/e/devclubeu-125-registration-55368126557",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["casse study", "process", "lean"],
        "youtube": ["hatWHIg_U2Q"],
        "speakers": [
          {
            "names": {"*": "Roman Zahharov", "ru": "Роман Захаров"},
            "url": "https://www.facebook.com/roman.zahharov",
            "image": "rzahharov.jpg"
          }
        ],
        "titles": {"ru": "Плохой программист или плохой процесс?"},
        "descr": {
          "ru": [
            "Ищем виноватого – а там ли ищем? Ежедневно встречаю ситуации, где организация знает, что у всех проблем есть конкретные виноватые. Как правило, их находят не на этаже менеджмента, а пониже. Давайте вместе подумаем, как определить, что Иванушка-дурачок проиграл в битве с «человеческим фактором», и можно ли как-то определить, что проблема кроется где-то ещё?"
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["tests", "api"],
        "youtube": ["fmEFNFMSYP4"],
        "speakers": [
          {
            "names": {"*": "Dmitri Korobtsov", "ru": "Дмитрий Коробцов"},
            "url": "https://www.facebook.com/dkorobtsov",
            "image": "dkorobtsov.jpg"
          }
        ],
        "titles": {"ru": "Чем тестировать API? Ускоряем end-to-end тесты."},
        "descr": {
          "ru": [
            "Краткий обзор самых популярных на данный момент решений для тестирования API, а так же о том, что их них мы в итоге выбрали для тестирования Akana API management Platform, почему и как нам это помогло."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["jgoloborodko"]},
        "lang": "ru",
        "labels": ["java", "hating"],
        "youtube": ["4bhB8A9Ln7E"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"ru": "Что меня бесит в Java"},
        "descr": {
          "ru": [
            "сабж"
          ]
        }
      }
    ]
  },
  {
    "num": 124,
    "datetime": "2018-12-20T19:00:00+03:00",
    "season": 2019,
    "place": {
      "name": "Olümpia hotell", "loc": "https://goo.gl/maps/dW36V6WUFhnTdCw9A",
      "addr": "Liivalaia 33, 10118, Tallinn, Estonia", "url": "https://www.radissonblu.com/en/olumpiahotel-tallinn"
    },
    "org": {"mod": ["klinnik", "astalnuhhin"], "photo": ["gbeskin"]},
    "photo": ["https://photos.app.goo.gl/DAuBKhAJPFJirzDf7"],
    "event": "https://www.eventbrite.com/e/devclub-10-eu-tickets-53479326104",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["tests"],
        "youtube": ["TSPyp1zmLSo"],
        "speakers": [
          {
            "names": {"*": "Andrei Skomorohov", "ru": "Андрей Скоморохов"},
            "url": "https://www.linkedin.com/in/andrey-skomorokhov-a07094ab",
            "image": "askomorohov.jpg"
          }
        ],
        "titles": {"ru": "Как начать тестировать и не полысеть"},
        "descr": {
          "ru": [
            "Попробуем систематизировать основные приемы тестирования бэкенда и обсудим, чем тестирование отличается в разных языках."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["theatre", "interactive", "projects", "voting", "estonia"],
        "youtube": ["IYilFQN65-Y"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Tavgen", "ru": "Александр Тавген"},
            "titles": {"*": "Software Architect with Data Science and Financial Background"},
            "url": "https://www.linkedin.com/in/aleksandr-tavgen-24431815b",
            "image": "atavgen.jpg"
          }
        ],
        "titles": {"ru": "Как соединить Java, Js и графы с искусством, или история о том, как создавался интерактивный театр"},
        "descr": {
          "ru": [
            "Как создавался проект интерактивного театра к празднованию 100 летия Эстонской Республики. Или как драматургическую идею перенесли на Графы, Джаву и Спринг Бут, VueJS. И почему с VueJS были проблемы."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["tinder", "dating", "experience"],
        "youtube": ["NY9hvrU0F2U"],
        "speakers": [
          {
            "names": {"*": "Olga Linnik", "ru": "Ольга Линник"},
            "url": "https://www.facebook.com/linniklinnik",
            "image": "olinnik.jpg"
          }
        ],
        "titles": {"ru": "Как ветерана знакомств на тиндере забанили"},
        "descr": {
          "ru": [
            "Весь прошлый и немножко этот годы развлекала себя знакомствами в приложении тиндер, где собрала небольшую подборку типажей и историй. Немного посмеемся, немного пофилософствуем и узнаем, почему это всё равно привело к бану и жестокой реальности."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["biohacking", "gene", "experience"],
        "youtube": ["aVByzVR57yo"],
        "speakers": [
          {
            "names": {"*": "Alex Inside"},
            "url": "https://www.facebook.com/alex.inside",
            "image": "ainside.jpg"
          }
        ],
        "titles": {"ru": "Что за биохакинг?"},
        "descr": {
          "ru": [
            "Несколько слов о биохакинге для тех кто хочет быть здоровее, любит научный подход, а также базовые рекомендации для офисных работников."
          ]
        }
      }
    ]
  },
  {
    "num": 123,
    "datetime": "2018-11-28T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "The von Stackelberg Hotel Tallinn", "loc": "https://goo.gl/maps/bKgbrTmjPkP2",
      "addr": "Toompuiestee 23, Tallinn 10137", "url": "https://www.vonstackelberghotel.com"
    },
    "org": {"mod": ["jgoloborodko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/oySM72z3oU8M2osm7"],
    "event": "https://www.eventbrite.com/e/123-tickets-53005335385",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["elixir", "smart", "car", "smart car", "experience"],
        "youtube": ["UiP3ctCuS0U"],
        "speakers": [
          {
            "names": {"*": "Konstantin Zolotarjov", "ru": "Константин Золотарев"},
            "url": "https://www.linkedin.com/in/konstantin-zolotarev-36a8b545",
            "image": "kzolotarev.jpg"
          }
        ],
        "titles": {"*": "Making a smart car with Elixir"},
        "descr": {
          "ru": [
            "Что такое Can Bus? Как подключиться? Как работать? Какие проблемы могут возникнуть? Как не схлопотать подушкой безопасности по лицу? Почему именно Elixir? Чем он так хорошо подходит? Как эмулировать устройства? Как работать с несуществующими устройствами? Как всё это тестировать?"
          ]
        },
        "top": {"season": 2018, "place": 4}
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["rest api", "api", "graphql"],
        "youtube": ["_WJjbmWqa38"],
        "speakers": [
          {
            "names": {"*": "Ilya Nafigin", "ru": "Илья Нафигин"},
            "url": "https://www.facebook.com/ilja.nafigin",
            "image": "inafigin.jpg"
          }
        ],
        "titles": {"ru": "Гибкий API для вашего сервера"},
        "descr": {
          "ru": [
            "Сейчас REST считается стандартом при создании API. Настолько ли он гибок? В состоянии ли подстраиваться под часто меняющиеся требования со стороны мобильных приложений? Давайте рассмотрим альтернативную технологию GraphQL, ведь у нее есть большие шансы вскоре стань новым стандартом."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["bank", "projects"],
        "youtube": ["BB-HCwQZj8Y"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"ru": "Чем различаются интернет-банк физиков и юриков"},
        "descr": {
          "ru": [
            "Казалось бы, какая разница? Те же самые счета, платежи, обмен валюты. Ну что там может быть такого? А оказывается, там целая вселенная. Различается буквально всё, начиная от требований по производительности и заканчивая совершенно другой психологией пользователей."
          ]
        },
        "top": {"season": 2018, "place": 3}
      }
    ]
  },
  {
    "num": 122,
    "datetime": "2018-10-25T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["tgordejeva"], "photo": ["astalnuhhin", "klinnik"]},
    "photo": ["https://photos.app.goo.gl/bSjuKvPmo4xXgnmd8"],
    "event": "https://www.eventbrite.com/e/devclub-122-tickets-51582484600",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin", "agritsevski"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["jetbrains", "mps", "dsl"],
        "youtube": ["1BkElnlTBb4"],
        "speakers": [
          {
            "names": {"*": "Mihhail Barash", "ru": "Михаил Бараш"},
            "url": "https://twitter.com/mikhail_barash",
            "image": "mbarash.jpg"
          }
        ],
        "titles": {"ru": "Что такое JetBrains MPS: просто о сложном"},
        "descr": {
          "ru": [
            "JetBrains Meta Programming System MPS -- мощный продукт, который можно использовать в разработке DSL. Цель доклада объяснить, как смотреть на код «через призму MPS» и рассказать про проекционные редакторы, в которых исходный код может быть не только текстом, но и иметь табличное либо графическое представление. На встрече разработаем простой язык для описания GUI."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["game", "unity", "art"],
        "youtube": ["WAByqnLFv2M"],
        "speakers": [
          {
            "names": {"*": "Valeri Tverdohleb", "ru": "Валерий Твердохлеб"},
            "image": "vtverdohleb.jpg"
          }
        ],
        "titles": {"ru": "Technical кто?"},
        "descr": {
          "ru": [
            "Докладчик постарается ответить на неоднозначный и весьма непростой вопрос «Кто такой Technical Artist?» на примере игростроя в Gamesys. Соберем прототип и определим его необходимость."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["management", "experience", "case study"],
        "youtube": ["d0-8K7QSuv4"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"*": "Hell management"},
        "descr": {
          "ru": [
            "После провала проекта принято ругать криворуких программистов и прочих инженеров, которые плохо сделали свою работу. С другой стороны, статистика показывает, что крах проекта по техническим причинам - явление достаточно редкое. Рассмотрим как можно свести на нет все попытки инженеров выпустить хороший продукт при помощи «эффективного менеджмента»."
          ]
        },
        "top": {"season": 2018, "place": 5}
      }
    ]
  },
  {
    "num": 121,
    "datetime": "2018-09-27T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["agritsevski"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/19oJ77UhdVavpStY7"],
    "event": "https://www.eventbrite.com/e/devclub-121-tickets-50568466645",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["ai", "machine learning", "amazon alexa"],
        "youtube": ["R06QfCLrfXw"],
        "speakers": [
          {
            "names": {"*": "Sergei Tsimbalist", "ru": "Сергей Цимбалист"},
            "url": "https://www.linkedin.com/in/sergei-tsimbalist-248541155",
            "image": "stsimbalist.jpg"
          }
        ],
        "titles": {"ru": "Нейронные сети и человеческий язык"},
        "descr": {
          "ru": [
            "Каким образом Сири нас понимает? Можно ли научить компьютер писать стихи, как Пушкин? Как работает Google Translate? В этом докладе я расскажу про такую область Глубокого Обучения, как Рекуррентные нейронные сети и их применение в сфере обработки человеческого языка."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["python", "observability", "monitoring", "projects", "case study"],
        "youtube": ["mCqjcPGQgAs"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Tavgen", "ru": "Александр Тавген"},
            "url": "https://www.linkedin.com/in/aleksandr-tavgen-24431815b",
            "image": "atavgen.jpg"
          }
        ],
        "titles": {"*": "Building distributed application on Python. Love and hate."},
        "descr": {
          "ru": [
            "Основано на опыте построения системы мониторинга и потоковой обработки near real time на полном Питон стеке. Проблемы, боль и радости. Меньше Hello World больше то о чем не говорится явно."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["wtf", "connection", "connection pool", "hikaricp", "c3p0"],
        "youtube": ["xiBd5kTOoYo"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Software Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev_2018.jpg"
          }
        ],
        "titles": {"*": "WTF Connection pools"},
        "descr": {
          "ru": [
            "Как может сдохнуть приложение с малюсенькой нагрузкой? Почему оно подвисает, когда на сайте никого нет? Какого чёрта оно не работает, но в логах никаких ошибок? Да легко! Сегодня мы поговорим про Connections Pools. Проблемы есть во всех, и дефалтовая конфигурация оставляет желать лучшего."
          ]
        }
      }
    ]
  },
  {
    "num": 120,
    "datetime": "2018-08-30T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Codebourne office", "loc": "https://goo.gl/maps/hRdFRaurnmrGuAgW6",
      "addr": "Sepise 8, 11415 Tallinn, Estonia", "url": "https://codeborne.com/#contact"
    },
    "org": {"mod": ["jtimosin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/d5xx4QJesgbk3n6M7"],
    "event": "https://www.eventbrite.com/e/devclub-120-tickets-49471002099",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["graalvm", "oracle", "java", "virtual machine"],
        "youtube": ["HC8uoEX8B5A"],
        "speakers": [
          {
            "names": {"*": "Oleg Shelaev", "ru": "Олег Шелаев"},
            "url": "https://twitter.com/shelajev",
            "image": "oshelaev.jpg"
          }
        ],
        "titles": {"*": "Fast startup for Java apps with GraalVM"},
        "descr": {
          "ru": [
            "GraalVM — высокоэффективая виртуальная машина, поддерживающая многие популярные языки: Java, Kotlin, Scala, JavaScript, Python, Ruby, R и даже С и С++ и им подобные. Интересной особенностью GraalVM является способность компилировать JVM-байткод в машинный код ahead-of-time, создавая образы обычных Java-программ, которые не зависят от JVM, запускаются в миллисекундные сроки и требуют для работы меньше памяти. Для этого используется специальная виртуальная машина — SubstrateVM, написанная на Java и предлагающая собственные имплементации для сборки мусора, кэша кода, управление потоками и прочие компоненты JVM.",
            "Мы поговорим про устройство SubstrateVM, особенности подхода к компиляции кода и его ограничениях. Посмотрим на внутренний анализ Java-программ и что именно происходит на этапе создания образа (тут возникнут смешанные чувства к статическим инициализаторам в коде и библиотекам, которые редко обновляются). Выясним, как и почему нужно конфигурировать использование Reflection API, доступ к файлам ресурсов, JNI, Unsafe и прочие житейские мелочи нормальных Java-приложений.",
            "На примере покажем, как применить profile-guided-optimizations для создания быстрых образов, не теряющих информацию о потенциальном профиле использования кода, обсудим, какие программы имеет смысл компилировать ahead-of-time, посмотрим на примеры уже работающих приложений и характеристики их производительности."
          ]
        },
        "top": {"season": 2018, "place": 6}
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["nodejs", "js", "experience"],
        "youtube": ["-gWdbpQXmFo"],
        "speakers": [
          {
            "names": {"*": "Vadim Gerassimov", "ru": "Вадим Герасимов"},
            "url": "https://www.linkedin.com/in/vadimgerassimov",
            "image": "vgerassimov.jpg"
          }
        ],
        "titles": {"ru": "Из грязи в князи? Или история о двухлетнем путешествии Java разработчика в мир nodejs"},
        "descr": {
          "ru": [
            "Хочу поделиться опытом о переходе с мира Java в мир nodejs серверной разработки. Как все начиналось, какие продолжалось и к какому выводу в итоге я пришел. Постараюсь сравнить подходы на основании своего опыта. Сразу могу сказать, что это умозаключения более субъективные. Но должно быть очень интересно разработчикам, которые хотят нырнуть в мир nodejs и верят, что он такой классный, розовый и пушистый. Мой путь в мир nodejs подходит к концу, поэтому хотел бы поделиться, пока свежи воспоминания."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["blockchain"],
        "youtube": ["owhyY09iEk0"],
        "speakers": [
          {
            "names": {"*": "Mihhail Dunajev", "ru": "Михаил Дунаев"},
            "url": "https://www.linkedin.com/in/mikhail-dunaev-ab6b6a68",
            "image": "mdunajev.jpg"
          },
          {
            "names": {"*": "Pavel Lavreshin", "ru": "Павел Лаврешин"},
            "url": "https://www.linkedin.com/in/pavel-lavreshin-32525150",
            "image": "plavreshin.jpg"
          }
        ],
        "titles": {"*": "What the hack is blockchain"},
        "descr": {
          "ru": [
            "Простыми словами расскажем что такое блокчейн. Какие основные особенности у сети Ethereum. Что такое смарт-контракты и как взаимодействовать с ними через веб-приложение."
          ]
        }
      }
    ]
  },
  {
    "num": 119,
    "datetime": "2018-07-26T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["eweber"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/cWztfFVyokzE6s218"],
    "event": "https://www.eventbrite.com/e/devclub-119-tickets-48212928166",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["tests", "qa"],
        "youtube": ["YrIRKE-39Dc"],
        "speakers": [
          {
            "names": {"*": "Sergei Chipiga", "ru": "Сергей Чипига"},
            "titles": {"*": "Senior Automation Engineer @ Derivco Estonia"},
            "url": "https://www.linkedin.com/in/sergei-chipiga-05b29661/",
            "image": "schipiga.jpg"
          }
        ],
        "titles": {"ru": "Автоматизация автоматизации: как оптимизировать написание автотестов и разработку тестового фреймворка."},
        "descr": {
          "ru": [
            "Мы знаем, что автоматизация и автотесты дают нам огромное преимущество по скорости и качеству при разработке ПО. Однако и в разработке автотестов есть где применить автоматизацию и оптимизацию. В этом докладе я планирую подробно рассказать об архитектуре и воркфлоу тестового фреймворка GlaceJS, который стремится минимизировать затраты на разработку, дебаг, анализ результатов автотестов.",
            "Покажу и расскажу о том, как писать автотесты, какая концепция фреймворка, как устроеная плагинизация, что такое фикстуры, как работает интерактивный режим, как устроена навигация по документации в интерактивном режиме, как фреймворк используется для самотестирования и тестирования веб-приложений, как использовать фреймворк в качестве платформы для кастомных тестовых фреймворков, какие полезности я вынес в GlaceJS из контрибьюшена в проекты VueJS и PixiJS, как устроен процесс релиза и деплоя документации, как тестирую фреймворк и обеспечиваю его качество."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["docker", "ci", "wercker"],
        "youtube": ["lB7OYQ7A6P4"],
        "speakers": [
          {
            "names": {"*": "Stanislav Gorski", "ru": "Станислав Горский"},
            "titles": {"*": "CTO @ Autobahn VMS"},
            "url": "https://www.linkedin.com/in/stanislav-gorski-1b5b5b55/",
            "image": "sgorski_2018.jpg"
          }
        ],
        "titles": {"ru": "Собираем и разворачиваем docker контейнеры с Wercker."},
        "descr": {
          "ru": [
            "Я поделюсь своим опытом использования сервиса Wercker, расскажу о его преимуществах и недостатках, а также как именно мы его использовали в разных проектах для разных нужд."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["ci", "intellij", "teamcity"],
        "youtube": ["I9M-ds-Fjlw"],
        "speakers": [
          {
            "names": {"*": "Anton Arhipov", "ru": "Антон Архипов"},
            "titles": {"*": "Developer Advocate @ JetBrains"},
            "url": "https://ee.linkedin.com/in/antonarhipov",
            "image": "aarhipov.jpg"
          }
        ],
        "titles": {"ru": "Build pipelines: приключения в конвейере TeamCity"},
        "descr": {
          "ru": [
            "В мире CI уже давно популярен термин “build pipelines”. В Девклубе были презентации как такие штуки конфигурировать в Jenkins и Concource CI. Но не Jenkins-ом единым! А давайте посмотрим как это же самое можно сделать в TeamCity? Поболтаем о том, какие задачи решает CI сервер для того чтобы всё было хорошо."
          ]
        }
      }
    ]
  },
  {
    "num": 118,
    "datetime": "2018-06-28T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["agritsevski"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/EoiLBWEvUHs5pyye8"],
    "event": "https://www.eventbrite.com/e/devclub118-tickets-47262295799",
    "speeches": [
      {
        "org": {"cam": ["jtimosin"], "edit": ["eweber"]},
        "lang": "ru",
        "labels": ["mail", "security", "dmarc"],
        "youtube": ["vhNyUi1wpLE"],
        "speakers": [
          {
            "names": {"*": "Ervin Weber", "ru": "Эрвин Вебер "},
            "titles": {"*": "System Administrator @ Toggl"},
            "url": "https://ee.linkedin.com/in/webervin",
            "image": "eweber_2018.jpg"
          }
        ],
        "titles": {"ru": "Куда уходит почта…"},
        "descr": {
          "ru": [
            "Поговорим о том, как и куда идут эмейлы и как на это влиять, о том, как отправлять спам грамотно. Как то незаметно toggl.com вырос до «отправляем более 1М писем в месяц». Докладчик расскажет о том, что пришлось «подкрутить» его коллегам и чему они научились.",
            "Поговорим: не про контент который продается; не про отправку писем знакомым людям; не про SSL (и прочие туннели); не про корпоративную почту, куда нельзя писать извне; не про блокчейн."
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["web assembly", "asm.js"],
        "youtube": ["Kgd4vfwth0g"],
        "speakers": [
          {
            "names": {"*": "Artur Peka", "ru": "Артур Пека"},
            "titles": {"*": "Senior Web Developer"},
            "url": "https://www.linkedin.com/in/arthur-peka",
            "image": "apeka.jpg"
          }
        ],
        "titles": {"ru": "Введение в Web Assembly"},
        "descr": {
          "ru": [
            "Докладчик расскажет о том, зачем нужен язык web assembly (https://developer.mozilla.org/en-US/docs/WebAssembly) и где его уже можно использовать: путь от Javascript до Web Assembly; возможно ли современное веб приложение без Javascript?; примеры - код на С, C# и Rust в браузере на клиенте."
          ]
        }
      },
      {
        "org": {"cam": ["jtimosin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["ai", "bot", "machine learning"],
        "youtube": ["LVygNu8EH3U"],
        "speakers": [
          {
            "names": {"*": "Roman Ring", "ru": "Роман Ринг "},
            "titles": {"ru": "Бывший сеньор веб дев, сбежавший в мир академиков"},
            "url": "https://github.com/inoryy",
            "image": "rring.jpg"
          }
        ],
        "titles": {"ru": "Как я бота в StarСraft II играть учил..."},
        "descr": {
          "ru": [
            "... или Deep Reinforcement Learning. Речь пойдёт про искусственный интеллект и хайп вокруг него. Углубимся детальнее в одно многообещающее направление ИИ - обучение с подкреплением. Разберём самые популярные примеры из жизни и как отличить хайп журналистов от настоящих достижений. В заключение рассмотрим как все это дело применяется в современной среде StarCraft II. Для затравки рекомендуется посмотреть доклад Кости Третьякова \"Дип Лёрнинг\"."
          ]
        },
        "top": {"season": 2018, "place": 2}
      }
    ]
  },
  {
    "num": 117,
    "datetime": "2018-05-30T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["tgordejeva"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/OVlG3k4fcciBxIn82"],
    "event": "https://www.eventbrite.com/e/devclub117-tickets-46397386833",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["python", "django", "code generation"],
        "youtube": ["kR2ukkzMT8U"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Rudakov", "ru": "Александр Рудаков"},
            "titles": {"*": "Developer @ Negative Space OÜ"},
            "url": "https://www.linkedin.com/in/aleksandr-rudakov",
            "image": "arudakov.jpg"
          }
        ],
        "titles": {"ru": "Кодогенерация в Python/Django приложениях"},
        "descr": {
          "ru": [
            "Расскажу и покажу про кодо-генерацию в python/Django приложениях, в частности про Genius (https://genius-project.io/). Немножко live-кодинга. Расскажем про плюсы-минусы кодо-генерации, про кодо-генерацию в качестве практики переиспользования кода, психологические моменты, реальный опыт использования генератора для разработки клиентских приложений. Немножко сисек в конце: https://boober.express/en/ - расскажу как генератор помог на хакатоне быстренько нагенерить первоапрельскую шутку.",
            "Уже когда-то выступал на Devclub от Modera Software - рассказывал про Enterprise php applications. Со-владелец небольшой (10 девелоперов) компании Negative Space, которая занимается разработкой клиентских проектов на Python/Django. А еще мы делаем кучу классных штуковин, про одну из которых, я и приду рассказывать."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["test", "qa", "junit", "ddt"],
        "youtube": ["Hs8rcmyYV4U"],
        "speakers": [
          {
            "names": {"*": "Dmitri Tuchs", "ru": "Дмитрий Тучс"},
            "titles": {"ru": "Гуру автотестов @ Питерский R&D центр PropellerAds"},
            "url": "https://www.linkedin.com/in/dtuchs",
            "image": "dtuchs.jpg"
          }
        ],
        "titles": {"ru": "JUnit 5 + DDT: Что такое осень?"},
        "descr": {
          "ru": [
            "Поговорим о том, что такое Data Driven Testing и почему JUnit 5 и DDT созданы друг для друга. Тема может быть интересна и разработчикам, особенно тем, кто по какой-то причине ещё не перешел на JUnit 5. Это не будет про MS Excel и прочую лабуду, которую можно встретить в статьях про Data Driven Testing."
          ]
        }
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["security", "web", "injections", "http", "headers"],
        "youtube": ["z-aEjd22BGU"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev.jpg"
          }
        ],
        "titles": {"*": "WTF Security"},
        "descr": {
          "ru": [
            "WTF возвращается! Поговорим о безопасности веб-приложений. Но здесь не будет скучных списков OWASP. Не будет sql-инъекций. Здесь будет коллекция реальных примеров из жизни. В этих примерах зияющие дырки оставляли даже специалисты, которые считали, что уж они-то знают толк в безопасности. Чем больше ты узнаёшь о безопасности, тем страшнее тебе становится..."
          ]
        }
      }
    ]
  },
  {
    "num": 116,
    "datetime": "2018-04-19T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["asviridenko"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/kJtaYQtDyvTpuJtA2"],
    "event": "https://www.eventbrite.com/e/devclub116-tickets-45098633226",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["tests", "qa"],
        "youtube": ["5oLYUH0sXc8"],
        "speakers": [
          {
            "names": {"*": "Sergei Chipiga", "ru": "Сергей Чипига"},
            "titles": {"*": "Senior Automation Engineer @ Derivco Estonia"},
            "url": "https://www.linkedin.com/in/sergei-chipiga-05b29661/",
            "image": "schipiga.jpg"
          }
        ],
        "titles": {"ru": "Машинная генерация тестовых сценариев: прогресс или заблуждение?"},
        "descr": {
          "ru": [
            "В этом докладе я бы хотел рассказать о машинной генерации сценариев для тестирования, и почему считаю это серьезным шагом в автоматизации.",
            "В свободное время я разработал проект https://github.com/glacejs/glace-testgen, который использую для генерирования функциональных тестов и проверки своего тестового фреймворка. Генератор принимает на вход список возможных действий в системе и выдает различные сценарии поведения для тестирования.",
            "Презентация проекта вызвала неоднозначные отзывы, которыми бы я хотел поделиться. Надеюсь, что и у участников девклаба также возникнет интерес к обсуждению. Будет немного и про машинное обучение, но не нейронные сети, а цепи Маркова.",
            "Расскажу о том, как я попытался использовать обучение на существующих тестах, для того чтобы генератор выдавал сценарии по степени \"важности\"."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["bpm", "bpmn"],
        "youtube": ["SJ_k_PQcGYs"],
        "speakers": [
          {
            "names": {"*": "Igor Bossenko", "ru": "Игорь Босенко"},
            "titles": {"*": "Solution Architect @ Kodality"},
            "url": "https://ee.linkedin.com/in/igor-bossenko-17b7822",
            "image": "ibossenko.jpg"
          }
        ],
        "titles": {"ru": "Моделирование бизнес процессов в реальной жизни - миф или реальность"},
        "descr": {
          "ru": [
            "Волею судьбы мне довелось стать специалистом в области бизнес-процессов (BPMN) и case-management (CMMN) и создать очень интересное решение поверх Flowable (форка Activity).",
            "Для выбора BPMN-engine мне пришлось сделать сравнение разных свободных BPM-engine-ов доступных на рынке.",
            "Я с удовольствием расскажу об BPM-engine-ах, зачем и как пользоваться BPMN & CMMN, покажу как создавать процесс и пользоваться Ангуляровским форм генератором. Так что в результате для создания процесса не требуется вмешательство программиста."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["js", "flow.js"],
        "youtube": ["jTU_Fpz4zeM"],
        "speakers": [
          {
            "names": {"*": "Viktor Kuryljov", "ru": "Виктор Курылёв"},
            "titles": {"*": "Software Engineer @ I-SEPP OÜ"},
            "url": "https://www.linkedin.com/in/viktor-kuroljov-3b9291110",
            "image": "vkuryljov.jpg"
          }
        ],
        "titles": {"*": "Statically typed JS was undefined"},
        "descr": {
          "ru": [
            "Почему динамическая система типизации в JS это не преимущество (определение проблемы): как было бы хорошо; как уже можно (Flow как способ представить типы и решить проблему); кейсы; как начать."
          ]
        }
      }
    ]
  },
  {
    "num": 115,
    "datetime": "2018-03-29T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["agritsevski"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/gvA7xgjkyi00EJfJ2"],
    "event": "https://www.eventbrite.com/e/devclub115-tickets-44443910934",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["asviridenko"]},
        "lang": "ru",
        "labels": ["offtopic", "physics"],
        "youtube": ["1XYvlq6xoYc"],
        "speakers": [
          {
            "names": {"*": "Vladimir Goman", "ru": "Владимир Гоман"},
            "titles": {"ru": "Председатель Балтийского астрономического клуба"},
            "url": "https://www.facebook.com/groups/baltic.astronomy/",
            "image": "vgoman.jpg"
          }
        ],
        "titles": {"ru": "Экзопланеты и поиски жизни"},
        "descr": {
          "ru": [
            "Существует ли жизнь на других планетах или Земля является единственной обителью жизни во Вселенной? Этот вопрос не дает нам покоя многие столетия. Чтобы понять это современные астрономы стремятся заглянуть в самые глубины Вселенной.",
"В этой лекции речь пойдет и о возможности существования жизни, как на соседних планетах, так и на далеких экзопланетах, вращающихся вокруг недостижимых для нас звезд. Также мы поговорим о современных методах обнаружения экзопланет."
          ]
        },
        "presentations": ["20180329_vgoman_ekzoplanety.pdf"]
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["jtimosin"]},
        "lang": "ru",
        "labels": ["ci", "jenkins"],
        "youtube": ["4xbuI6hunUQ"],
        "speakers": [
          {
            "names": {"*": " Juri Timoshin", "ru": "Юрий Тимошин"},
            "titles": {"*": "Senior DevOps Engineer @ Malwarebytes"},
            "url": "https://www.linkedin.com/in/juritimoshin",
            "image": "jtimosin_2018.jpg"
          }
        ],
        "titles": {"ru": "One CI To Rule Them All: автоматическая настройка"},
        "descr": {
          "ru": [
            "Папки / пространства имён, роли, интеграция с Github, blueocean, slack, pagerduty..."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["jtimosin"]},
        "lang": "ru",
        "labels": ["ci", "jenkins"],
        "youtube": ["2I-PqhEIWlY"],
        "speakers": [
          {
            "names": {"*": " Juri Timoshin", "ru": "Юрий Тимошин"},
            "titles": {"*": "Senior DevOps Engineer @ Malwarebytes"},
            "url": "https://www.linkedin.com/in/juritimoshin",
            "image": "jtimosin.jpg"
          }
        ],
        "titles": {"*": "One CI To Rule Them All: Declarative Pipelines"},
        "descr": {
          "ru": [
            "Jenkins всё ещё продолжает активно развиваться и опережает своих конкурентов практически во всём. Теперь в нём появились declarative pipelines - pipelines в том виде какие они должны быть. Покажу как сейчас надо настроить и использовать Jenkins: правильные ограничения по правам для аудитории. Как запретить доступ к отдельным проектам и секретам для некоторых лиц; интеграцию с Github, build on push; multibranch pipelines, почему все проекты должны быть именно этим типом джобов; Jenkins pipeline libraries. Многие pipeline у вас будут похожи или вообще одинаковы. Как вынести общий код в библиотеку и использовать её внутри pipeline; Docker! Pipeline-ы теперь поддерживают докер контейнеры нативно. Можно всё билдить в докере; и всё это можно настроить автоматически, например через Chef."
          ]
        }
      }
    ]
  },
  {
    "num": 114,
    "datetime": "2018-02-22T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["astalnuhhin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/d2Lt6twYRvHNhZYA2"],
    "event": "https://www.eventbrite.com/e/devclub-114-gdpr-tickets-43246130340",
    "speeches": [
      {
        "org": {"cam": ["gbeskin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["tests", "qa"],
        "youtube": ["0vpKJuSQH4Y"],
        "speakers": [
          {
            "names": {"*": "Aleksandr Gritsevski", "ru": "Александр Грицевский"},
            "titles": {"*": "Lead Quality Manager @ Kuehne + Nagel"},
            "url": "https://www.linkedin.com/in/leadqualitymanager",
            "image": "agritsevski.jpg"
          }
        ],
        "titles": {"ru": "Дизайн тест кейсов для автоматического тестирования. Возможно ли пройти аудит процессов без классических тест кейсов, тест сьютов и тест планов?"},
        "descr": {
          "ru": [
            "Нужна ли нам дополнительная документация в проектах или достаточно только иметь автоматические скрипты? Возможно ли пройти аудит процессов без классических тест кейсов, тест сьютов и тест планов? Рассматривая различные фреймворки и их применение, я хочу показать, как разработчики программного обеспечения могут успешно проверить свой код без большого количества описаний."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["aarhipov"]},
        "lang": "ru",
        "labels": ["tests", "qa"],
        "youtube": ["qubgs3GEMks"],
        "speakers": [
          {
            "names": {"*": "Sergei Chipiga", "ru": "Сергей Чипига"},
            "titles": {"*": "Senior Automation Engineer @ Derivco Estonia"},
            "url": "https://www.linkedin.com/in/sergei-chipiga-05b29661/",
            "image": "schipiga.jpg"
          }
        ],
        "titles": {"ru": "Собственный тестовый фреймворк: так ли это плохо?"},
        "descr": {
          "ru": [
            "В этом докладе я бы хотел рассказать, почему часто случается так, что команда автоматизации тестирования совместно с тестами разработывает собственный тестовый фреймворк. Чего не хватает в опен-сорс решениях и почему это не так уже и плохо. А также хотел бы представить собственный фреймворк, над которым работаю с свободное время, и который используется в моей работе — glacejs (https://glacejs.github.io)."
          ]
        },
        "presentations": ["20180222_schipiga_test.pptx"]
      },
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["regulations", "gdpr"],
        "youtube": ["6eax3paxjDU"],
        "speakers": [
          {
            "names": {"*": "Kirill Linnik", "ru": "Кирилл Линник"},
            "titles": {"*": "Senior Software Architect @ MOVE Guides"},
            "url": "https://ee.linkedin.com/pub/kirill-linnik/50/a65/976",
            "image": "klinnik.jpg"
          }
        ],
        "titles": {"ru": "GDPR и котики"},
        "descr": {
          "ru": [
            "Несмотря на то, что новый закон, который вступит в силу уже в мае этого года, касается всех нас, прежде всего, он влияет на людей, так или иначе связанных с ИТ: и на разработчиков, и на потребителей услуг. При этом, о GDPR почти всегда рассказывают юристы и прочие люди, которые лишь отдалённо понимают, что же это означает на практике.",
            "Причина в том, что мало кто из здравомыслящих людей в состоянии «осилить» 88-страничный юридический текст и перевести его на язык «технарей». Но кто же, если не ДевКлуб, сделает это для вас? Давайте пройдёмся по основным положениям и попытаемся вместе понять, насколько серьёзно это затронет разработку, с чего начать и сколько попросить людей к себе в команду (или просто закрыть бизнес)?",
            "И, как вы уже догадались из названия, ответим и на главный вопрос: что делать с правами котиков в Интернете, ведь ине все из них дают согласие на размещение в Интернете? Согласие, право на забвение, какие данны считаются личными, какие меры нужно предпринять для их сохранности, как их перенести, что делать в случае взлома и как не «попасть» на 20 миллионов штрафа — эти вопросы теперь волнуют не только их, но и специалистов по всему миру."
          ]
        },
        "top": {"season": 2018, "place": 1}
      }
    ]
  },
  {
    "num": 113,
    "datetime": "2018-01-31T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["gbeskin"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/HLAgZYvRAxrvRbkE2"],
    "event": "",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["projects", "estonia"],
        "youtube": ["lsKYFkprPY0"],
        "speakers": [
          {
            "names": {"*": "Igor Bossenko", "ru": "Игорь Босенко"},
            "titles": {"*": "Solution Architect @ Kodality"},
            "url": "https://ee.linkedin.com/in/igor-bossenko-17b7822",
            "image": "ibossenko.jpg"
          }
        ],
        "titles": {"*": "Where is my money?"},
        "descr": {
          "ru": [
            "Эстонский Налоговый департамент и Таможенная служба (ЕМТА) один из наиболее больших и важных департаментов Министерства Финансов Эстонии.",
            "В докладе будет освещено, как обстоят дела в ЕМТА с точки зрения инфотехнологий, как происходит смена legacy систем на современные, что ожидать от ЕМТА в ближайшем будущем.",
            "Мы также затронем вопрос, какие деньги там крутятся и как туда попасть. Ну, и на сладкое - пара забавных историй."
          ]
        },
        "presentations": ["20180131_ibosenko_maksuamet.pdf"]
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["klinnik"]},
        "lang": "ru",
        "labels": ["projects", "store", "etcd"],
        "youtube": ["lmN0hNyzJ9k"],
        "speakers": [
          {
            "names": {"*": "Anton Anikin", "ru": "Антон Аникин"},
            "titles": {"*": "IT Architect @ Icefire"},
            "url": "https://www.linkedin.com/in/anton-anikin-51a9133a",
            "image": "aanikin_201801.jpg"
          }
        ],
        "titles": {"ru": "Регистр приложений в Налогово-таможенном департаменте"},
        "descr": {
          "ru": [
            "Около 300 приложений, 100 серверов - как найти тот самый единственный сервис? В 2017 году, наконец, сделали один из самых важный шагов на пути к (микро/макро)-сервисной архитектуре - был создан регистр приложений.",
            "В этом докладе я попытаюсь рассказать, что из себя представляет регистр, и почему это важно."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["js", "angular", "devclub"],
        "youtube": ["Ao00tdd6RHo"],
        "speakers": [
          {
            "names": {"*": "Anton Stalnuhhin", "ru": "Антон Стальнухин"},
            "titles": {"*": "Senior Developer @ Nortal"},
            "url": "http://anton.stalnuhhin.ee/cv/?lang=ru",
            "image": "astalnuhhin.jpg"
          }
        ],
        "titles": {"ru": "Сказ о том, как Devclub на Angular без JS переходил"},
        "presentations": ["20180131_stalnuhhin_angular2.pdf"],
        "descr": {
          "ru": [
            "В 2014 году я рассказывал о планах AngularJS - осенью 2016 года появился Angular 2, который на сегодня перерос в Angular 5. Это и будет главный герой нашей презентации.",
            "В 2017 году много слёз и пота было пролито в работе над удобным front-end'ом в некоторых новых проектах Налоговой Эстонии. Частично я использовал этот опыт и при написании новых сайтов Devclub: devclub.eu и devclub.ee, которые до недавних пор использовали AngularJS.",
            "В этом докладе я расскажу о том, что с 2014 года происходило с Angular, а также поделюсь опытом в построении систем на Angular-фреймворке, включая экосистему вокруг кода (структура, библиотечки, любимый всеми npm)."
          ]
        }
      }
    ]
  },
  {
    "num": 112,
    "datetime": "2017-12-29T19:00:00+03:00",
    "season": 2018,
    "place": {
      "name": "Park Inn by Radisson Meriton Conference & Spa Hotel Tallinn", "loc": "https://goo.gl/maps/AJbuvwDS7co",
      "addr": "Toompuiestee 27/Paldiski mnt 4, 10149 Tallinn", "url": "https://www.parkinn.com/hotel-meriton-tallinn"
    },
    "org": {"mod": ["aarhipov"], "photo": ["klinnik"]},
    "photo": ["https://photos.app.goo.gl/FCHiRi8xtapSzPcz2"],
    "event": "https://www.eventbrite.com/e/41538878905",
    "speeches": [
      {
        "org": {"cam": ["astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["puzzlers", "kotlin"],
        "youtube": ["IsjeD6PFzZw"],
        "speakers": [
          {
            "names": {"*": "Anton Keks", "ru": "Антон Кекс"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://www.linkedin.com/in/antonkeks",
            "image": "akeks.jpg"
          }
        ],
        "titles": {"ru": "Kotlin puzzlers"},
        "descr": {
          "ru": [
            "Антон расскажет от загадках в языке программирования Kotlin. Доклады про Kotlin в нашем клубе уже были не один раз. В этот раз Антон хочет рассказать о неожиданных ситуациях в использовании этого языка."
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["puzzlers", "selenide", "tests"],
        "youtube": ["LQSrhmzXpHM"],
        "speakers": [
          {
            "names": {"*": "Andrei Solntsev", "ru": "Андрей Солнцев"},
            "titles": {"*": "Developer @ Codeborne"},
            "url": "https://ee.linkedin.com/in/asolntsev",
            "image": "asolntsev.jpg"
          }
        ],
        "titles": {"ru": "Selenide puzzlers"},
        "descr": {
          "ru": [
            "Андрей расскажет от загадках в Selenide. Да, да! Авторские паззлеры!"
          ]
        }
      },
      {
        "org": {"cam": ["gbeskin", "astalnuhhin"], "edit": ["astalnuhhin"]},
        "lang": "ru",
        "labels": ["experience", "architecture"],
        "youtube": ["ii66pI756Zc"],
        "speakers": [
          {
            "names": {"*": "Jevgeni Goloborodko", "ru": "Евгений Голобородько"},
            "titles": {"*": "Software Architect & Founder @ Digital Magic Ltd"},
            "url": "https://ee.linkedin.com/in/jevgeni-goloborodko-65a048a",
            "image": "jgoloborodko.jpg"
          }
        ],
        "titles": {"ru": "Что меня бесило в 2017 году"},
        "descr": {
          "ru": [
            "В 2010 году я делал доклад о том, что нет плохих технологий, а есть плохие способы их применять. Этот доклад о том от чего меня серьезно бомбит, о наихудших практиках и не логичных решениях. Будет много эмоций и вбросов."
          ]
        }
      }
    ]
  }
]
