Posts tagged development
- 23 January 2023
I was fortunate enough to attend ShmooCon with some coworkers this last weekend. This was my first ever cybersecurity conference, so I wasn’t really there with a purpose, mostly just to see what these things are like. One thing I immediately noticed was everyone’s attitude toward the challenges. It seemed that everyone was overwhelmed by how many different challenges there were and how you could really only pick one to complete successfully due to the short duration of the conference.
Some challenges were technical, others were not. One challenge in particular was hosted by Polarity. Essentially, each conference attendee was handed a card when they arrived. The card had a “hash” (really just a long random-looking hex string) and a message saying that seven cards with your hash exist. If you find someone else with a matching hash (hash collision), you can go to the Polarity booth to each claim a prize.
Docker Compose save and load
- 08 December 2022
I recently had the opportunity to extend the Docker Compose codebase to add the
In order to deploy software in an airgapped environment, both software and configurations must be transferred between networks. When Docker Compose is used for deployment, a the items to transfer between networks include the
docker-compose.yml config file and the Docker image for each service. There is no obvious existing tool to prepare these items for transfer between networks, so I decided to build my own.
The Democratic Kernel Scheduler
- 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)
HPC Systems Tools, Visualization, and Management
- 10 August 2020
Starting in April 2019, I worked on a variety of projects for INL’s HPC department. I had the opportunity to present my work at a poster conference.
Rubik’s Cube Solver
- 20 March 2018
For AP Computer Science, I was required to complete a programming project of some kind. Because of my interest in Rubik’s Cubes, I decided to combine some of my passions and do something related to cubing for my project.
I first decided to write a Python program to simulate a Rubik’s Cube. A user would be able to enter moves on the command line and see a real-time display of the cube’s state. Here is an example of what this looked like in 2x2 mode:
Programming Religious Wars
- 18 July 2017
At the end of my 2017 summer internship at Idaho National Laboratory, I performed an experiment to determine the fastest programming language. I had the opportunity to then present my findings at a poster conference.
Here are some small code snippets used in my testing: