Media is too big
VIEW IN TELEGRAM
45. Creating AWS Variable Sets
Erik creates a variable set for the AWS network and cluster workspaces. This variable set provides the AWS credentials to Terraform Cloud so that any required networks and clusters can be created in AWS without the user needing to use the AWS UI.
#lesson
Erik creates a variable set for the AWS network and cluster workspaces. This variable set provides the AWS credentials to Terraform Cloud so that any required networks and clusters can be created in AWS without the user needing to use the AWS UI.
#lesson
Media is too big
VIEW IN TELEGRAM
46. Generating the AWS Services
Erik generates the AWS services and uses the AWS UI to highlight what was created by Terraform Cloud. SSH key pairs are still required to finish the automation. They can be generated from EC2 interface.
#lesson
Erik generates the AWS services and uses the AWS UI to highlight what was created by Terraform Cloud. SSH key pairs are still required to finish the automation. They can be generated from EC2 interface.
#lesson
Media is too big
VIEW IN TELEGRAM
47. Creating the Service Repo
Erik focuses on service infrastructure automation. One workspace will be configured to work with multiple cloud providers to simplify the architecture. The service repository is created and represents a service created by the development team
#lesson
Erik focuses on service infrastructure automation. One workspace will be configured to work with multiple cloud providers to simplify the architecture. The service repository is created and represents a service created by the development team
#lesson
Media is too big
VIEW IN TELEGRAM
48. Creating the Product Service Repo
Erik creates the automation repository for the service infrastructure. This repository deploys the service repos created by developers.
#lesson
Erik creates the automation repository for the service infrastructure. This repository deploys the service repos created by developers.
#lesson
Media is too big
VIEW IN TELEGRAM
49. Deploying a Service
Erik walks through deploying the service repository to AWS. When code and docker images are committed in the developer repositories, a GitHub action connects to AWS and pushes the image to ECS.
#lesson
Erik walks through deploying the service repository to AWS. When code and docker images are committed in the developer repositories, a GitHub action connects to AWS and pushes the image to ECS.
#lesson
Media is too big
VIEW IN TELEGRAM
50. Wrapping Up
Erik wraps up the course by discussing how automation could be extended further by abstracting the network and cluster resources. Workspace outputs can be referenced by related workspaces, which reduces the need to duplicate workspaces for new network resources.
#lesson
Erik wraps up the course by discussing how automation could be extended further by abstracting the network and cluster resources. Workspace outputs can be referenced by related workspaces, which reduces the need to duplicate workspaces for new network resources.
#lesson
Title: Bare Metal JavaScript: The JavaScript Virtual Machine
Description: Build a mental model of JavaScript's performance characteristics through understanding virtual machines under the hood.
Link: https://frontendmasters.com/courses/javascript-cpu-vm/
Time: 3 hours, 21 minutes
Lessons: 18 / 18
Tags: #course #frontendmasters #720p
Description: Build a mental model of JavaScript's performance characteristics through understanding virtual machines under the hood.
Link: https://frontendmasters.com/courses/javascript-cpu-vm/
Time: 3 hours, 21 minutes
Lessons: 18 / 18
Tags: #course #frontendmasters #720p
Frontendmasters
Learn how JavaScript VMs like Google’s V8 engine work | Advanced JavaScript Performance Techniques
Build a mental model of JavaScript's performance characteristics through understanding virtual machines under the hood.
Media is too big
VIEW IN TELEGRAM
1. Introduction
Miško Hevery provides an overview of the course topic, how JavaScript virtual machines connect physical computer hardware with the virtual world of JavaScript. Course topics include performance implications, double vs. triple equals, function calls, and arrays with holes.
- https://github.com/mhevery/JavaScriptVM under the hood/
#lesson
Miško Hevery provides an overview of the course topic, how JavaScript virtual machines connect physical computer hardware with the virtual world of JavaScript. Course topics include performance implications, double vs. triple equals, function calls, and arrays with holes.
- https://github.com/mhevery/JavaScriptVM under the hood/
#lesson
Media is too big
VIEW IN TELEGRAM
2. Physical & Virtual Machines
Miško discusses the virtual machine's role in the communication between code and the CPU. Parts of the CPU, including registers, arithmetic logic unit, and program counter and how they interact with memory, is also covered in this segment
#lesson
Miško discusses the virtual machine's role in the communication between code and the CPU. Parts of the CPU, including registers, arithmetic logic unit, and program counter and how they interact with memory, is also covered in this segment
#lesson
Media is too big
VIEW IN TELEGRAM
3. CPU Basics & Speed Limits
Miško walks through the basics of a CPU, including its registers and memory operations. The limitations of CPU speed and the techniques used to make CPUs faster, such as increasing clock speed, parallelism, and adding more cores.
- https://github.com/mhevery/JavaScriptVM under the hood/
#lesson
Miško walks through the basics of a CPU, including its registers and memory operations. The limitations of CPU speed and the techniques used to make CPUs faster, such as increasing clock speed, parallelism, and adding more cores.
- https://github.com/mhevery/JavaScriptVM under the hood/
#lesson
Media is too big
VIEW IN TELEGRAM
4. CPU Memory Management
Miško explores memory management and introduces the concept of a program section and a data section in CPU memory. How CPU registers are used to load, store, and manipulate data within these memory sections is also discussed in this segment.
#lesson
Miško explores memory management and introduces the concept of a program section and a data section in CPU memory. How CPU registers are used to load, store, and manipulate data within these memory sections is also discussed in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
5. CPU Subroutines & Calling Conventions
Miško explains the concept of subroutines, their primitive nature compared to functions, and the mechanics of calling a subroutine. How data is passed, how registers are managed, the risks of stack overflow, and the role of the stack pointer in preserving program state are also discussed in this segment.
#lesson
Miško explains the concept of subroutines, their primitive nature compared to functions, and the mechanics of calling a subroutine. How data is passed, how registers are managed, the risks of stack overflow, and the role of the stack pointer in preserving program state are also discussed in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
6. CPU Q&A
Miško answers student questions about the concept of computer RAM being similar to a massive array, how different registers within a CPU play specialized roles in performing operations, and how hardware architecture varies between CPU types. JavaScript engines, bridging the gap between high-level programming languages and low-level hardware operations is also covered in this segment.
#lesson
Miško answers student questions about the concept of computer RAM being similar to a massive array, how different registers within a CPU play specialized roles in performing operations, and how hardware architecture varies between CPU types. JavaScript engines, bridging the gap between high-level programming languages and low-level hardware operations is also covered in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
7. Fibonacci
Miško discusses the transition from low-level machine language to assembly language in computer programming, how assembly language provides a more human-readable and manageable way to work with machine-level instructions. The concept of subroutine calls and recursion using an example of implementing the Fibonacci sequence in assembly language is also covered in this segment.
#lesson
Miško discusses the transition from low-level machine language to assembly language in computer programming, how assembly language provides a more human-readable and manageable way to work with machine-level instructions. The concept of subroutine calls and recursion using an example of implementing the Fibonacci sequence in assembly language is also covered in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
8. Optimizing Code
Miško discusses the trade-off between speed and memory in programming, how modern virtual machines analyze code for constants, inline functions for optimization, and deopt. A student's question regarding the performance of function declaration compared to function expression is also covered in this segment.
#lesson
Miško discusses the trade-off between speed and memory in programming, how modern virtual machines analyze code for constants, inline functions for optimization, and deopt. A student's question regarding the performance of function declaration compared to function expression is also covered in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
9. Deopt Explorer & Fixing a Deopt
Miško introduces a tool called deopt explorer, which provides insights into the performance of JavaScript code running in V8, the JavaScript engine used in Node.js. How to generate a log of V8's compilation and optimization events and how to analyze this log using deopt explorer is also covered in this segment.
#lesson
Miško introduces a tool called deopt explorer, which provides insights into the performance of JavaScript code running in V8, the JavaScript engine used in Node.js. How to generate a log of V8's compilation and optimization events and how to analyze this log using deopt explorer is also covered in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
10. Object Shapes & Hidden Classes
Miško discusses the performance implications of property reads in JavaScript objects and the impact of polymorphic behavior and inline caching. How JavaScript objects are represented internally in V8 and how hidden classes are used to optimize property access are also discussed in this segment.
#lesson
Miško discusses the performance implications of property reads in JavaScript objects and the impact of polymorphic behavior and inline caching. How JavaScript objects are represented internally in V8 and how hidden classes are used to optimize property access are also discussed in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
11. Object Shapes & Inline Caching
Miško demonstrates the performance implications of using inline caching, discusses how inline caches work, and how they can optimize property access. Consider the shape of objects in your code and how inline caches can impact real-world performance, especially in complex frameworks and applications.
#lesson
Miško demonstrates the performance implications of using inline caching, discusses how inline caches work, and how they can optimize property access. Consider the shape of objects in your code and how inline caches can impact real-world performance, especially in complex frameworks and applications.
#lesson
Media is too big
VIEW IN TELEGRAM
12. Inspecting Inline Caches with Deopt Explorer
Miško demonstrates using deopt explorer to analyze JavaScript code, highlighting various aspects such as inline caches, deoptimizations, and object shapes The significance of monomorphic and polymorphic reads in optimizing code execution is also discussed in this segment.
#lesson
Miško demonstrates using deopt explorer to analyze JavaScript code, highlighting various aspects such as inline caches, deoptimizations, and object shapes The significance of monomorphic and polymorphic reads in optimizing code execution is also discussed in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
13. Double & Triple Equals
Miško discusses how JavaScript's equality operators, triple equals (strict equality) is generally faster than double equals (loose equality) due to the absence of type coercion. A demonstration of how adding properties to objects or prototypes can unexpectedly impact the performance of double equals comparisons is also provided in this segment.
#lesson
Miško discusses how JavaScript's equality operators, triple equals (strict equality) is generally faster than double equals (loose equality) due to the absence of type coercion. A demonstration of how adding properties to objects or prototypes can unexpectedly impact the performance of double equals comparisons is also provided in this segment.
#lesson
Media is too big
VIEW IN TELEGRAM
14. Object & Array Copying
Miško discusses using JSX, which converts into object literals, leading to potential performance issues when converting these object literals into DOM attributes. Benchmark comparisons between different approaches, such as using objects, arrays, and copying objects, to highlight the performance differences and considerations when working with JSX in real applications are also provided in this segment.
#lesson
Miško discusses using JSX, which converts into object literals, leading to potential performance issues when converting these object literals into DOM attributes. Benchmark comparisons between different approaches, such as using objects, arrays, and copying objects, to highlight the performance differences and considerations when working with JSX in real applications are also provided in this segment.
#lesson