Slava Egorov Profile Banner
Slava Egorov Profile
Slava Egorov

@mraleph

11,320
Followers
626
Following
1,937
Media
25,863
Statuses

👋compiling compilers @Google // overall tech lead for the @dart_lang programming language @mraleph @mastodon .social

Aarhus
Joined July 2009
Don't wanna be here? Send us removal request.
Pinned Tweet
@mraleph
Slava Egorov
2 years
me developing software (2022 edition)
Tweet media one
5
6
81
@mraleph
Slava Egorov
9 years
I would not recommend sending kisses emoji to people with Firefox OS
Tweet media one
136
12K
10K
@mraleph
Slava Egorov
12 years
No SciFi author foresaw this: we are building clans around languages we speak to the Machine.
47
3K
1K
@mraleph
Slava Egorov
7 years
I think I had enough of blogging, now lets try something with a plot
Tweet media one
24
95
519
@mraleph
Slava Egorov
7 years
"Maybe you don't need Rust and WASM to speed up your JS"
12
198
503
@mraleph
Slava Egorov
3 months
Today I am stepping into a new role on the @dart_lang team: I will be taking care of overall technical direction of the project as an uber-TL. Very excited to work across the whole Dart platform and together with my Flutter peers tackle all the challenges ahead of us.
64
18
486
@mraleph
Slava Egorov
7 years
behold: the cleanest piece of JavaScript you have seen in your life
Tweet media one
19
141
379
@mraleph
Slava Egorov
10 years
"recent studies showed that humans are using only 15% of C++ features... it is also estimated that dolphins are capable of using 20% of C++"
14
542
347
@mraleph
Slava Egorov
9 years
latency numbers every programmer should know
Tweet media one
3
286
262
@mraleph
Slava Egorov
9 years
- My salary allows me to buy a 130m apartment in SF. - 130 m^2 you wanted to say? - No, my salary is not enough to break into 2nd dimension.
4
165
260
@mraleph
Slava Egorov
3 years
In 2.15 we finally enable lightweight isolates (isolates that look isolated to developer - but share garbage collected heap internally) across all execution modes. This has been 3 years of deep work in the very guts of our runtime system 🎉🎉🎉
@dart_lang
Dart Language
3 years
🥳 Announcing Dart 2.15 🥳 Learn all about new Dart SDK features: ✔️ Faster concurrency with worker isolates ✔️ Constructor tearoffs ✔️ Improved enums ✔️ New features for package publishers Read the article by @MiSvTh
Tweet media one
11
168
691
10
26
231
@mraleph
Slava Egorov
5 months
If you like @dart_lang and @FlutterDev the best you can do is to build new things with them - the code will outlive and outweight any and all Twitter discussions. Don't waste your time arguing - put it to better use: dream and create.
8
28
221
@mraleph
Slava Egorov
8 years
presented without a comment
Tweet media one
7
153
192
@mraleph
Slava Egorov
9 years
here are my #GOTOChgo slides http://t.co/yeNX6jVWFF, mostly already seen examples but also some new http://t.co/qBrcgsw58d
Tweet media one
14
155
186
@mraleph
Slava Egorov
2 years
And so 4301 days after I pre-ordered it for the first time, it has finally arrived
Tweet media one
6
10
185
@mraleph
Slava Egorov
7 years
best kept #golang secret: their backend is written using abstraction over types, which they deny to the developers #trololol
Tweet media one
5
104
181
@mraleph
Slava Egorov
10 years
so I made this gdb patch http://t.co/aEq5C3c01a
Tweet media one
6
207
181
@mraleph
Slava Egorov
11 years
often devs still approach performance of JS code as if they are riding a horse cart but the horse had long been replaced with fusion reactor
7
154
169
@mraleph
Slava Egorov
3 years
language design choices are not made by counting emojis under GitHub issues
12
12
147
@mraleph
Slava Egorov
3 years
skills you need to know as a software engineer: 1) empathy 2) reading unfamiliar code 3) asking the right questions 3) zooming in and out on the big picture 5) sometimes it helps to know how to count.
7
28
145
@mraleph
Slava Egorov
2 years
are you working with Dart/Flutter and suffering from slow IDE / completion / analysis? You feel like the tooling does not scale for your code base? I am looking to chat with people who are in this spot.
32
20
141
@mraleph
Slava Egorov
5 years
["10 years at Google" a thread] so 10 years ago on 24 of February 2010 I crossed Danish border for the first, second and third time in my life. All within 30m... It was because I forgot my laptop on the pre-border security check, and had to go back to pick it up (1/n)
3
9
139
@mraleph
Slava Egorov
3 years
Tweet media one
1
7
137
@mraleph
Slava Egorov
8 years
Tweet media one
4
95
134
@mraleph
Slava Egorov
7 years
imagine the world where people easily admit that their favorite programming language is not the best tool for every job and every developer
8
39
130
@mraleph
Slava Egorov
8 years
javascript performance tips and tricks
Tweet media one
6
70
127
@mraleph
Slava Egorov
3 years
language design is freaking hard: I really wish Dart 1 did not try to be *soooo* simple and familiar, we would not spend years digging us out of the hole initial design has put us in
10
17
128
@mraleph
Slava Egorov
8 months
I have no plans to go anywhere. So many exciting plans for Dart in 2024 💪 But remember that a team is always greater than an individual. Behind 1 visible Dart/Flutter team members there are 10 who turn actual gears and make things happen
@lesnitsky_dev
Andrei Lesnitsky 💙
8 months
Hope @mraleph stays in the Dart team for as long as he feels like compiling compilers, otherwise, what's the point
0
0
25
3
7
128
@mraleph
Slava Egorov
2 years
Are you a Flutter/Dart developer? Have you been significantly hindered by Dart's current concurrency model (isolates)? I would like to chat with you. We have done a lot to improve isolates in the past years - but I would like to gather some real-world issues / road blocks.
14
22
121
@mraleph
Slava Egorov
7 years
ain't no CS degree will prepare you for the Tower of Babel that is modern software engineering
2
29
120
@mraleph
Slava Egorov
1 year
I am still puzzled why various Flutter tutorials recommend splitting apps into subpackages. Packages are for publishing, independent versioning and independent reuse. If you don't do either of these things - you don't really need packages.
26
16
113
@mraleph
Slava Egorov
4 months
do *not* use custom platform packages developed by third-parties unless you want to loose tree-shaking of conditionally used code for now use as @TechnicalKn0ck suggests
@biz84
Andrea Bizzotto 💙
4 months
Did you know? If your code checks the current platform with Platform.isIOS, you’ll get a runtime exception when you run on Flutter web. 💥 As an alternative, consider using the UniversalPlatform package, which works on all platforms and offers a unified syntax. 👍
Tweet media one
16
27
171
10
18
116
@mraleph
Slava Egorov
7 years
next time somebody is gonna say "but you can *just* use LLVM!" I am gonna link them to this @whitequark 's comment
3
50
110
@mraleph
Slava Egorov
6 years
I published "Introduction to Dart VM, Section 1: How Dart VM runs your code?", check it out
3
40
112
@mraleph
Slava Egorov
3 years
@bunopus Вот такая философия и привела нас туда, где мы оказались. В ней отсутствует одно важное звено - она создаёт иллюзию, что есть "большие" и "маленькие" люди - и большие люди наделены какими-то особыми правами на изменения мира - тогда как в реальности все люди маленькие.
2
4
109
@mraleph
Slava Egorov
8 years
"don't let programming languages that you like define your identity... define your identity based on the languages you hate."
Tweet media one
8
46
111
@mraleph
Slava Egorov
5 months
When the language has no garbage collector - that's just because *you*, the developer, are the garbage collector.
@bitfield
John Arundel
5 months
The genius of Go is that it has a garbage collector. The genius of Rust is that it doesn't need one.
16
21
307
9
14
111
@mraleph
Slava Egorov
5 months
What's your biggest issue with Dart? Hit me with everything - here or in the DMs.
90
14
109
@mraleph
Slava Egorov
8 years
Adventures in the land of substrings and RegExps (or making less_dart 7x faster)
4
66
107
@mraleph
Slava Egorov
6 months
I started looking at JsonDecoder performance (or more specifically its hidden variant which you get by fusing JsonDecoder with Utf8Decoder). My goal is to get it as close to V8's JSON.parse as possible *without* rewriting it to C++.
15
5
102
@mraleph
Slava Egorov
3 years
fuck. this. shit. 🖕
1
5
101
@mraleph
Slava Egorov
6 months
My opinion: you should never ever use FutureOr - its a sign something is wrong with your API. The only reason FutureOr exists is poorly designed APIs of Dart 1 which were shoehorned into Dart 2 era using FutureOr to avoid breaking changes
@SandroMaglione
Sandro Maglione
6 months
💡 Dart tip 💡 Do you know about `FutureOr` in @dart_lang ? 🤔 It allows to execute either sync or async 🔄 Here is how to use it 👇
Tweet media one
2
4
33
15
10
98
@mraleph
Slava Egorov
11 months
JS community is having a revelation that if you not only write your JS as C, but you also compile it as C then your performance is going to be veeeeery close to C. 🤯
9
4
96
@mraleph
Slava Egorov
11 months
If you are curious how Dart VM is developed you watch me durdling around in the sources and listen to the sound of my keyboard
3
14
95
@mraleph
Slava Egorov
9 months
What do you expect from @dart_lang in 2024?
66
9
95
@mraleph
Slava Egorov
4 years
just because I can
Tweet media one
Tweet media two
9
6
93
@mraleph
Slava Egorov
7 years
array is a linked list with links going through the 4th dimension and therefore invisible to us 3d simpletons.
2
24
92
@mraleph
Slava Egorov
9 years
how I imagine I look when writing code (2015 edition) http://t.co/LkBVzuIfV4
Tweet media one
4
10
92
@mraleph
Slava Egorov
4 years
step 1: make a five lines fix step 2: write a test for a fix step 3: refactor some code to make test possible step 4: refactor uncovers that our components depend on each other in rather messy way step 5: 195 files changed, 687 insertions(+), 608 deletions(-)
4
14
90
@mraleph
Slava Egorov
3 years
я не знаю, как у вас, а у меня кукуха тихо едет
14
1
86
@mraleph
Slava Egorov
4 months
performance tip #0 : for any sort of performance sensitive binary data processing 1. never use any of high-level List manipulation helpers 2. avoid redundant copies You can be amazed how fast things would go if you just follow these two things.
@jpohhhh
James O'Leary
4 months
TIL Dart: BytesBuilder, in `typed_data`. Lets you efficiently combine byte arrays without copying. Merging 60 x 16 KB Uint8Lists went from ~7 ms to 0 ms (it's an abstraction for only sending audio bytes with voice in them to Whisper in FONNX)
Tweet media one
Tweet media two
1
3
32
3
10
90
@mraleph
Slava Egorov
9 months
JS is extremely flexible dynamically typed language TS for obvious reasons (incremental adoption) bends backwards to find a way to statically type all convoluted JS code in the world. end result: both the code and types (and type system) are convoluted.
12
9
87
@mraleph
Slava Egorov
7 years
a very interesting paper about JSON "parsing" using SIMD (or rather extracting data from JSON without parsing)
6
35
89
@mraleph
Slava Egorov
5 years
when I was a child I had a book with walkthroughs for computer games, which I sometimes read in the evening like a science fiction... cause I did not have a computer or those games.
7
4
86
@mraleph
Slava Egorov
8 years
V8 joins esteemed company of GCC, LLVM, Z3, Coq, GHC and Jikes as a recipient of SIGPLAN Programming Languages Software Award \o/
0
43
87
@mraleph
Slava Egorov
12 years
Explaining JavaScript VMs in JavaScript. http://t.co/RVRLI9gN
3
60
82
@mraleph
Slava Egorov
6 years
I made an empty HTML file and opened it in VS Code - that means my empty project now depends on more than 7 million lines of code made by god knows whom. o tempora, o mores!
6
8
84
@mraleph
Slava Egorov
6 months
Ребёнок просит на ночь читать ему стихи Хармса 👍 Начал читать и внезапно узнал из одного стиха, что тротуар раньше называли панелью. Я дядя 38ми лет и только сейчас понял откуда "стоять на панели" происходит - до этого я все время про какие-то строительные панели думал 🫣
6
7
86
@mraleph
Slava Egorov
7 years
javascript framework is basically a virus that spreads around by infesting JS devs and instructing them to replicate it.
3
41
82
@mraleph
Slava Egorov
1 year
And here I was thinking that Rust is the most infuriating thing industry can come up with, but the porcelain spiderweb of types people weave in TypeScript beats even Rust.
@saltyAom
SaltyAom
1 year
The logic The type
Tweet media one
Tweet media two
27
90
857
9
15
83
@mraleph
Slava Egorov
4 years
please don’t say “Flutter is fast because Dart is compiled to native machine code in release builds” You can compile almost anything to machine code - does not mean it’s going to be fast
3
8
84
@mraleph
Slava Egorov
2 years
the microbenchmark used to generate these numbers contains a flaw which is what causes the slow down, not minus-zero. ironically it is -1 that wreaks havoc here
@mhevery
Miško Hevery (AngularJS/Angular/Qwik)
2 years
`a = 0-x` is about 3-10x faster than `a = -x` 🤯 Let's jump into JavaScript VM details to see why and how to guard against this VM de-opt: 🧵🪡🧶
Tweet media one
61
805
4K
2
15
83
@mraleph
Slava Egorov
7 years
all programming languages are awful, yet there are people enjoying all of them. so let them have some fun.
2
25
81
@mraleph
Slava Egorov
3 years
Dart team will be hiring in Munich and Waterloo. We have a whole bunch of positions related to internal infra as well as external tooling and core Dart ecosystem. In addition we are always on a look out for VM/compiler/PL engineers. DM me if interested.
5
24
81
@mraleph
Slava Egorov
6 years
when I was interviewing at Google 9 years ago 4th interviewer asked me to count set bits in 32-bit word. I wrote a loop and told them to consult “Hacker’s Delight” if they want something “fancy”. Still got hired somehow ¯\_(ツ)_/¯
4
5
80
@mraleph
Slava Egorov
2 years
adding shared memory multithreading to @dart_lang
Tweet media one
8
5
79
@mraleph
Slava Egorov
1 year
pun intended?
Tweet media one
4
4
78
@mraleph
Slava Egorov
3 years
you might think that we only work on Dart in Aarhus - well, that's not really true :) There is also a team working on Android related technologies (R8/D8) and Kotlin. This team is hiring now:
0
25
79
@mraleph
Slava Egorov
19 days
Here are my slides from @FlutterNFriends :
4
9
76
@mraleph
Slava Egorov
19 days
One thing I found surprising: not that many people actually approached me to talk and many of those who approached started with "I dont want to bother you". You are not bothering me - I am here to chat with everybody who wants to ask me!
4
1
76
@mraleph
Slava Egorov
6 years
my wife “hacked” a webshop by accident: she put few things into a basket, then switched web site language which seamingly emptied the basket, then placed same things again and ordered - now we got a package with double of everything but we paid for single 🤔
6
10
74
@mraleph
Slava Egorov
11 years
year 2013: Haskell people are still writing monad tutorials, JavaScript people are still trying to explain inheritance.
8
232
72
@mraleph
Slava Egorov
6 years
I have been going through my Google+ stuff to see if I have anything to archive...
Tweet media one
4
4
74
@mraleph
Slava Egorov
8 years
I used to think that parsers are a long solved problem, but then I looked into less.js implementation
Tweet media one
8
42
75
@mraleph
Slava Egorov
8 months
Tweet media one
3
1
74
@mraleph
Slava Egorov
7 years
saying that ClojureScript / Elm / ReasonML are "JavaScript flavors" is like saying that tea is a flavor of coffee.
8
13
73
@mraleph
Slava Egorov
5 years
🥳🥳🥳
Tweet media one
3
11
74
@mraleph
Slava Egorov
7 years
lets make a collection: what’s your top 3 favorite PL implementation related paper of 2017 (reply with a paper & RT for outreach)
7
46
72
@mraleph
Slava Egorov
7 years
controversial opinion: whiteboard interviews allow to check soft skill as much as coding/algo skills. If you throw a kindergarten level tantrum facing a 5 liner then you are probably lacking in both departments.
8
14
74
@mraleph
Slava Egorov
7 years
and now with comparison against Rust+WASM version /cc @steveklabnik @samccone ->
Tweet media one
Tweet media two
1
20
72
@mraleph
Slava Egorov
7 years
holy duck, the node.js governance structure is as overengineered as the javascript ecosystem itself
4
15
67
@mraleph
Slava Egorov
6 months
My wife always makes fun of me for my choice of Linkedin profile photos
Tweet media one
3
0
70
@mraleph
Slava Egorov
2 years
after years of waiting... pattern matching is coming to @dart_lang 🚀
@LeafPetersen
Leaf Petersen
2 years
The patterns proposal (also from @munificentbob , he's on a tear) is also looking fantastic: . I'm pretty excited about this one.
8
31
156
1
7
69
@mraleph
Slava Egorov
1 year
Life is too short to waste time debating hot takes on Twitter. Just keep shipping.
2
6
66
@mraleph
Slava Egorov
1 year
Dart on the shore
Tweet media one
0
5
67
@mraleph
Slava Egorov
2 years
me gluing a variable length array to the end of the struct
Tweet media one
0
3
67
@mraleph
Slava Egorov
2 months
I looked at the issue with thread pool implementation in Dart VM - wanted to fix it discovered I need to slightly change locking helpers in VM wanted to cleanup duplication between VM core and IO impl discovered IO impl on Win relies on recursive locking (╯°□°)╯︵ ┻━┻
2
2
69
@mraleph
Slava Egorov
5 months
@Dev_Salem0 I am with you on this one. Macros (first party data class macro) might be the most likely short term solution - but I am also trying to get traction on things like primary constructors. Stay tuned - 2024 is the year we finally make some progress on this cc @MiSvTh @LeafPetersen
3
1
68
@mraleph
Slava Egorov
4 years
When somebody says that reference counting is better than GC 🤷‍♂️
Tweet media one
7
14
64
@mraleph
Slava Egorov
3 years
Dart team has an opening in Zurich on the subteam which is responsible for the process and infrastructure for bringing latest-and-greatest Dart SDK releases into Google's internal monorepo. DM me if you want to apply or you would like to know more.
3
16
65
@mraleph
Slava Egorov
3 years
how in one picture show that you don't know neither of three languages well enough to understand and appreciate the ways in which they all differ from each other
@fireship_dev
Fireship
3 years
What the hell is Dart? #Flutter
Tweet media one
40
196
2K
5
12
65
@mraleph
Slava Egorov
9 years
"Measuring Polymorphism in Python Programs" interesting paper from DLS
Tweet media one
2
48
64
@mraleph
Slava Egorov
4 years
recruiter: we are looking for experienced Flutter developers me: I can hand craft Dart AOT snapshots in hex editor, that good enough?
4
1
64
@mraleph
Slava Egorov
9 months
the problem is not dynamic typing - it's the obscene amounts of code that people write to do simplest things. if you keep simple things simple and avoid proliferating complexity then you would not need to create solutions for managing this complexity.
9
11
64
@mraleph
Slava Egorov
10 months
I honestly don't understand how people do code reviews on GitHub. It's just such a awful experience even when compared to freaking Rietveld
15
1
64
@mraleph
Slava Egorov
7 years
honouring all those list subscription requests ->
0
18
63
@mraleph
Slava Egorov
2 years
New Year present has arrived! Thanks to @kinesisergo & @UpgradeKB
Tweet media one
6
3
63
@mraleph
Slava Egorov
11 months
me compiling a trivial Flutter app and then casually scrolling through the disassembly
Tweet media one
2
0
62