Uploaded February 2022 | Updated September 2026, 2 weeks ago
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo:
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo:
![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)
![Building FPGA Hardware Using TypeScript: Driving An RGB LED Panel
In this video were taking a look at gateware-ts, a TypeScript library for describing and building digital hardware for FPGAs in TypeScript. Specifically, were building a driver for a 64x64 RGB LED Panel - the same as those used in large video wall displays.
If you want to try this project out for yourself, you can find the LED panels in many different places - including the 1bitsquared store mentioned in the video, but also sites like adafruit and other general electronics stockists have these kinds of panels available. If you dont mind the wait time, you can order them from China on sites like aliexpress - where theyre usually a little cheaper.
00:00 - Introduction
05:38 - The LED Panel
11:43 - The icebreaker FPGA Board
14:51 - Writing the driver
52:18 - Testing the panel
54:16 - Creating a pattern on screen
58:58 - Testing the pattern
=[ 🔗 Links 🔗 ]=
- FPGA: https://en.wikipedia.org/wiki/Field-programmable_gate_array
- gateware-ts: https://github.com/gateware-ts/gateware-ts
- gateware-ts documentation: https://gateware-ts.github.io/gateware-ts/
- icebreaker FPGA: https://1bitsquared.com/collections/fpga/products/icebreaker
- LED Panel: https://1bitsquared.com/collections/fpga/products/led-panel
- Great Sparkfun article about driving LED panels: https://www.sparkfun.com/news/2650
- Verilog: https://en.wikipedia.org/wiki/Verilog
- Summon FPGA Tools (script to download and build the OSS FPGA toolchain): https://github.com/open-tool-forge/summon-fpga-tools
- Prebuilt FPGA toolchain releases: https://github.com/YosysHQ/fpga-toolchain
- Yosys: http://www.clifford.at/yosys/
- NextPNR: https://github.com/YosysHQ/nextpnr
- Symbiflow: https://symbiflow.github.io/
- nMigen (like gateware-ts, but for python): https://github.com/m-labs/nmigen
💌 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/led-panel-driver-in-gateware-ts Building FPGA Hardware Using TypeScript: Driving An RGB LED Panel](https://i.ytimg.com/vi/Otx96lJnLeo/mqdefault.jpg)