• Каково делать Kotlin: интервью с Андреем Бреславом



      Дефицита технических материалов о Kotlin нет, узнать о корутинах или nullability можно много где. Но остаётся куда менее освещённой другая сторона: а как вообще выглядит процесс разработки языка? Как принимаются решения? Каковы задачи у «самого главного человека»? Остаётся ли у него в жизни время на что-либо ещё?

      И сейчас, когда вот-вот выйдет Kotlin 1.3, мы расспросили «самого главного» Андрея Бреслава не про корутины, а про совсем другое: от того, чем он занимался до Kotlin, до того, чем полезна психотерапия.
      Читать дальше →
    • Основные тезисы из интервью Илона Маска у Джо Рогана

        Илон Маск пришел к комику Джо Рогану на его подкаст Joe Rogan Experience.
        2,5 часа они общались об ИИ, бессмертии, Neuralink, инновациях, социальных сетях, колонизации космоса, бурении тоннелей, огнемете, летающих автомобилях, возобновляемой энергетике, безопасности автомобилей. Обсудили Porsche и Rolex, коррупцию и суды Tesla, доброту людей, роль Маска в истории человечества. Как уже все знают, покурили траву и выпили виски.

        image
        Читать дальше →
      • Мне не страшен ваш NDA

          Это громкая и страшная аббревиатура из трёх неприличных букв. Хотите поучаствовать в тендере, устраиваетесь на работу, нужно получить данные — вам подсовывают эту бумажку, мол, подпиши сначала, а то нашли дураков без NDA тебе что-нибудь рассказывать. При этом в большинстве случаев вы ничего сверхсекретного или коммерчески важного не узнаете, но процедура подписания NDA стала неким таинством посвящения, которое стороны выполняют не особо задумываясь над смыслом.

          Это так же как вы неизбежно получите требование вместе с учредительными документами предоставить выписку из ЕГРЮЛ не старше 30 дней. Хотя всё доступно в онлайне, все распечатывают эту выписку из интернета, заверяют её и передают контрагенту, который даже не смотрит её, потому что всё есть в интернете. Ну, вы поняли, короче, отечественную любовь к таинствам.

          image
          Читать дальше →
        • UniSharping: конвертирование кода C# в Java и Python

            Введение


            С 70-х годов развивается Simplified English, цель которого — определение подмножества языка, понятного широкому кругу неносителей языка. Рекомендуется, например, для технической документации. Автоматические переводчики на таком подмножестве будут работать заведомо корректнее, в идеале генерируя текст, не требующий ручной корректуры.
            Если применить этот подход к C# для задачи автоматической конвертации кода в другие языки программирования, то можно выделить подмножество конструкций языка, системных библиотек и технологий, которые потенциально могут транслироваться в широкий круг других языков. Причём конвертации не однократной (миграция), а постоянной для расширения интеграционных возможностей проекта на C# — чтобы в любой момент можно было получить рабочий код на другом языке без необходимости какой-либо его правки.


            Позвольте представить: UniSharping


            Ограничение C#.NET для решения этой задачи мы назвали U# (Universal Sharp), а процесс конвертации и его инструмент — UniSharping. Исполняемые модули, настройки и документация выложены на GitHub, система бесплатна для некоммерческого использования (Non-Commercial Freeware).

            Читать дальше →
          • Раздача халявы: нетормозящие треды в Java. Project Loom

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


              Объясняем работу Project Loom на коробках с пиццей! Налетай!


              Состав поставки:


              • Видеокаст (основная часть). Для тех, кто любит потреблять видео.
              • Полная текстовая расшифровка статьи. Там есть ссылки!

              Всё это снимается и пишется специально для Хабра.





              Мы живём в жестоком новом мире, где лайки стоят больше, чем деньги. Блогер может сделать за лайки практически всё, что угодно. Финальная стадия международного капитализма и технологической распущенности.


              Знаю, что вам ваши лайчики дались нелегким трудом. Неизвестно, какие мерзости вы вообще делаете, чтобы заработать. Возможно, отвечаете на комментарии, которые вам на самом деле не нравятся, людям, которых вы ненавидите, и так зарабатываете себе вожделенные плюсики. Я не хочу об этом знать вообще. Лайки не пахнут. Просто отслюнявьте мне немножко лайчиков, и я сделаю вид, что не знаю, откуда они. Это всё, что имеет значение для продажного блогера типа меня.


              Все лайчонки пойдут на создание нового контента. Спасибо.

              Читать дальше →
            • Модель памяти в примерах и не только

              • Tutorial
              В продолжение серии топиков под названием «фундаментальные вещи о Java, которые стоит знать, но которые многие не знают». Предыдущий топик: Бинарная совместимость в примерах и не только

              Модель памяти Java — нечто, что оказывает влияние на то, как работает код любого java-разработчика. Тем не менее, довольно многие пренебрегают знанием этой важной темы, и порой наталкиваются на совершенно неожиданное поведение их приложений, которое объясняется именно особенностями устройства JMM. Возьмём для примера весьма распространённую и некорректную реализацию паттерна Double-checked locking:

              public class Keeper {
                  private Data data = null;
                  
                  public Data getData() {
                      if(data == null) {
                          synchronized(this) {
                              if(data == null) {
                                  data = new Data();
                              }
                          }
                      }
                      
                      return data;
                  }
              }
              

              Люди, пишущие подобный код, пытаются добиться улучшения производительности, избегая блокировки, если значение уже было присвоено. К сожалению, эти люди не учитывают многих факторов, в результате проявления которых может случиться зомби-апокалипсис. Под катом я расскажу теорию и приведу примеры того, как что-то может пойти не так. Кроме того, как говорили в одном индийском фильме, «Мало знать, что не так. Нужно знать, как сделать так, чтобы было так». Потому и рецепты успеха вы также сможете найти дальше.
              Читать дальше →
            • О сборке JDK 8 на Ubuntu, качестве кода Hotspot и почему всё валят на C++

                Хотел сегодня поспать, но опять не удалось. В Телеграме появилось сообщение, что у кого-то не собирается Java… и мы очнулись только через пару часов, уставшие и довольные.




                Кому этот пост может быть полезен? Да, наверное, никому, кроме тех, кто тоже собирает JDK8 или просто любит почитать кошмарные ужасы. В общем, я вас предупредил, закрывайте статью срочно.

                Проблемы три:


                • Не собирается (уровень первый)
                  Очень скучная часть, которую можно пропустить. Нужна только для тех, кто хочет полностью восстановить историю событий;
                • Не собирается (уровень второй)
                  Интересней, потому что там есть пара типичных ошибок, некромантия, некрофилия, в чём BSD лучше GNU/Linux и почему стоит переходить на новые версии JDK.
                • Даже если собирается, падает в корку
                  Более интересно. Йахууу, JVM упала в корку, давайте пинать её ногами!

                Под катом показан подробный ход решения проблем, с разными побочными мыслями о жизни.


                Будет много C++, кода на Java не будет вообще. Любой джавист в конце концов начинает писать только на C++…

                Читать дальше →
              • Хватит кормить логгеры! Даешь больше модификаторов! Lazy Static Final Fields. Черновой набросок фичи

                • Перевод

                Достало, что в Java логгеры инициализируются в момент инициализации класса, отчего замусоривают весь запуск? Джон Роуз спешит на помощь!


                Вот как это может выглядеть:


                lazy private final static Logger LOGGER = Logger.getLogger("com.foo.Bar");

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


                Читать дальше →
              • «Высокий уровень самодисциплины». Джеффри Рихтер о том, как кодить, писать книги и создавать свои компании


                  Сегодня в нашей виртуальной студии один из самых известных дотнетчиков — Джеффри Рихтер.

                  В данный момент он — Partner Software Architect в Microsoft, работающий по направлению Distributed Cloud Apps & Storage. Иначе говоря, человек, который знает об Azure Storage всё.

                  F.A.Q.

                  Слишком много текста. О чём это всё?
                  Чтобы вам было веселей читать, для этой статьи мы придумали более интересную вёрстку. Слева будут говорящие головы, а справа — текст. Если вам уныло листать до интересующей части, то в оглавлении есть анкерные ссылки. В ролях:


                  Евгений phillennium Трифонов (нетехнические вопросы)
                  • Советы разработчикам по созданию компании
                  • Комбинирование разных видов деятельности
                  • Что читать, что изучать, как писать


                  Олег olegchir Чирухин (технические вопросы)
                  • Зачем Рихтер изучает JS, Golang и Python
                  • Стоит ли продолжать писать на C++
                  • Эволюция и будущее разработки на платформе Windows, .NET и вообще
                  • Захватит ли JavaScript мир, нужна ли типобезопасность
                  • Немного о пользе облачных провайдеров
                  • Что лучше иметь — личный самолет или личный вертолёт
                  • Как всё успевать



                  Почему эта статья попала в хаб JavaScript?
                  Только для тех, кому интересно мнение архитектора Azure относительно JS и его позиция в холиваре о типобезопасности. Этот холивар перетекает у нас из интервью в интервью, и конца ему не видно.


                  Почему эта статья попала в хаб С++?
                  Изначально Рихтер писал книги про C++. Только для тех, кому интересно мнение архитектора Azure относительно будущего и применимости C++


                  Джефф стал известен еще в начале 90-х, когда написал книгу о том, как программировать Windows 3.1. Его книга «Programming Applications for Microsoft Windows» стала классикой, позже выпускалась как «Windows via C/C++» и выдержала несколько изданий.

                  С появлением .NET он написал «CLR via C#» — тоже получилась классика, тоже несколько изданий. В то время он был одним из основателей компании Wintellect и, формально не будучи частью Microsoft, оказался более свободен в оценках. Чем и заработал репутацию крупного независимого эксперта по Windows. Это человек-легенда уровня Чарльза Петцольда и Дона Бокса.



                  Читать дальше →
                • От сисадмина к человеку



                    На DevOps есть по крайней мере два устоявшихся взгляда — со стороны системных администраторов и со стороны разработчиков. Первые обычно хвастаются тем, что используют Chef/Puppet/Ansible/Docker c 200X года, вторые считают, что DevOps либо изжил себя и ведет к NoOps, либо что «я завернул всё в контейнер, а дальше как пойдёт».

                    Бизнес при этом читает про DevOps в статьях и надеется, что ребята снизу разберутся, что с ним делать. При этом самого DevOps не происходит, бизнес не похож на Google, компания не становится бирюзовой, люди не создают новых подходов для проверки гипотез в мире.

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

                    В основе материала — расшифровка доклада Александра osminog Титова с нашей октябрьской конференции DevOops 2017.

                    Читать дальше →
                  • «Мы даже не пытаемся запустить старый код, такой задачи у нас не стоит в принципе» — Роман Елизаров о разработке Kotlin

                      Если хочешь в чем-то разобраться — учись сразу у лучших. Сегодня на мои вопросы отвечает бог корутин и concurrency, Рома elizarov Елизаров. Мы поговорили не только о Kotlin, как вы могли бы подумать, но ещё и о куче смежных тем:

                      • Golang и горутины;
                      • JavaScript и его применимость для серьезных проектов;
                      • Java и Project Loom;
                      • олимпиадное программирование на Kotlin;
                      • как правильно обучаться программированию;
                      • и другие волнующие вещи.


                      Читать дальше →
                    • [Javawatch Live] История одного pull request. `os.version` в SubstrateVM

                        Прошел год с тех пор, как удалась предыдущая выходка: опубликовать вместо поста ролик на YouTube. «Стыдный разговор о синглтонах» набрал 7к просмотров на YouTube и вдвое больше на самом Хабре в текстовой версии. Для статьи, написанной в совершенно упоротом состоянии и рассказывающей о древнейшем баяне — это что-то вроде успеха.

                        Сегодня я всю ночь монтировал новый выпуск. На этот раз тема куда более свежая: история коммита в экспериментальную технологию — SubstrateVM. А вот градус упоротости поднялся на новый уровень.



                        Очень жду ваших комментариев! Напоминаю, что если вы хотите действительно что-то улучшить в этом посте, то лучше всего зафайлить ишшую на Github. Хотел бы сказать «ставьте лайки и подписывайтесь на новый канал, но ведь все его выпуски и так будут у вас в хабе Java?

                        Технически: в видео есть одна склейка ближе к концу. Просто я писал несжатое видео, и мой m2 ssd размером всего в пятьсот гигабайт быстро переполнился. А ни один другой жесткий диск не смог выдержать такого напора данных. Поэтому пришлось отключиться на полчаса и изголившись найти дополнительные пятьдесят гигов на запись последних нескольких минут. Это было достигнуто удалением файлов собранного GoogleChrome. Мнение о записывающем софте отписал в ФБ прямо в момент записи, там очень много боли.

                        Ещё из технически интересного: YouTube почему-то заблокировало мне live streaming. При этом на аккаунте нет ни единого страйка и клейма. Будем надеяться, что это просто косяк, и через 90 дней всё вернут назад.
                        Текстовая расшифровка хаброкаста
                        • +42
                        • 4,4k
                        • 5
                      • There's an app for that: анонс Mobius 2018 Moscow

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

                          А если вы не просто пользуетесь мобильными приложениями, но и сами их разрабатываете (хоть Android, хоть iOS), то в декабре будем рады видеть вас на Mobius, а здесь написали, чего ждать:


                          Читать дальше →
                        • Three Futamura Projections и не только

                            Привет, хабрачеловек. Сегодня я расскажу тебе про некоторые фундаментальные вещи в computer science: частичные вычисления, три проекции Футамуры и суперкомпиляцию.
                             
                             

                            1. Сразу к коду


                            -- функция, которая возводит x в степень y (неотрицательную)
                            power x y =
                                case y of
                                    0 → 1
                                    1 → x
                                    _ → x * (power x (y - 1))


                            Читать дальше →
                          • Что мы читали в июле: как найти время на чтение, пять книг для тимлида и немного свежих статей



                              В сегодняшнем выпуске нашей рубрики Алексей Катаев рассказывает о том, как он научился читать по 17 книг в месяц, не тратя на это кучу времени, и рекомендует пять полезных произведений из разряда «нетленки», показавшихся ему наиболее полезными. А в конце — традиционная, но маленькая подборка ссылок из нашего рабочего Слака.
                              Читать дальше →
                            • Незамеченное IT

                                Замечали неравномерность человеческого внимания к разным достижениям? Мемы о том, что Стив Джобс и Деннис Ритчи ушли почти одновременно, но обществом была замечена только смерть первого, хотя вклад второго в IT гигантский:


                                Реальность неумолима: как бы ни был талантлив сценарист фильма, актёрам всегда достанется больше внимания, потому что их видно. Как бы ни был профессионален создатель серверной технологии, Марк Цукерберг привлечёт больше внимания, потому что рядовой пользователь взаимодействует с его проектом напрямую. Это нормально: мы все не замечаем чего-то, с чем не сталкиваемся напрямую.

                                В этом посте будет небольшой заплыв в специфику организации мероприятий, а также Kotlin, Machine Learning и создателя ОС Фантом. Коротко о посте в одной картинке (да, вы скоро поймете, о чем речь):


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

                                Предлагаемая схема: обращать внимание людей на «незамеченные» вещи и объяснять их значимость. Например, сейчас мы запускаем фестиваль TechTrain, и видим несколько историй, о которых пойдет речь.
                                Читать дальше →
                              • Deep Learning: Распознавание сцен и достопримечательностей на изображениях

                                  Время пополнять копилку хороших русскоязычных докладов по Machine Learning! Копилка сама не пополнится!

                                  В этот раз мы познакомимся с увлекательным рассказом Андрея Боярова про распознавание сцен. Андрей — программист-исследователь, занимающийся машинным зрением в компании Mail.Ru Group.

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

                                  Это 30 минут видео с конференции Smart Data 2017. Видео удобно смотреть дома и в дороге. Для тех же, кто не готов столько сидеть у экрана, или кому удобней воспринимать информацию в текстовом виде, мы прикладываем полную текстовую расшифровку, оформленную в виде хабростатьи.


                                  Перейти к текстовой версии
                                  • +30
                                  • 5,5k
                                  • 2
                                • Слушать и говорить: анонс HolyJS 2018 Moscow



                                    Что главное на конференциях — доклады или общение? Свои сторонники есть и у первого варианта («информация по делу важнее разговоров»), и у второго («учиться можно и дома, а вот поговорить с экспертами дорогого стоит»).

                                    24-25 ноября мы проведём в Москве конференцию для JavaScript-разработчиков HolyJS 2018 Moscow, и считаем, что она хорошо подойдёт как ценителям докладов, так и сторонникам общения. Почему? Написали под катом и о первой составляющей, и о второй.
                                    Читать дальше →
                                    • +23
                                    • 1,9k
                                    • 2
                                  • [Анонс, Питер] Встреча JUG.ru с Андреем Беляевым и Алексеем Стукаловым —Тролль гнёт CUBA: F.A.Q

                                      В четверг, 9 августа, в петербургском офисе компании Oracle пройдет встреча JUG.ru с Андреем Беляевым и Алексеем Стукаловым — инженерами самарской компании Haulmont. Тема встречи: F.A.Q. по CUBA.platform — высокоуровневой Java-платформе для создания корпоративных информационных систем.


                                      CUBA Platform — Java-фреймворк с открытым исходным кодом для быстрой разработки корпоративных приложений, созданный самарской компанией Haulmont и используемый по всему миру.


                                      Читать дальше →
                                    • Akka Streams для простых смертных

                                        Как можно несколькими строками кода распечатать непрерывный поток сообщений из Твиттера, добавив в него данные о погоде в местах проживания их авторов? И как при этом ограничить скорость запросов к провайдеру метеоусловий, чтобы они не внесли нас в черный список?

                                        Расскажем вам сегодня, как это сделать, но сначала познакомимся с технологией Akka Streams, позволяющей работать с потоками данных в реальном времени так же просто, как программисты работают с LINQ-выражениями, не требуя при этом ручной реализации ни отдельных акторов, ни интерфейсов Reactive Streams.


                                        В основе статьи — расшифровка доклада Вагифа Абилова с нашей декабрьской конференции DotNext 2017 Moscow.
                                        Читать дальше →