# Понедельник 38 твитов
привет, меня зовут Олег, я работаю в проекте GraalVM в Оракл. Это такой полиглот рантайм который умеет в python, js… twitter.com/i/web/status/1…
9:09сразу быструю вводную чтоб не вносить смуту - graalvm - вот graalvm.org/docs/
умеет несколько языков, умеет… twitter.com/i/web/status/1…
9:15для поддержки языка -- разрабатывается интерпретатор который во время работы специализируется для конкретной програ… twitter.com/i/web/status/1…
9:17Самое главное конечно - это что не надо создавать рантайм (или даже компилятор оптимизирующий) для каждого из языко… twitter.com/i/web/status/1…
9:22вот например как выглядит сложение github.com/graalvm/graalj…
Не самым приятным образом надо сказать, зато нигде не п… twitter.com/i/web/status/1…
Все естественно написано на Java который мне кажется достаточно похож на JS (у меня опыт в основном джава не судите… twitter.com/i/web/status/1…
9:25вот например kangax.github.io/compat-table/e… GraalVM сидит на 86%. 20.1 который вышел в мае - должен быть где-то 98+ (мне к… twitter.com/i/web/status/1…
9:27Насколько JS в GraalVM быстр? Это самый распространенный вопрос пожалуй. Ответов на него несколько. Самый главный к… twitter.com/i/web/status/1…
9:31прям дольше чем ты думаешь. И памяти отъест прилично (там же интерпретатор сначала -- он делает дерево из объектов,… twitter.com/i/web/status/1…
9:32но если действительно интересоваться то результаты прям ок. Вот например techempower benchmarks -- достаточно вменя… twitter.com/i/web/status/1…
9:34сценарии - веб приложения, скажем вернуть hello world, вернуть json, вернуть некоторые записи из базы данных, сдела… twitter.com/i/web/status/1…
9:35вот есть посмотреть на результаты про js: techempower.com/benchmarks/#se…
на первом месте некий es4x -- это такой нодоподо… twitter.com/i/web/status/1…
9:39для тех кто ленится тыкать в ссылки - вот pic.twitter.com/eH0NH6rJs0
вот когда говорят вещи как на картинке - конечно это с точки зрения backend разработчика неправда. Бякэнд теплый, л… twitter.com/i/web/status/1…
9:52но это просто потому что я во фронт не умею. Кто умеет - вы очень большие молодцы, я бы тоже так хотел чтоб вот дел… twitter.com/i/web/status/1…
9:53я вот так вижу комментарии -- давайте сразу "тред ненависти к" запилим. если вам хочется сказать какую-нибудь глупо… twitter.com/i/web/status/1…
9:58еще граальвм умеет делать полиглот приложения, такие где часть компонентов на одном языке, а часть на другом. так ч… twitter.com/i/web/status/1…
10:04что очень удобно когда все языки выглядят как интерпретаторы и деревья -- это сильно облегчает тулинг, потому что м… twitter.com/i/web/status/1…
11:16некоторые языки которые на базе граальвм но созданы не нашей командой а кем-то другим:
TruffleSqueak (smalltalk) -… twitter.com/i/web/status/1…
и со всем этим богатством можно интегрироваться из javascript/
11:20после обеда про браузер напишу (спойлер алерт: там не очень интересно). Пока что напишите может вопросов или про что было бы интересно
11:22тред про getting started. надо скачать граальвм: graalvm.org/downloads/
распаковать и положить в PATH, вызвать `j… twitter.com/i/web/status/1…
12:28можно использовать утилиту `gu` чтобы проинсталлировать остальные языки graalvm.org/docs/reference…
12:29вот так примерно будет выглядеть pic.twitter.com/MHNIR5BY6Z
можно например отсюда запустить node.js, и передать ему --jvm чтобы он запустился на базе jvm и например потрогать… twitter.com/i/web/status/1…
12:38выше видно что и js правильно работает и что мы взяли из java bigdecimal (класс для arbitraty precision decimal num… twitter.com/i/web/status/1…
12:41которые лучше чем любые другие библиотеки в мире npm. тогда можно их легко использовать. вот классический пример пр… twitter.com/i/web/status/1…
12:42и их можно вот так использовать для node приложений: medium.com/graalvm/using-… pic.twitter.com/B8FGQdUiei
кому интересно - попингуйте @bsideup, он очень интересно может рассказать как и что про testcontainers. Про граальв… twitter.com/i/web/status/1…
12:45сделаем простое приложение и запустим его, и посмотрим как оно работает. Восхитительно работает ничего не скажешь pic.twitter.com/DCEyEaDuw3
@jsunderhood Кажется этот ответ должен быть репостом, иначе его никто не увидит
ну так заретвить его. помоги распространить знания в массы
@jsunderhood Кажется этот ответ должен быть репостом, иначе его никто не увидит
14:01
Many JavaScript implementations implement Strings through "ropes" internally, to make concatenation fast. The Recor… twitter.com/i/web/status/1…14:33Rope is a data structure that combines benefits of lists and arrays:
– Concatenating while sharing.
– Relatively fa… twitter.com/i/web/status/1…
как node.js работает с граальвм джижком для js? на пальцах примерно так -- обычно там node и v8. есть некий v8.h ко… twitter.com/i/web/status/1…
14:35то есть когда запускаешь нашу ноду -- запускается прям нода-нода и только движок другой. например когда передан --j… twitter.com/i/web/status/1…
14:37то есть там обычный event-loop например, такой же как в обычной node.js
14:37можно например подумать что раз это работает, то мог бы работать например и электрон! и можно уже делать desktop пр… twitter.com/i/web/status/1…
14:41и вот тут-то мы подошли к браузеру! от электрона до браузера все-то ничего шажок. Технически можно встроить граальв… twitter.com/i/web/status/1…
14:43вот такая вот история, как и обещал - ничего интересного. но если у вас есть браузер -- напишите мне! это было бы о… twitter.com/i/web/status/1…
14:44# Вторник 18 твитов
@jsunderhood Node.js это круто! А как дела с Deno? Можно ли так же просто (или вообще) запустить его под GraalVM и… twitter.com/i/web/status/1…
Сначала минутка философии. Про "так же просто" подумай, мы (человечество) обманули песок, насыпали его пирамидками,… twitter.com/i/web/status/1…
@jsunderhood Node.js это круто! А как дела с Deno? Можно ли так же просто (или вообще) запустить его под GraalVM и… twitter.com/i/web/status/1…
9:09
Просто и легко только тогда когда кто-то сделал за нас сложную и тяжелую работу. Например по встраиванию граальвм вместо v8 в ноду.
9:10про дено новый тред, потому что так виднее а Дено - это интересно.
9:11@jsunderhood Node.js это круто! А как дела с Deno? Можно ли так же просто (или вообще) запустить его под GraalVM и… twitter.com/i/web/status/1…
Deno -- новая платформа от Ryan-a где видимо учтены все то что было не очень клево сделано в ноде:… twitter.com/i/web/status/1…
@jsunderhood Node.js это круто! А как дела с Deno? Можно ли так же просто (или вообще) запустить его под GraalVM и… twitter.com/i/web/status/1…
9:13
Typescript и JS для юзер кода, V8 в качестве движка. По идее можно так же как и с нодой заменить имплементацию v8.h… twitter.com/i/web/status/1…
9:19То есть встроить граальвм движок в дено мог бы быть достаточно прямолинейный процесс который требует в основном про… twitter.com/i/web/status/1…
9:31Typescript и JS для юзер кода, V8 в качестве движка. По идее можно так же как и с нодой заменить имплементацию v8.h… twitter.com/i/web/status/1…
Спрашивал Ryan'a про deno на @HolyJSconf в Питере в прошлом году. И это одна из моих самых любимых и запомнившихся… twitter.com/i/web/status/1…
Typescript и JS для юзер кода, V8 в качестве движка. По идее можно так же как и с нодой заменить имплементацию v8.h… twitter.com/i/web/status/1…
9:43
Про interop с java -- казалось бы, сделал что бы структуры даннах мапились друг на дружку, да функции вызывались и… twitter.com/i/web/status/1…
9:48или например вот так вот сделать -- что получится? pic.twitter.com/mPDsf3i8Jk
Про interop с java -- казалось бы, сделал что бы структуры даннах мапились друг на дружку, да функции вызывались и… twitter.com/i/web/status/1…
Как решается вопрос когда есть нечто что доступно в среде с доступным параллелизмом, но это нечно не thread safe?
Про interop с java -- казалось бы, сделал что бы структуры даннах мапились друг на дружку, да функции вызывались и… twitter.com/i/web/status/1…
13:31
что синхронизируем если на стороне джавы у нас много потоков, а объекты js не стоит трогать из нескольких сразу? Бы… twitter.com/i/web/status/1…
13:58Context -- это весь рантайм state для языков GraalVM, когда запускается кусочек JS или там питона, это происходит в… twitter.com/i/web/status/1…
14:02@jsunderhood По чесноку, такой интероп сложная и интересная штука, но хочется историй о том, как оно все жить помог… twitter.com/i/web/status/1…
Реплай к вот этому треду прям надо отдельным тредом -- кто и как использует граальвм.
@jsunderhood По чесноку, такой интероп сложная и интересная штука, но хочется историй о том, как оно все жить помог… twitter.com/i/web/status/1…
14:13
например вот так будет работать pic.twitter.com/xQoPFIAI0T
и вот это лучше гораздо объяснено в посте из которого эта картинка medium.com/graalvm/multi-…
14:27Еще про wasm в граальвм хотел рассказать. Но я там немного поверхностно знаю, поэтому лучше спрашивайте если интересно.
14:45А чуть не забыл -- можно вот сюда написать название библиотеки и узнать запускаем ли мы ее тесты на граальвм и как… twitter.com/i/web/status/1…
18:38у нас спрашивают: родной ли у меня русский язык. Русский у меня родной, но использую я его достаточно редко, в пись… twitter.com/i/web/status/1…
19:06# Среда 19 твитов
А стоит ли в 2k20 учить VIM? С чего начать?
ZZ лучше чем wq
А стоит ли в 2k20 учить VIM? С чего начать?
7:50
про интерпретаторы и деревья. Вот например кусочек кода типа `a = obj.prop` может быть представлен вот так. достато… twitter.com/i/web/status/1…
9:47дерево становится больше и все работает так же прекрасно. Позвольте, спросите вы, как же мы будем на каждый чих дер… twitter.com/i/web/status/1…
9:48ворри нот, так сказать! дерево в процессе соберет информацию (интепретатор конечно, не само дерево) и сначала пропа… twitter.com/i/web/status/1…
9:52ворри нот, так сказать! дерево в процессе соберет информацию (интепретатор конечно, не само дерево) и сначала пропа… twitter.com/i/web/status/1…
Частичные вычисления (partial evaluation) это очень крутая концепция, не новая, но крутая. Сейчас попробую на пальц… twitter.com/i/web/status/1…
ворри нот, так сказать! дерево в процессе соберет информацию (интепретатор конечно, не само дерево) и сначала пропа… twitter.com/i/web/status/1…
9:55
У программы есть 2 вида вводных данных, статические и динамические. Например конфигурация базы данных которая на ст… twitter.com/i/web/status/1…
9:57Пусть у нас есть программа -- специализатор, которая может взять программу, ее статические вводные и выдать програм… twitter.com/i/web/status/1…
9:59вот здесь с картинками хорошо объяснено: blog.sigfpe.com/2009/05/three-…
10:00для тех кто не тыкает в ссылки, представим, что вот в примере выше - f - это интерпретатор, s - наш JS, d - инпут н… twitter.com/i/web/status/1…
11:00потом эта смесь отдается джиту и все становится вменяемо быстро (или не становится, тут уж с какой стороны посмотреть на это)
11:00если применить spec (spec, f) = то получится компилятор
11:01но сейчас такого нет, тут нужно много новой работы проделать и научной и инженерной чтоб выяснить может ли такая ко… twitter.com/i/web/status/1…
11:04Частичные вычисления (partial evaluation) это очень крутая концепция, не новая, но крутая. Сейчас попробую на пальц… twitter.com/i/web/status/1…
Если совсем простым языком - интерпретатор и дерево станут единым представлением (например в виде графов компилятор… twitter.com/i/web/status/1…
Частичные вычисления (partial evaluation) это очень крутая концепция, не новая, но крутая. Сейчас попробую на пальц… twitter.com/i/web/status/1…
11:06
То как оптимизируется - хорошо описано вот здесь dl.acm.org/doi/10.1145/30… (если погуглить по названию наверняка есть препринт от авторов)
11:07То как оптимизируется - хорошо описано вот здесь dl.acm.org/doi/10.1145/30… (если погуглить по названию наверняка есть препринт от авторов)
Вообще если интересно про граальвм то надо брать и читать вот здесь подряд все. По несколько раз. Я регулярно переч… twitter.com/i/web/status/1…
То как оптимизируется - хорошо описано вот здесь dl.acm.org/doi/10.1145/30… (если погуглить по названию наверняка есть препринт от авторов)
11:08
#GraalVM #JavaScript 20.1.0 is now part of kangax.github.io/compat-table/e… Matching other major engines in terms of compati… twitter.com/i/web/status/1…12:15
там есть момент один что было бы хорошо если бы джит компилятор умел некоторые специальные штуки. граальвм компилят… twitter.com/i/web/status/1…
13:40когда компилятор не умеет эти штуки бывает медленнее чем когда умеет. Поэтому например JS engine можно запускать на… twitter.com/i/web/status/1…
13:41#GraalVM #JavaScript 20.1.0 is now part of kangax.github.io/compat-table/e… Matching other major engines in terms of compati… twitter.com/i/web/status/1…
Вот кстати, я говорил что 20.1 - он больше тестов в ES2016+ проходит из коробки (раньше надо было проперти дать тип… twitter.com/i/web/status/1…
#GraalVM #JavaScript 20.1.0 is now part of kangax.github.io/compat-table/e… Matching other major engines in terms of compati… twitter.com/i/web/status/1…
16:13
# Четверг 9 твитов
Что обычно является самым большим препятствием к использованию технологии? что все остальное с ней не работает. нап… twitter.com/i/web/status/1…
11:36возьмем к примеру то же самое приложеньице что и раньше: pic.twitter.com/SnD07OlYYc
запустим подсунув ему --inspect: pic.twitter.com/QBEe1Hxn0m
откроем это в хроме (надо убрать chrome-, там что-то поменялось, я еще не разобрался что) и вуаля дебаггер работает… twitter.com/i/web/status/1…
12:42опять же он и для других языков будет работать и там в Console можно к вящей радости своей джаву потрогать: pic.twitter.com/7CFlCB7Lad
возьмем к примеру то же самое приложеньице что и раньше: pic.twitter.com/SnD07OlYYc
Так же работают профайлер, code coverage, memory analysis.
возьмем к примеру то же самое приложеньице что и раньше: pic.twitter.com/SnD07OlYYc
14:40
А имплементация выглядит так что в дерево вставляются дополнительные вершины по маркерам. Типа на statement можно в… twitter.com/i/web/status/1…
14:43Таким образом языки получают поддержку инструментария практически нахаляву.
14:43То есть даром. И наоборот, если вы делаете какой-то инструмент для разработчиков, интеграция с граальвм даст вам по… twitter.com/i/web/status/1…
14:45# Пятница 26 твитов
Меня просили еще про деврел рассказать, интересно?
8:15в смысле я на самом деле все равно расскажу, меня же просили. так что это риторический вопрос
8:16Скажем у вас есть продукт. И каким-то образом у него целевая аудитория -- разработчики. Облако там свое, платформа… twitter.com/i/web/status/1…
8:24или например такой неочевидный продукт как сообщество по интересам где интересы включают в себя программирование ил… twitter.com/i/web/status/1…
8:27короче все о чем надо заботиться иначе оно сдохнет и к чему причастна тусовка IT -- это продукт которому может помочь деврел.
8:28короче все о чем надо заботиться иначе оно сдохнет и к чему причастна тусовка IT -- это продукт которому может помочь деврел.
Деврел - это такой маркетинг для software engineers (это как программисты, но в широком смысле слова - ops, devops,… twitter.com/i/web/status/1…
короче все о чем надо заботиться иначе оно сдохнет и к чему причастна тусовка IT -- это продукт которому может помочь деврел.
8:30
тут надо сказать это все мое мнение, мы люди простые, академиев не кончали, так что не принимайте за истину и/или близко к сердцу.
8:31смешная история была про чат деврел в телеграме, я туда случайно как-то попал -- там так много спорили что деврел а… twitter.com/i/web/status/1…
8:32Деврел - это такой маркетинг для software engineers (это как программисты, но в широком смысле слова - ops, devops,… twitter.com/i/web/status/1…
Люди, которые делают маркетинг для разработчиков -- за деньги или без, в рабочее или свободное время, случайно или… twitter.com/i/web/status/1…
Деврел - это такой маркетинг для software engineers (это как программисты, но в широком смысле слова - ops, devops,… twitter.com/i/web/status/1…
8:34
почему нельзя делать просто маркетинг как обычным продуктам? можно конечно. Но у меня есть такое чувство, что разра… twitter.com/i/web/status/1…
8:36поэтому делать маркетинг скажем Котлину как делают мартекинг хлебу и гироскутерам -- мне кажется не очень затея. Пр… twitter.com/i/web/status/1…
8:38потому что сразу видно когда текст например написан кем-то кто жизни разработческой и проблем простого населения ИТ не понимает.
8:39но на самом деле сама база marketing как науки никуда не девается. отсюда вывод -- книжки например надо читать про маркетинг!
8:44потому что сразу видно когда текст например написан кем-то кто жизни разработческой и проблем простого населения ИТ не понимает.
примерно когда в linkedin приходят и говорят о я вижу вы в javascript разбираетесь, нам очень надо очень срочно jav… twitter.com/i/web/status/1…
потому что сразу видно когда текст например написан кем-то кто жизни разработческой и проблем простого населения ИТ не понимает.
8:50
что делает деврел? сложно однозначно сказать. Особенно если в общем, а не что делает вот этот конкретный деврел. По… twitter.com/i/web/status/1…
8:53вот есть книжка -- amazon.com/dp/B07FKFQ1NK/… в которой конечно все написано. и конференции есть профильные. но на пра… twitter.com/i/web/status/1…
8:54Мэри так же еще в блоге писала про что является пользой от деврел -- devrel qualified lead -- это примерно как поте… twitter.com/i/web/status/1…
9:07что достаточно удобно - это гибкое определение которое подходит и под new potential hires и под sales и под авторст… twitter.com/i/web/status/1…
9:08marythengvall.com/blog/2019/12/1… вот конечно он
9:08marythengvall.com/blog/2019/12/1… вот конечно он
что же делает обычый деврел, не те кто управляет командой деврелов и отчитываются бизнесу, а day-to-day work так ск… twitter.com/i/web/status/1…
marythengvall.com/blog/2019/12/1… вот конечно он
9:11
это конечно зависит от конкретной роли и задач но в основном:
* служат каналом между командой продукта и разработч… twitter.com/i/web/status/1…
решаются обе сравнительно вменяемо созданием всяческого контента и общением со всеми вокруг:
* текст -- доки, обуч… twitter.com/i/web/status/1…
это позволяет немного управлять и тем как коммьюнити будет видеть ваш продукт, и немного приоритизацией разработки… twitter.com/i/web/status/1…
11:16или например с помощью того что ты концентрируешься на определенных мотивах использования или АПИ там например -- м… twitter.com/i/web/status/1…
11:23много что можно делать короче. Как-то так получается что со стороны кажется что вообще не сложно и нечего там делат… twitter.com/i/web/status/1…
11:24Как ввести фронтендера в ступор?Просто разместите в вакансии на JS-разраба вот такую картинку. pic.twitter.com/m7F5fqOA69
А вот на бякэнде самое то!
Как ввести фронтендера в ступор?
Просто разместите в вакансии на JS-разраба вот такую картинку. pic.twitter.com/m7F5fqOA69
15:08
# Воскресенье 2 твита
ну что, неделя подошла к концу. пока не отобрали пароль хочется сказать: будьте внимательны к друг-другу, мойте кон… twitter.com/i/web/status/1…
21:11@DmitryMakhnev есть, если вы начали читать книгу и вам не нравится -- ее не обязательно дочитывать! мне многие гово… twitter.com/i/web/status/1…
вот там тред с книжками:
@DmitryMakhnev есть, если вы начали читать книгу и вам не нравится -- ее не обязательно дочитывать! мне многие гово… twitter.com/i/web/status/1…
21:42
# Ссылки
other
- https://www.graalvm.org/docs/
- https://www.graalvm.org/downloads/
- https://www.graalvm.org/docs/reference-manual/install-components/
- https://www.graalvm.org/sdk/javadoc/org/graalvm/polyglot/Value.html
- https://github.com/graalvm/graaljs/
- https://github.com/graalvm/graaljs/blob/master/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/nodes/binary/JSAddNode.java
- http://github.com/oracle/graal
- https://github.com/oracle/graal/issues/361
- https://kangax.github.io/compat-table/es2016plus/
- https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite&l=zik0sf-1r
- https://brave.com/
- https://medium.com/graalvm/using-testcontainers-from-a-node-js-application-3aa2273bf3bb
- https://medium.com/graalvm/multi-threaded-java-javascript-language-interoperability-in-graalvm-2f19c1f9c37b
- https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2
- https://habr.com/ru/company/odnoklassniki/blog/480808/
- https://devblogs.nvidia.com/grcuda-a-polyglot-language-binding-for-cuda-in-graalvm/
- https://oracle.github.io/oracle-db-mle/releases/0.2.7/docker/
- https://nextjournal.com/kommen/react-server-side-rendering-with-graalvm-for-clojure
- https://vimeo.com/360837119
- http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html
- https://dl.acm.org/doi/10.1145/3062341.3062381
- https://engineering.shopify.com/blogs/engineering/understanding-programs-using-graphs
- https://www.amazon.com/dp/B07FKFQ1NK/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
- https://www.amazon.com/Managing-Humans-Humorous-Software-Engineering/dp/1430243147
- https://www.amazon.com/Telling-Lies-Fun-Profit-Fiction/dp/0688132286
- https://www.amazon.com/Art-Multiprocessor-Programming-Revised-Reprint/dp/0123973376
- https://www.marythengvall.com/blog/2019/12/14/devrel-qualified-leads-repurposing-a-common-business-metrics-to-prove-value
- https://www.amazon.co.uk/Marketing-Management-Philip-T-Kotler/dp/0132102927
- https://www.cs.princeton.edu/~appel/modern/
- https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
- https://legacy.gitbook.com/book/hintjens/social-architecture/details
- https://homotopytypetheory.org/book/