github.com/zenbiscuitslol

Hello, I'm

I love tweaking and customizing my setup until it works exactly how I want, and I learn best by breaking things and fixing them.
Learning C & C++. Student at HHN and 42 Heilbronn.

scroll ↓

About Me

Video games got me into programming as a kid, and I never stopped asking how it all actually works.

@zenbiscuitslol

"Learning C & C++"

  • 12 public repositories
  • 16 followers · 27 following
  • Member since July 2022
Follow on GitHub →
01

It started with video games. I loved them so much that I wanted to know what was going on behind the screen, and that curiosity pulled me into programming at a young age. Today I'm a student at HHN and 42 Heilbronn, splitting my time between university coursework and hands-on projects in C.

02

I love tweaking things until they work the way I like them, whether that's a game, a config file, or my whole setup. I learn best by breaking something and fixing it, and I'd rather build it myself than lean on a framework that hides everything.

03

I'm curious about how things work at the most basic level, especially how hardware and software talk to each other: processes, memory, and everything between the keyboard and the CPU. When I'm not coding, I'm ricing my Linux distro, tinkering with my dev setup in Neovim, or sharing what I learn with the open-source community.

Project Showcase

Three projects I’m proud of — a shell, a ray tracer, and a Spotify client for the terminal.

01

Minishell

A lightweight shell that mimics basic bash behaviour: it reads a command line, runs programs, and wires them together with pipes and redirections.

C / Systems / Unix

View on GitHub →

How it works

  1. 01

    Each line is split into tokens and parsed into commands, pipes, and redirections, with environment variables expanded.

  2. 02

    Every command runs in a child process (fork + execve); pipes connect their stdout and stdin.

  3. 03

    Redirections rewire file descriptors with dup2 before the command starts.

  4. 04

    Signal handling keeps Ctrl-C and Ctrl-\ behaving like a real shell.

02

miniRT

A minimal ray tracer written in C that renders 3D scenes described in a text file, with lighting, shadows, and multi-threaded rendering.

C / Graphics / Math / Multithreading

View on GitHub →

How it works

  1. 01

    The scene file is parsed into a camera, lights, and objects.

  2. 02

    For every pixel a ray is cast and tested for intersections with each object.

  3. 03

    A BVH acceleration structure skips most objects so complex scenes keep a high FPS.

  4. 04

    The hit point is shaded with Phong lighting, and a shadow ray toward each light decides what is in shadow.

  5. 05

    The image is split across threads so rendering uses every core.

03

spoTERM

A Spotify client for the terminal, written in Go with Bubble Tea. Browse playlists, Liked Songs, and saved albums, see album art and an audio visualizer, and control playback with the keyboard.

Go / TUI / Spotify API

View on GitHub →

How it works

  1. 01

    Login uses the Spotify PKCE flow, so no client secret is needed, and the token is cached locally.

  2. 02

    The Web API can only remote-control a player, so spoTERM starts go-librespot in the background to make itself a playable Spotify device.

  3. 03

    The UI is a Bubble Tea model: a sidebar, a track list, and a now-playing bar.

  4. 04

    Album art is drawn with half-block characters, or the real image via the Kitty graphics protocol in Kitty and Ghostty.

What I'm Working On

Judging by my repos: lots of C from the 42 curriculum, a few terminal apps in Go and Rust, and a steady habit of rebuilding the tools I use to see how they work.

  • 01Building terminal apps — spoTERM (a Spotify client in Go) and tetriCLI (Tetris in Rust)
  • 02Writing a drop-in garbage collector in C that wraps allocations with ld --wrap to track and free the heap and file descriptors
  • 03Going deep on systems programming — Minishell, pipex, and philosophers: processes, pipes, signals, and threads
  • 04Graphics and algorithms in C — MiniRT ray tracer, fract-ol fractal viewer, and push_swap sorting
  • 05Tuning my Neovim config from kickstart.nvim until it fits how I work

Tech Stack

Languages, tools, and the systems I feel at home in.

Systems
C C++ Java Go Linux
Frontend
HTML/CSS JavaScript
Tools
Python Lua Git Docker

Daily drivers: Arch

Let's Connect

Open to collaboration, questions, or just a good conversation about systems programming.