Software engineer
working close to the metal.

I'm Jake Kasper — I build low-level software: kernels, allocators, schedulers, and the unglamorous plumbing that makes hardware do useful things.

featured project

rpos — a bare-metal OS for the Raspberry Pi 4B

A hobby kernel written from scratch in C and AArch64 assembly. Built to drive Raspberry Pi hardware.

CAArch64ARMv8-ABCM2711

rpos

single-author · written by hand · full-stack OS

Boots on a physical pi4b. Implements a 4-level virtual memory system, a buddy page allocator and slab-based kmalloc(), a preemptive scheduler, copy-on-write based process replication, an ext4 driver over EMMC, an ELF loader that runs real user binaries within the ext4 filesystem, and a UNIX-based syscall table for compatibility with existing software, such as python and GNU.

Features a simple command line interface for user interaction, either via serial/UART for input/output and touchscreen over DSI for external output (supporting a subset of ANSI sequences).

Debugging enabled over JTAG with J-Link + OpenOCD + GDB against a running board — the same trace scrolling behind this page.

UNIX syscalls
for compatibility with existing software
4-level VM
with high-half kernel mappings and low-half user space
ext4
filesystem support, with ELF parsing and execution
Device drivers
for external devices such as the official raspberry pi 7" touch screen
selected work

Other things I've built

More bare-metal systems work — plus neural nets and game AI, built from scratch.

toolbox

What I work with

Systems
  • C / C++
  • AArch64
  • x86-64
  • RISC-V
  • Linker scripts
Machine Learning
  • Python
  • PyTorch/Tensorflow
  • CUDA
Low-level
  • Memory management
  • Interrupt controllers (GIC)
  • Schedulers & concurrency
  • Filesystems (ext4, FAT-32)
  • System calls
Tooling
  • GDB / OpenOCD / JTAG
  • QEMU
  • Make / CMake
  • Linux & Git
  • Python
about

I like understanding things all the way down.

Most of my work starts with a question like "but how does that actually work?" — which is how I ended up writing an operating system for fun.

I care about correctness, small dependency footprints, and code that a future maintainer can actually read. I'm happiest somewhere between the hardware and the abstraction.

Outside of kernels, I'm interested in compilers, storage engines, and developer tooling.

whoami → jake kasper
role → software engineer
focus → kernels · machine learning
contact

Let's build something low-level.

Whether it's a role, a collaboration, or you just want to talk about page tables — my inbox is open.