# 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, and fzf 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.