Jenia
Jenia "JeB" Barabanov

@jebbacca

Followers
333
Following
481
Media
77
Statuses
650

Performance Tech Lead @Wix | @[email protected] | Author of @angular-builders and jest-marbles | drummer | https://t.co/p4NPNGnnKh | https://t.co/LxMZh5gq6T

Joined February 2018
Don't wanna be here? Send us removal request.
@WixEng
Wix Engineering
2 years
If you're attending @WebdevconNL, be sure not to miss @jebbacca's great talks on Mar 15: 1. "Unleashing Web #Performance: Mastering JavaScript Optimization and Real-World Responsiveness". 2. "Browser Fundamentals: From Macro To Micro". πŸ’ͺ Good luck @jebbacca!
2
2
9
@jebbacca
Jenia "JeB" Barabanov
2 years
Interestingly, as per spec, `prompt` and `confirm` demand the user agent to pause the execution, while for `alert` it is optional. I assume it's mostly historical, but does anyone have a good explanation for this? https://t.co/RNCCBGqg2L
2
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Never, you hear me, never use `window.prompt` if you want to have good INP (or good UX for that matter). It blocks the main thread. Same goes for `alert` and `confirm`. I wonder what the valid use cases are for using these, does anyone have an idea? #webperf
3
1
2
@alonkochba
Alon Kochba
2 years
Landed some big improvements for INP last month, sites built on @Wix are now in much better shape for the upcoming replacement of FID. Starting to get the hang of this new metric, more to come.. 🌎 71.8% (↑ 13.7%) had good INP globally πŸ‡ΊπŸ‡Έ 90.8% (↑ 6.3%) had good INP in the US
6
6
41
@jebbacca
Jenia "JeB" Barabanov
2 years
0
0
1
@jebbacca
Jenia "JeB" Barabanov
2 years
Hi #Angular folks! Happy to share that we, at @angular-builders, have just released a new ESBuild builder that allows extending ESBuild config with plugins. Credit goes to @overthesanity, who did most of the work, and to everyone who contributed to the effort. Link πŸ‘‡.
2
6
33
@WebdevconNL
Webdevcon
2 years
Session announcement: Jeb Barabanov (@jebbacca) will give a lightning talk titled "Unleashing Web Performance: Mastering JavaScript Optimization and Real-World Responsiveness". Don't miss this insightful session at Webdevcon! More details on https://t.co/EVKxfT6EP5.
0
1
2
@WebdevconNL
Webdevcon
2 years
Session announcement: Jeb Barabanov (@jebbacca) will present a session titled "Browser Fundamentals: From Macro to Micro" at Webdevcon. Don't miss this insightful deep dive into browser internals. Get tickets and view the full schedule on our site at https://t.co/EVKxfT6EP5.
0
1
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Performance-wise Map can be twice as fast as Object, especially in scenarios involving frequent additions and removals of key-value pairs. Let's say you won't get far on @LeetCode using Objects for dictionariesπŸ˜‰.
0
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Main functional differences (Object): ❌ Only strings and symbols as key. ❌ No order guarantee. ❌ Has to use 'Object.keys' to determine size. ❌ Non-iterable. ❌ Inherits Object.prototype (junk properties). ❌ Exposed to object injection attacks. βœ… Serializable to JSON.
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Main functional differences (Map): βœ… Any data type as key. βœ… Maintains insertion order. βœ… Dedicated 'size' property. βœ… Iterable. βœ… No prototype chain (clean). βœ… Safer to use with user-provided keys. ❌ No built-in serialization.
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Whenever you create a new Object dictionary in your JS codebase, think twice; maybe Map is a better choice πŸ‘‡.
1
0
2
@jebbacca
Jenia "JeB" Barabanov
2 years
3. Execution: Running the bytecode. The important thing here is that all 3 phases happen on-demand, meaning only when a piece of JS is "invoked", does it go through these phases. (7/7)
0
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
This optimized code can then be executed directly on the processor without the need for any abstraction layer. (6/7)
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
2. Compilation: Using an interpreter to turn the AST into bytecode, and further optimizing parts of this bytecode, such as frequently used functions or variables, into machine code with the help of a JIT compiler. (5/7)
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
These are the phases that JavaScript goes through in the Chrome's V8 engine: 1. Parsing: Breaking the code into smaller pieces and converting it into an Abstract Syntax Tree (AST). (4/7)
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Therefore, if you arrange your code properly, you can have a large bundle without blocking the main thread at all. (3/7)
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
On the contrary to popular belief, JavaScript is not instantly loaded by a browser as soon as the bundle is downloaded. Instead, it goes through several phases every time it needs to be evaluated, i.e., when requested. (2/7)
1
0
0
@jebbacca
Jenia "JeB" Barabanov
2 years
Here's a sneak peek into a talk I'm going to deliver at @liberty_js on October 12th in Philadelphia. I am gonna talk about web app optimizations, with a particular focus on JavaScript optimizations. Hope to see you there! And now about what happens here πŸ‘‡ (1/7) #webperf
2
6
10
@jebbacca
Jenia "JeB" Barabanov
2 years
Half the feed is Typescript drama. What’s going on? Who can catch me up on this πŸ˜…?
4
0
2