Projects I can walk you through.
These are some of the projects I am most proud of. Each one started with something I wanted to understand better, so I built it, tested it, and wrote down what I learned.
Project Citadel
My home lab started with an old gaming laptop and a long list of things I wanted to learn.
Citadel now runs Nextcloud, a modded Minecraft server, my websites, and remote access through WireGuard. I use Docker and Caddy to keep the services organized, route traffic, and manage HTTPS.
Running it has taught me that getting a service online is only the beginning. I also have to handle backups, monitoring, DNS, updates, troubleshooting, security, and documentation without sharing anything sensitive.
What I learned
Web Perceptron
I made a small browser demo so people could see a perceptron make a prediction.
The project trains a simple perceptron in JavaScript to tell the difference between 5×5 drawings of an L and a T. It creates 120 slightly noisy training samples and updates the prediction as someone changes the grid.
Building it helped me connect the math behind weights and thresholds to front end code. It also made me think more carefully about how to explain machine learning without making it sound harder than it is.
What I learned
John the Ripper
I demonstrated John the Ripper to show what weak passwords look like from an attacker's point of view.
I used a controlled lab to explain how password hashes are audited, how wordlists and rules work, and why reused or predictable passwords can fail quickly.
I finished the presentation with practical advice: use long unique passphrases, modern salted password hashing, multi factor authentication, rate limiting, and only test systems you are authorized to test. Presenting it also helped me get more comfortable explaining a command line tool to people with different levels of experience.
What I learned
julian@lab:~$ john --wordlist=training.txt demo.hashes
Loaded 3 password hashes for demonstration
Press 'q' or Ctrl-C to abort, any other key for status
3g 0:00:00:02 DONE (2026-03-19)
julian@lab:~$ john --show demo.hashes
3 password hashes audited, 0 left
