About Me
Hi there! I'm Ryan, a student who loves to tinker with code and explore new ideas. When I'm not diving into my latest project (or the dustbin for electronics), you can find me learning something new or figuring out creative/silly ways to solve problems. This site is a little peek into my world of coding and fun projects!
Homelab
I run self-hosted services in my homelab as a long term side project. As much as possible, I tried building it from the ground up — running services I use daily like a git server, jellyfin, automation controllers, internal networks I broke and fixed, and more hardware and time cost than I'd like to admit.
It started with building a 'cold' windows configured raid-10 machine, to a FreeNAS/TrueNAS machine using second hand parts, to a dedicated router, and has turned into an ecosystem of different machines and networking gear.
From sourcing parts and building the physical servers, to Docker orchestration to VLANs, WireGuard tunnels, DNS layering, media and game servers; it’s where I experiment and learn outside of the University. I have on occasion broke my own internet (prep rollbacks and don't prematurely run an untested and non functioning DNS resolver or DNS server or delete them by accident - Its an experience itself to have internet and no access), accidentally wrote over the zfs partition by duplicating over one level too high.
It's a sort of playground to learn and run new technologies, as well as my own backyard to consume the fruits of my labour.
I am currently in the midst of consolidating my internal services and writing ansible playbooks for migration, fresh spin ups, updates etc. The scale and complexity on the different machines is somewhat managable for now, but I suspect I am close to reaching some cognitive load limit soon. I have some functional knowledge of AWX and Jenkins with internal git integration to help with this problem, so expect some documentation, centralised planning and playbook / script execution and gitops in the works.
Full List of Homelab stuff: A breakdown of my self-hosted infrastructure, hardware specs, and services running across my custom servers and network stack.
Cool read if you have the time (I spent quite some time on the write up), some of my pain points experienced while building, setting up and running the homelab, as well as my future plans with it.
What I'm Currently Working On
Some snippets of my ongoing projects.
- Singapore Bus Route Project: A fun ongoing hobby project where I’ve been analyzing and mapping Singapore's bus routes using real-time data to figure out the best way to visit every bus stop. Currently in the midst of planning a refactoring on paper and consolidation of the project.
- Homelab infrastructure automation: Sandbox/POC machine for homelab automation before I get more permanent rack mounted solution. The services and state of my homelab is starting to get too hard to manage, with some stopgap procedures I ran fogotten cause of time, and the maintainence / upgrades taking longer to do. I have started trying some automation via ansible and git to help with migration and maintainence issues. Currently most of my services run off single ansible playbooks, and my self-hosted services are being ran on this hardware. In the middle of planning to refactor to more standard best-practice ish formatting, and to migrate once hardware prices go down again.
Completed/Archived Projects
A few things I’ve finished and I thought were cool.
- SUTD Pathfinding Project: I explored pathfinding algorithms from scratch and used them to map out the SUTD campus more efficiently. Download the report here.
- 50.005 - C Shell: Tiny Unix POSIX compliant shell with job control & tab‑completion. Wrote it for 50.005 with a bunch of built in programs and utilities.
Site Design Inspirations
This site is intentionally simple — no frameworks, no dark patterns, no extra JavaScript. Just good old HTML, some light CSS and Vim's auto indent to keep me sane.
No fancy graphics, no latest trends, just what I hope is easy to access and read.
The structure is inspired by Bjarne Stroustrup’s website, for its text-first clarity. I also borrowed some design choices from McMaster-Carr — straightforward, get to the point fast, no distractions.
Setup
I built my own custom PC to handle everything from programming and simulations to hardware tinkering. It’s powered by a 5950X, 32GB, and a 7900 XTX.
I mostly work in Debian 13 stable on my workstation and T480, most of my homelab vms are on Debian 12 or 13 and the occasional Ubuntu Server. Some windows for my school work (so I can take the exam), to access acrobat to sign off documents.
Other stuff
Comfort Languages:
C, Python 3, Go
Functional enough knowledge Languages:
C++, Java
I can do it with loads of googling/docs Languages:
Javascript, Typescript
Software stuff:
Git, Vim, tmux
Infra stuff:
Ansible, Terraform
Hardware stuff:
ESP32, Arduino, Raspberry Pi, 3D Printing
Reading List
A random collection of books — technical, philosophical, casual, or just thought-provoking. No particular order.
- The C Programming Language – Kernighan & Ritchie
- Introduction to Algorithms – Cormen, Leiserson, Rivest, Stein (CLRS)
- UNIX Systems Programming – Kay A. Robbins & Steven Robbins
- Digraphs: Theory, Algorithms and Applications – Jørgen Bang-Jensen & Gregory Z. Gutin
- Meditations – Marcus Aurelius