Uploaded May 2021 | Updated September 2026, 2 weeks ago
In this video we're building a runtime library that allows us to define more powerful classes. More specifically, it'll give us the ability to write strongly typed and overloadable constructors and methods.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo: github.com/francisrstokes/Classiest
In this video we're building a runtime library that allows us to define more powerful classes. More specifically, it'll give us the ability to write strongly typed and overloadable constructors and methods.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo: github.com/francisrstokes/Classiest
![[stream] File System Hacking: Building A FAT32 Layer On Top Of The SD-Card Driver
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: [stream] File System Hacking: Building A FAT32 Layer On Top Of The SD-Card Driver](https://i.ytimg.com/vi/GMkjey1FTe0/mqdefault.jpg)
![Building an ENCODER for the Quite OK Image Format (QOI)
The Quite OK Image Format (qoi) is a lossless compression image format that has similar performance to PNG, but with substantially faster encoding and decoding, making it a great choice for embedded systems.
In this video were going to be writing an encoder in TypeScript, which allows us to take raw RGBA pixels and compress them using the algorithms specified by QOI.
In the next video, well write the corresponding decoder - and together these two components will allow us to take most common image formats and transform them to QOI, as well as being able to display QOI images in the browser.
=[ 🔗 Links 🔗 ]=
- The QOI format: https://qoiformat.org/
- Dominic Szablewski (the creator): https://twitter.com/phoboslab
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/LowLevelJavaScript/QOI Building an ENCODER for the Quite OK Image Format (QOI)](https://i.ytimg.com/vi/GgsRQuGSrc0/mqdefault.jpg)
![Assembler Hacking: Structures (16-Bit VM in JavaScript 015)
In this episode, were going to implement structures. This feature allows a programmer to treat a symbolic name (referring to a memory address) as a particular kind of structured data.
00:00 - Intro
00:30 - What do structures do in LLJS Assembly?
02:17 - Implementing the structure parser
04:23 - Implementing the interpret as structure parser
06:22 - Writing a test program in assembly
06:43 - Tracking structure types in the assembler
08:41 - Reinterpreting symbols as structures in the assembler
10:40 - Testing structures by generating real machine code
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
=[ 🔗 Links 🔗 ]=
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- Assembly language tour (16-Bit VM ep 7) : https://youtu.be/ai63l4OUxSs
- Data directives: https://en.wikipedia.org/wiki/Assembly_language#Data_directives
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine Assembler Hacking: Structures (16-Bit VM in JavaScript 015)](https://i.ytimg.com/vi/GkipKe0S_5E/mqdefault.jpg)
![Bare Metal Bit Banging: WS2812B Driver
In this video, we examine the WS2812B RGB LED device, and write a bit-banged driver from scratch for an STM32 microcontroller.
Chapters
00:00 What is a WS2812 / NeoPixel
02:33 Hardware overview
06:00 What is a device driver?
08:35 The signalling protocol
15:00 Reviewing the datasheet
22:00 Figuring out the GPIO timing
49:32 First LED test
53:36 Implementing the driver interface
=[ 🔗 Links 🔗 ]=
🎥 Bare metal playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/stm32-ws2812b Bare Metal Bit Banging: WS2812B Driver](https://i.ytimg.com/vi/KUklOA91nk0/mqdefault.jpg)
![Tour Through The Assembly Language and The Assembler (16-Bit VM in JavaScript 007)
In this episode were going to take a break from building functionality in the virtual machine and take a tour through the assembly language that this VM will support, and some features of the assembler - which will turn that assembly language into machine code.
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- arcsecond: https://github.com/francisrstokes/arcsecond
- Parser Combinators From Scratch: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU Tour Through The Assembly Language and The Assembler (16-Bit VM in JavaScript 007)](https://i.ytimg.com/vi/KhKq8a1m8r8/mqdefault.jpg)
![How does an OS boot? //Source Dive// 001
In this installment of //Source Dive//, were learning about the xv6 Operating System; Specifically the low-level boot code that gets the CPU in the correct state to run the OS!
=[ 🔗 Links 🔗 ]=
🐋 RISC-V Docker Image: https://github.com/francisrstokes/rv-toolchain-docker/pkgs/container/rv-toolchain-docker
🎥 Series Playlist:
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/mit-pdos/xv6-riscv How does an OS boot? //Source Dive// 001](https://i.ytimg.com/vi/KkenLT8S9Hs/mqdefault.jpg)
![Implementing A Generic Priority Queue
In this video were going to be building a priority queue - a data structure which allows us to add items and retrieve the highest priority item in an extremely fast and efficient manner. The implementation is generic, meaning we can use any kind of object or structure for our items that we choose.
This data structure will be used in some upcoming videos about compression.
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist:
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/LowLevelJavaScript/Priority-Queue Implementing A Generic Priority Queue](https://i.ytimg.com/vi/M6OW0KNkhhs/mqdefault.jpg)
![Programmatic Painting: Flow Fields
In this video, were drawing generative art in the form of flow fields! Flow fields are mathematical structures where every point of a space is associated with an angle, and by carefully choosing those angles, we can trace out the path of particles moving across the field, creating some beautiful images.
=[ 🔗 Links 🔗 ]=
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/flow-fields Programmatic Painting: Flow Fields](https://i.ytimg.com/vi/M_SUcX66SDA/mqdefault.jpg)
![How does KERNEL memory allocation work? //Source Dive// 004
In this installment of //Source Dive//, were deep in the xv6 operating system, trying to understand how physical memory of the system is tracked, distributed, and returned to the kernel. Its a fascinatingly simple algorithm, which can be paradoxically kind of hard to understand!
=[ 🔗 Links 🔗 ]=
🐋 RISC-V Docker Image: https://github.com/francisrstokes/rv-toolchain-docker/pkgs/container/rv-toolchain-docker
🎥 Series Playlist:
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/mit-pdos/xv6-riscv How does KERNEL memory allocation work? //Source Dive// 004](https://i.ytimg.com/vi/NC_qkXznvkg/mqdefault.jpg)
![Implementing LOAD instructions: RISC-V ep.5
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: https://www.youtube.com/watch?v=ER7h4ZTe19A&list=PLP29wDx6QmW4sXTvFYgbHrLygqH8_oNEH
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo (emulator): https://github.com/LowLevelJavaScript/RISC-V-Emulator Implementing LOAD instructions: RISC-V ep.5](https://i.ytimg.com/vi/NrOdQu8Spxo/mqdefault.jpg)
![Understanding AES Encryption Mechanics: BMPS
In this video were taking some time to grok the mechanics of AES. We cover the core operations of the algorithm, the mathematics of finite fields, and the all-important modes of operation.
=[ 🔗 Links 🔗 ]=
AES Blog Post: https://github.com/francisrstokes/githublog/blob/main/2022/6/15/rolling-your-own-crypto-aes.md
Spec: https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf
Deeper justifications and analysis: https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/aes-development/rijndael-ammended.pdf
Attacking AES with power analysis: https://www.youtube.com/watch?v=5Hn2D5lrzVo
🎥 Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/bare-metal-series Understanding AES Encryption Mechanics: BMPS](https://i.ytimg.com/vi/OnhtzFJW_4I/mqdefault.jpg)