Home#

Hi! I am Paul Spencer, a computer scientist. I am currently a full-time software engineer at MITRE and a part-time grad student at Georgia Tech.

Some of my greatest interests include information security, operating systems, HPC, and networks.

Please see my about page for more on what I do, and my projects page for a sampling of my personal undertakings.

Recent posts#

See the blog archives for a more complete list.

  • 2022-11-02 - OSCP Review

    I have working on breaking into the field of cybersecurity for some time now. One of the most popular ways to do so is to earn certifications. I did some research on which certifications might be the most beneficial to me, and discovered that the best technical certs are from Offensive Security (to nobody’s surprise I’m sure- they also created Metasploit and Kali Linux).

  • 2022-04-23 - Brief Review of BYU’s Computer Science Program

    Since this was my first degree, I don’t have any other experience to compare BYU to. However, I will say that I rarely felt challenged, possibly because many of the classes were outdated. Additionally, there aren’t many opportunities for specialization within the program. I would have liked to focus more on systems, security, and networking, but there really weren’t any more classes I could take in those areas.

    The professors were great overall! Of course there were a few who I didn’t like as much as others, but that’s to be expected.

  • 2021-06-15 - The Democratic Kernel Scheduler

    One of the hardest classes in BYU’s computer science program is CS 345: Operating Systems Design. When I took the class last Fall, I learned how difficult kernel development is and how complex the puzzles of operating system internals are. One of the most famous of these puzzles is that of the scheduler. Before taking the class, I had a few years of experience with High Performance Computing schedulers such as Slurm and PBS Pro. This type of scheduling software is different from that of an operating system, but helped me realize that this was a highly important and difficult puzzle to solve.

    CS 345 involves a set of projects of varying difficulty. A scaffolding OS is provided, and a feature of the OS is implemented in each project. Two of the seven projects (#2 and #5) are to implement different types of schedulers: first a prioritized round-robin queue, then later a fair-share system. I enjoyed these two projects more than any others in the class, which left me with a quest to create a unique scheduling algorithm. Hence, the Democratic Kernel Scheduler (DKS)