today's leftovers
-
Mediocregopher ☛ A Simple Script to Initialize nix-Based Projects
These days any development I do for myself will use nix to, at the very least, define the development environment, if not the entire build process. I also always pin the nixpkgs version on a per-projecct basis, so that when I come back to the project 2 years later I don't have to deal with compatibility issues which have been sprung up in the meantime.
-
Games
-
Hackaday ☛ Happy Birthday, Tetris!
Porting DOOM to everything that’s even vaguely Turing complete is a sport for the advanced hacker. But if you are just getting started, or want to focus more on the physical build of your project, a simpler game is probably the way to go. Maybe this explains the eternal popularity of games like PONG, Tetris, Snake, or even Pac-Man. The amount of fun you can have playing the game, relative to the size of the code necessary to implement them, make these games evergreen.
-
-
Open Hardware/Modding
-
[Repeat] Linux Gizmos ☛ Tulip Creative Computer: ESP32-Based Board for Music and Coding Projects
The Tulip Creative Computer is powered by the ESP32-S3 chip, which includes a 32-bit LX7 dual-core processor operating at 240 MHz. It features several connectivity options: MIDI inputs and outputs, a stereo audio line out, and an I2C Mabee/Grove jack.
-
Instructables ☛ Media Player With Raspberry Pi - Retrofit Vintage Clock Radio : 9 Steps (with Pictures)
Now for the tough/fun part; figuring out how to transfer the idea for a multimedia player from my mind, to the inside of this newly acquired vintage clock radio.
-
-
Kernel Space
-
Dave Anderson ☛ What is PID 0? · blog.dave.tf
If you’ve been following carefully so far, you may be wondering about the other CPU cores. So far we’ve run entirely single-threaded, and when we initialized the scheduler we explicitly told it to pin task 0 to the bootstrap core. When does that change?
The answer is, in task 1! The first thing kernel_init does is start up all other CPU cores. This means the bulk of the boot process that happens in kernel_init can make use of all available CPU power, rather than being stuck on a single thread. Starting CPU cores is quite intricate, but the exciting bit for our purposes is the call to smp_init. In turn, it calls fork_idle for each non-bootstrap core, creating a new idle thread and pinning it to that core. This is where the “PID 0” term gets muddy, because these new idle tasks have non-zero thread IDs, but they are still part of thread group 0. So, in userpace parlance, PID 0 is a process that contains one pinned thread per core, with thread 0 pinned to the bootstrap core.
-
-
Graphics Stack