First Co-op Term Recap
Most undergraduate students at the University of Waterloo are drawn to the school by its co-op program. Beyond helping cover tuition and living expenses for the following term, co-op provides résumé-worthy experience that pays dividends in future placements and post-graduation job searches. The program isn't without its drawbacks as there are no real breaks between terms and the competition can be intense, but it has given countless students hands-on experience that simply can't be replicated in a classroom.
For my first co-op term (one of six), I joined the FreeBSD Foundation as a Junior Software Developer Intern. I had been contributing to FreeBSD since May 2021, so I came in with an existing project backlog and a list of ideas I wanted to pursue. My supervisor, Ed Maste (emaste@), gave me the freedom to drive my own roadmap, which made the term especially productive.
Main Projects
I focused on two primary areas this term: HMP (heterogeneous multi-processing) scheduling, and improvements to LLDB kernel debugging.
HMP Scheduling
I wrote the initial patch for the hmp(4) framework, which serves as an interface between the provider (which reports CPU state) and the scheduler. This work will be presented at BSDCan 2026, and I've also been drafting an accompanying paper in LaTeX.
LLDB Kernel Debugging
The goal here was to bring LLDB to feature parity with KGDB for FreeBSD kernel debugging. This had originally been proposed as a Google Summer of Code project, but since no suitable candidate was found, I picked it up as part of my co-op work.
The work included fixing significant bugs such as kernel debugging on FreeBSD 14+ on arm64 being completely broken. I also extended support to less common architectures like riscv and ppc64le. By the end of the term, every supported platform on FreeBSD 14+ works, with the exception of i386 and armv7, which have limited support. These changes will ship in LLVM 23, and I plan to backport them to FreeBSD's in-tree LLVM as well.
Exploratory Work
I also spent time on two exploratory projects that didn't reach a meaningful outcome before my last day:
Forgejo CI scripts. FreeBSD developers are currently evaluating Forgejo as a potential successor to Phorge for our source forge. Due to limited hardware resources on my end, I wasn't able to run as many script experiments as I'd hoped.
EEVDF scheduler. This was a side project I used as a testbed to evaluate how far LLM-assisted development ("vibe coding") could take me. I'll go into more detail in a separate post, but the short version is that even Claude Code with Opus 4.6 got me only about 70% of the way to what I wanted.
Acknowledgements
First and foremost, thank you to Ed Maste (emaste@), Senior Director of Technology at the Foundation and my co-op supervisor. Despite a heavy workload, Ed consistently looked out for me and the other co-op students, pointed me to useful resources, and tagged the right reviewers on my Phabricator revisions. I wouldn't have been able to land nearly as many changes on the FreeBSD and LLVM sides without his support.
Thank you to Li-wen Hsu (lwhsu@) for rebuilding the network setup at the Kitchener office, maintaining and upgrading the FreeBSD clusters, and organizing AsiaBSDCon 2026.
Thanks to Siva Mahadevan (siva@) for troubleshooting network issues at the Foundation, recovering my desktop after a panic from a -CURRENT update, and supervising the three of us co-op students.
On the FreeBSD project side, thanks to Olivier Certner (olce@), Konstantin Belousov (kib@), Warner Losh (imp@), and John Baldwin (jhb@) for reviewing my patches and offering constructive feedback.
On the LLDB side, thanks to Jessica Clarke (jrtc27@), Sheng-yi Hung (aokblast@), and David Spickett (@DavidSpickett) from Arm for reviewing my FreeBSD kernel debugging patches.
Finally, thank you to the HR team at the Foundation for supporting the co-op students and helping arrange my travel grant for AsiaBSDCon 2026.