Francis Stokes
@francis.codes
Exploring the Low Level on YouTube as Low Byte Productions
Firmware Engineer
Father x2
(he/him) 🇬🇧🇳🇱
Firmware Engineer
Father x2
(he/him) 🇬🇧🇳🇱
I've been experimenting with tenting, but I'm not sure if I'm all in. For long extended typing I think I prefer flat, but for regular coding work where it's not constant, the tenting feels really good
October 4, 2025 at 7:45 AM
I've been experimenting with tenting, but I'm not sure if I'm all in. For long extended typing I think I prefer flat, but for regular coding work where it's not constant, the tenting feels really good
This is my 3rd mechanical keyboard design. I went for a full split this time. It's 3D printed, including the low profile key caps. The switches are gazzew silent black. The halves are wired direct, with 10 pin IDC connectors carrying the rows and columns. No PCB either, the matrix is hand-wired.
October 4, 2025 at 7:41 AM
This is my 3rd mechanical keyboard design. I went for a full split this time. It's 3D printed, including the low profile key caps. The switches are gazzew silent black. The halves are wired direct, with 10 pin IDC connectors carrying the rows and columns. No PCB either, the matrix is hand-wired.
I've fallen down the rabbit hole of building keyboards lately. This is my take on a planck, with a pseudo-split.
Hand-wired with 48 keys, 4 RGB LEDs, runs QMK + Vial on a raspberry pi pico.
It only took me about a day to get used to it, which was a surprise considering it's my first ortholinear!
Hand-wired with 48 keys, 4 RGB LEDs, runs QMK + Vial on a raspberry pi pico.
It only took me about a day to get used to it, which was a surprise considering it's my first ortholinear!
July 31, 2025 at 1:56 PM
I've fallen down the rabbit hole of building keyboards lately. This is my take on a planck, with a pseudo-split.
Hand-wired with 48 keys, 4 RGB LEDs, runs QMK + Vial on a raspberry pi pico.
It only took me about a day to get used to it, which was a surprise considering it's my first ortholinear!
Hand-wired with 48 keys, 4 RGB LEDs, runs QMK + Vial on a raspberry pi pico.
It only took me about a day to get used to it, which was a surprise considering it's my first ortholinear!
I've got some exciting news to share soon!
February 2, 2025 at 8:11 AM
I've got some exciting news to share soon!
If all goes well, I'll be streaming tomorrow afternoon (approximately 1400 UTC+1), reverse engineering the signalling on this remote control, and trying to turn it into a real USB keyboard
December 27, 2024 at 11:25 AM
If all goes well, I'll be streaming tomorrow afternoon (approximately 1400 UTC+1), reverse engineering the signalling on this remote control, and trying to turn it into a real USB keyboard
A small but impactful hack for my setup at work:
A switch that maps my keyboard to either my Linux or Windows machine.
It's literally just a SP4T switch, a couple of sliced up USB cables, and a cap across the power supply.
The cap keeps remap settings when switching between computers.
A switch that maps my keyboard to either my Linux or Windows machine.
It's literally just a SP4T switch, a couple of sliced up USB cables, and a cap across the power supply.
The cap keeps remap settings when switching between computers.
December 20, 2024 at 8:16 AM
A small but impactful hack for my setup at work:
A switch that maps my keyboard to either my Linux or Windows machine.
It's literally just a SP4T switch, a couple of sliced up USB cables, and a cap across the power supply.
The cap keeps remap settings when switching between computers.
A switch that maps my keyboard to either my Linux or Windows machine.
It's literally just a SP4T switch, a couple of sliced up USB cables, and a cap across the power supply.
The cap keeps remap settings when switching between computers.
Tip for using a (non-cryptographic) pseudorandom number generator in an embedded context:
Define a .noinit section in RAM in the linkerscript with (NOLOAD), and then define an uninitialised array of u32s. Sum these up and use them to seed the RNG at boot time, when RAM will contain garbage.
Define a .noinit section in RAM in the linkerscript with (NOLOAD), and then define an uninitialised array of u32s. Sum these up and use them to seed the RNG at boot time, when RAM will contain garbage.
December 12, 2024 at 7:29 PM
Tip for using a (non-cryptographic) pseudorandom number generator in an embedded context:
Define a .noinit section in RAM in the linkerscript with (NOLOAD), and then define an uninitialised array of u32s. Sum these up and use them to seed the RNG at boot time, when RAM will contain garbage.
Define a .noinit section in RAM in the linkerscript with (NOLOAD), and then define an uninitialised array of u32s. Sum these up and use them to seed the RNG at boot time, when RAM will contain garbage.
I've seen copilot generate some unhinged code, but it just went comically off the rails here
December 4, 2024 at 1:20 PM
I've seen copilot generate some unhinged code, but it just went comically off the rails here
I got an IP address
My second post about building a networking stack on a microcontoller just dropped.
It covers the packet flow architecture in the firmware, the DHCP process, and a little debugging for flavour
github.com/francisrstok...
My second post about building a networking stack on a microcontoller just dropped.
It covers the packet flow architecture in the firmware, the DHCP process, and a little debugging for flavour
github.com/francisrstok...
November 27, 2024 at 7:13 AM
I got an IP address
My second post about building a networking stack on a microcontoller just dropped.
It covers the packet flow architecture in the firmware, the DHCP process, and a little debugging for flavour
github.com/francisrstok...
My second post about building a networking stack on a microcontoller just dropped.
It covers the packet flow architecture in the firmware, the DHCP process, and a little debugging for flavour
github.com/francisrstok...
Wrote about a project I've been working on: github.com/francisrstok...
November 9, 2024 at 9:03 PM
Wrote about a project I've been working on: github.com/francisrstok...
It stuck me just how comical it is to have so many different types of connections between the same two devices
November 1, 2024 at 6:13 AM
It stuck me just how comical it is to have so many different types of connections between the same two devices