michael neuper

Michael Neuper

Computer science student at Stellenbosch University. I like low-level software, electronics and the maths underneath both, and I do almost all of it in Emacs.

  • hardware
  • software
  • maths
  • security

whoami.pdfrevised June 2026

About me

I study computer science at Stellenbosch University, and I’ve been a teaching assistant for introductory computer science and for computer architecture. I like knowing what’s going on underneath the code I write, right down to the logic gates, and I like the maths behind it too. I’m happiest when I get to build something myself, and so far that’s been a scheduler, a compiler and an 8-bit computer on breadboards. Outside of all that, I’m a linguistics nerd and I’m into cars.

git log --graph --all --color \ --date=format:'%Y-%m' \ --format='%ad -%C(auto)%d%C(reset) %s %C(blue)<%an>%C(reset)'

* | | | 2026-10 - (HEAD -> main)
| * | | 2026-06 - (bbd-software) Vac Week 2026 <BBD Software>
Built an online foosball game: players steer the rods by tilting their phones, using the gyroscope. Designed and presented as a full-stack web app with a small team.
| | | * 2026-06 - (teaching-assistant) Teach computer architecture as a TA <Stellenbosch University>
| | | |
| | | * 2026-02 - Teach introductory computer science as a TA <Stellenbosch University>
| * | | 2025-06 - Vac Week 2025 <BBD Software>
Built an online laser tag game: computer vision finds players in the camera feed and tags them. Designed and presented as a full-stack web app with a small team.
| | | |
| * | | 2025-01 - Join BBD Software as a bursar <BBD Software>
Part of the Bursary & Beyond Programme, which includes the yearly Vac Weeks.
|/ | |
| | |
|\ | |
| * | | 2024-12 - (mwr-internship) Complete a cybersecurity consultant internship <MWR CyberSec>
- Completed cybersecurity training with labs on TryHackMe. - Assessed a web application end to end, documenting each vulnerability with its risk and how to fix it. - Wrote a professional report and presented it, client-style, to a panel of industry professionals.
|/ | |
| |/
| * 2024-01 - (undergrad) Start an undergraduate degree in computer science <Stellenbosch University>
| /
|/
* 2005-06 - Initial commit <Michael Neuper>

Click an underlined commit message to read the rest of it.

~/projects/

