Posted in 2021
- 15 June 2021
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)
- 11 April 2021
Today, I will attempt to list some of the key components of a “good” public git repository that make me feel warm and fuzzy when I see them.
When you publish open source projects to the internet, you are contributing your ideas, expressed in code, to the world. However, that code should not be anything more than that. It is so easy to accidentally release information about yourself by simply adding everything by default in a directory to your repository or by including the wrong configuration files. I recommend using
git add . sparingly. You can easily leak to the world the type of operating system you use, the type of deployment solution you use and its configuration, and much more.
- 11 April 2021
As part of my CS 401R (Blockchain) class at BYU, I researched an interesting idea called DDoSCoin. I found the idea here.
DDoSCoin is an instance of “useful proof of work”. Essentially, someone can set a bounty on a TLS-enabled server, and workers must prove they have made the specified number of connections to the target server by producing a digital signature prefixed with n zeros.