DOOM
I wouldn’t normally showcase school projects, but I’m proud of this one. A common final project in OS is to get the OS that was developed during the course to run DOOM. Since it’s such a hard task, previous years would make a team of almost the entire class (about 60 people) to try to get it running in the approximately 5 weeks allotted for the project, yet no team ever succeeded. This year, we had only 3 weeks, and one of the TAs was so confident that we wouldn’t get DOOM to run that he said he’d buy the entire class pizza if we succeeded. And we succeeded.
I mostly worked with userspace, i.e. writing libc and compiling the DOOM source code. Throughout the project, I learned a variety of things:
- How C programs are compiled, down to the details of the linker.
- By convention, environment variables are passed as the third argument
to
main()
. vim
,rg
, andfzf
are very useful for reading large code bases.- Rebasing in Git is better than merging.
- Deadlines are good, but they should be set up in a forgiving way. That is, one or two missed deadlines should not doom the project.
- Teamwork is hard.
P.S. I’d share the code if I could, but it’s all in private GitHub repos.
23 December 2021