All Posts


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.

Read more ...

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). The Offensive Security Certified Professional cert is probably the most widely known of their offerings, so that is what I decided to shoot for first.

Purchasing the PEN-200 Penetration Testing with Kali Linux (PWK) course costs about $1500. It comes with a few items: a textbook, videos, access to exercises, and access to the PWK labs.

Read more ...

Docker Compose save and load

I recently had the opportunity to extend the Docker Compose codebase to add the save and load subcommands.

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.

Read more ...

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.

Read more ...

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)

Read more ...

My Unsolicited Opinions on Tidy Git Repositories

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.

Read more ...

DDoS as an Altcoin

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.

Read more ...

AI Malware Detection Literature Review

One required course in BYU’s computer science program is WRTG 316 - Technical Writing. The course consists of numerous short writing assignments, and one literature review due at the end of the semester. I researched the intersection between AI and malware detection for my review.

To view my literature review, look here.

Read more ...

HPC Systems Tools, Visualization, and Management

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.


Read more ...

High School Graduation Speech

Here is my very snarky high school graduation speech for your enjoyment:

Hello ladies and gentlemen. Over the last few days I have been a bum. I am no longer attending high school, I haven’t graduated, and I live in my parents’ basement. The bum life has given me the great opportunity to think about this speech and what to say.

Read more ...

Rubik’s Cube Solver

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:


Read more ...

Raspberry Pi Cluster

For my high school senior project, I built a mini HPC cluster using a few Raspberry Pis. This was an incredible educational experience, as it taught me a great deal about Linux system administration, parallel computing, and programming.

Before completing my senior year of high school, I spent the summer as an intern at INL. I worked in the Advanced Scientific Computing department on a variety of projects.

Read more ...

Programming Religious Wars

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:


Read more ...