Skip to content
View apollo-2006's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report apollo-2006

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
apollo-2006/README.md
Abir Deol

website resume linkedin demos


Rust C++ C Python TypeScript Go WebAssembly Arch

Second year computing science at the University of Alberta. I write low level systems from scratch to find out what is underneath the abstraction: an allocator instead of malloc, Raft instead of a database that already handles consensus, a rasterizer instead of a graphics API.

None of it is better than the real thing. That was never the point. The point is that afterwards the real thing stops being magic, so when it behaves strangely you have somewhere to start.

oracle-of-delphi

A fully local autonomous voice assistant. Sub-600ms bidirectional speech with barge-in, OS level machine control, dual layer persistent memory over a knowledge graph, and a WebGL holographic HUD. It boots offline with no GPU, no model download and no credentials, then swaps in real backends behind traits.

oracle-audio (C++/RT)  ──shm+socket──▶  oracle-core (Rust/Tokio)  ──WS──▶  oracle-hud
   capture · VAD ·                          agent loop · memory ·
   barge-in · TTS                           connectors · gateway
                                                  │
                                          authed UDS (SO_PEERCRED)
                                                  ▼
                                        oracle-actd (Rust, privileged)
                                        policy · input · shell · audit

The design premise is that the model is an untrusted planner. Actuation lives in a separate privileged daemon that recomputes the required capability from the operation itself, gates irreversible actions behind confirmation, and audits everything.

tests cpp clippy platforms

github.com/apollo-2006/oracle-of-delphi · try the HUD in your browser (scripted core; the real one needs a local GPU)

live demos

Every demo runs the project's own code in your browser: C and C++ compiled to WebAssembly, Python under Pyodide, TypeScript and JavaScript as written. GitHub Actions builds each one from its repository and publishes it to Pages. Click a card to open it.

oracle-of-delphi live demo
oracle-of-delphi
the real HUD of the assistant above, with a scripted core standing in for the local GPU
nexus_cluster live demo
nexus_cluster
Raft from the paper, with a simulation that checks the safety properties at every step
nexus_db live demo
nexus_db
LSM key value store: skip list memtable, write ahead log, SSTables and tombstones
nexus_editor live demo
nexus_editor
collaborative editing on a fractional index CRDT with string positions and tombstones
nano_match live demo
nano_match
limit order book, no allocation after startup: 12M requests/s at a 50ns median on one core
custom_mem_alloc live demo
custom_mem_alloc
allocator over one mmap region: first fit, splitting, neighbour coalescing, benchmarked against glibc
neon_vm live demo
neon_vm
stack based bytecode VM with bounds checked single step dispatch and a step through debugger
photon_tracer live demo
photon_tracer
path tracer with no libraries: 1080p at 50 spp in half a second on 32 threads
cpu_rasterizer live demo
cpu_rasterizer
a full 3D pipeline in plain JavaScript with no graphics API, 0.43 ms a frame
rasterizer_engine live demo
rasterizer_engine
the same idea in C++ and SDL2: culling, flat shading and a depth buffer on the CPU

upstream

Pull requests to open source projects. About half fix memory safety bugs or crashes, found with sanitizers and Miri. The badges show each one's live state on GitHub, and abirdeol.tech/work has the reasoning behind each.

whisper.cpp #4031
pull request state
the tests aborted on any GGML_BACKEND_DL=ON build: no backend registers until something calls ggml_backend_load_all(), and the tests were the only callers that did not. found it, fixed it in four call sites
whisper.cpp #4064
pull request state
heap out of bounds read when a VAD model declares any encoder layer count but four, reachable from whisper-cli --vad
candle #3965
pull request state
heap overflow in Tensor::from_raw_buffer, reachable from safe code: a seven byte f32 buffer wrote past its allocation and returned Ok
candle #3963
pull request state
undefined behaviour loading quantized GGML tensors, a byte slice cast to blocks with no length or alignment check
tokenizers #2398
pull request state
a malformed BPE merge list produced invalid UTF-8 through from_utf8_unchecked; the fix removes the unsafe block
espeak-ng #2530
pull request state
an unsigned subtraction read before a heap string on ordinary voice selection, on nearly every run, found under UBSan
espeak-ng #2537
pull request state
a zero length phoneme data file crashed the process through a NULL buffer no caller checked
pdf-rs #296
pull request state
a PDF declaring a function domain backwards panicked the parser
pdf-rs #295
pull request state
encrypted files from some producers could not be opened with any password, because /P was written as an unsigned 32 bit integer
llama.cpp #28462
pull request state
a release tarball unpacked inside any other git repository stamped that repository's commit into --version
espeak-ng #2529
pull request state
-Wimplicit-fallthrough for the thousand line language table, where a missing break silently gives one language another's settings
whisper.cpp #4047
pull request state
the CI leg that would have caught #4031 before it shipped
whisper.cpp #4029
pull request state
prebuilt macOS binaries, including a lipo fused universal archive that picks its CPU backend at load time
whisper.cpp #4019
pull request state
documented the stream example's two output formats, and the working directory relative model path that surfaces as an init failure

tools I actually use

  • thermal_monitor   terminal daemon logging CPU load, package temperature and memory to SQLite twice a second
  • terminal_dashboard   terminal system monitor: per core CPU, memory, network, and live AMD GPU sensors on Windows and Linux
  • cal-cli   macro tracking from the command line, because logging a meal should be one command
  • points-sys (private)   two player points economy, one HTML file, no build step, live synced

games and other things

  • valo_scout   Valorant match analyzer, ranking games on combat and utility with a hand written heapsort
  • radiant_slice   tactical FPS systems in Unreal Engine 5 C++: counter strafing, spray patterns, lag compensation
  • personal_portfolio   abirdeol.tech, built from scratch

things I got wrong

Four of the projects above had a bug that cost me real hours. I wrote each one up afterwards: the symptom, how I chased it, what was actually wrong, and what I changed about how I write that kind of code.

currently

Working through machine learning from classical computer vision upward, and writing down what I learn rather than collecting tutorials. Two time national MMA champion, 2020 to 2024. Looking for software engineering internships.

Pinned Loading

  1. neon_vm neon_vm Public

    Stack-based bytecode virtual machine in C with bounds-checked dispatch and a step-through WebAssembly debugger.

    C

  2. oracle-of-delphi oracle-of-delphi Public

    Fully local voice assistant: Rust services, a 14B model on your own GPU, a privileged daemon that gates irreversible actions, and a Three.js HUD.

    Rust

  3. cpu_rasterizer cpu_rasterizer Public

    3D rendering pipeline in plain JavaScript with no WebGL: hand-written matrices, culling, flat shading and a 1/w depth buffer.

    JavaScript

  4. custom_mem_alloc custom_mem_alloc Public

    A malloc replacement in C: one mmap arena, first-fit free list with splitting and coalescing, thread-safe, with a live heap visualizer.

    C

  5. nano_match nano_match Public

    Limit order book and matching engine in C++17: no allocation after startup, 12M requests/s, deterministic simulation testing.

    C++

  6. nexus_db nexus_db Public

    LSM-tree key-value store in C++17: skip-list memtable, write-ahead log with crash recovery, SSTables. Runs in the browser via WebAssembly.

    C++