Projects

  1. hardware

    8-bit breadboard computer

    Ben Eater's 8-bit breadboard computer, built chip by chip.

    stack
    74HC logic, EEPROMs, breadboards, a lot of jumper wire

    My most recent finished project: a programmable computer on breadboards, built from 74-series logic chips by following Ben Eater’s video series. It is a set of modules that share one 8-bit bus: a program counter, 16 bytes of RAM, an instruction register, A and B registers feeding an adder that also subtracts, and an output register that drives a 7-segment display.

    Every instruction takes five clock steps, and the first two fetch it from RAM. At each step, microcode stored in EEPROMs sets sixteen control lines that decide which module puts a value on the bus and which ones read it. Carry and zero flags give it conditional jumps, enough for loops like counting up and down or computing Fibonacci numbers.

  2. software

    Multicore OS scheduler

    A multicore operating system scheduler, for a concurrency course.

    stack
    C, OpenMP
    source
    private (university coursework)

    The part of an operating system that decides which process runs on which core, and for how long. Processes come from a file that lists each one’s instructions, which request and release named resources. OpenMP threads act as the cores: each takes the next process from a shared ready queue, behind a lock so two cores never take the same one, and runs it under first come, first served, round robin or preemptive priority scheduling.

    A process that asks for a resource another process has goes into a waiting queue until the holder releases it, then back to the ready queue. Once nothing is left to run, the scheduler checks the waiting processes for deadlock by following who holds the resource each one needs: a chain that leads back to where it started is a deadlock.

  3. software

    Othello with Monte Carlo tree search

    An Othello player in C that runs Monte Carlo tree search across MPI processes.

    stack
    C, MPI, Docker
    source
    private (university coursework)

    The player picks a move by running thousands of random games from the current position and keeping the move that was explored most, using UCT to balance trying new moves against improving promising ones. Each move gets one second.

    The project was for a concurrency course, so the search also runs in parallel over MPI, in three versions: independent search trees combined at the end with MPI_Allreduce, trees that share their statistics every so often, and the same sharing done asynchronously with non-blocking sends. Each version is packaged as a Docker image, and a match runner plays them against each other. In ten-game matches on four processes, each version beat the one before it, except the asynchronous version, which won half its games against the synchronous one.

  4. software

    Compiler to JVM bytecode

    A compiler in C for a custom language that targets the JVM.

    stack
    C, JVM bytecode, Jasmin
    source
    private (university coursework)

    I wrote it for a computer architecture course. It reads a program in a small procedural language, with subroutines, arrays, if and while statements, input and output, and produces a class file the Java virtual machine can run.

    It works in stages. A scanner splits the source into tokens, and a recursive-descent parser checks them against the grammar. A symbol table, built on my own hash table, records every name and its type so the type checker can catch mistakes. The last stage emits JVM instructions, which Jasmin assembles into the class file.

  5. software

    Chat, voice calls and P2P file sharing

    Four networking projects in Java: chat, fast UDP file transfer, voice calls and P2P sharing.

    stack
    Java, JavaFX, TCP and UDP sockets, Java Sound, RSA, AES-GCM
    source
    private (university coursework, group project)

    Four projects my group built for a networks course:

    • A chat server that handles many clients at once, with a JavaFX client, load-tested with dozens of simultaneous users.
    • File transfer over Reliable Blast UDP, measured against TCP across packet sizes, loss rates and file sizes from 1 to 100 MB.
    • The chat extended with voice calls and group calls streamed over UDP, plus voice notes.
    • Peer-to-peer file sharing: a server brokers searches, then peers send files to each other directly over TCP, encrypted with AES-GCM keys exchanged using RSA, with pause and resume. We tested it across four machines over Tailscale.

posts.org

Posts

A mix of posts about things I’ve done or found interesting. The list below is an Org buffer: TAB folds the heading you’re on, S-TAB cycles the whole list from folded to open, and clicking a heading’s stars folds that heading.

  1. How I Use Org-Roam to Take Notes for CS
  2. Efficient LaTeX Editing With Emacs
  3. Replace Jupyter Notebook With Emacs Org Mode
  4. Enable Monitor Mode on TP-Link TL-WN722N
  5. Turn Your Window Manager Into a Desktop Environment

*unsent mail*draft

Say hello

Email works best. For anything private, encrypt it with my GPG key below.

Encrypt it

fingerprint4E7B F800 0D86 182D F484 5C37 508B CF84 373C 8930

curl -sL https://michaelneuper.com/michaelneuper.gpg | gpg --import

Elsewhere

Capture the flag

Three flags are hidden on this site, the kind you would find in a beginner CTF. They look like flag{…}. Found one? Run M-x submit-flag, or use the button.

0 of 3 found

<N> sap-1.asm Asm

*Help*q or esc to close

Keys

SPC
leader key: shows every command
M-x
run a command by name (Alt+x or Option+x)
SPC h t
load a theme, with live preview
:
evil ex commands, like :q
j k
scroll down, up
d u
half a screen down, up (C-d C-u too on a Mac)
gg G
top, bottom
/
search the page; then n N for the next, previous match, and esc to clear
C-g
cancel (so does esc)

On this page

c n r
computer: run or pause, step, reset (while it's on screen and nothing else has focus)
TAB
fold the Org heading under focus
S-TAB
cycle the whole Org buffer
coffee-refill
top up VCC and overclock the computer
submit-flag
check a CTF flag
morse-region
turn the selected text into Morse code (unmorse-region turns it back)