Getting four microphones for the price of one
Introduction A while back, I found a set of two JBL paging stations at a surplus auction for a good price. I was in need of a good desk microphone, and while these are a bit unwieldy, they have excellent sound quality and range. Additionally, because they are paging stations, each one has four built-in toggle buttons on the base for muting different paging zones. Back from the Dead This works really well with a project I had been working on in the past: The ability to join more than one voice call at once. There is an excellent program called qpwgraph for PipeWire which has the ability to independently mix channels together. This allows for individual applications to be locked to either the left or right audio channel of an output device. With headphones, this means I can essentially have one call on my left ear and one call on my right ear. ...
Publishing articles like Google deploys software
Testing and deploying software are probably two of the least liked parts of making a product, right next to coming up with an idea, writing code for it, and making the product. They’re also two of the most easily automatable parts, since you’re almost always doing the same thing. Because of this, Continuous Integration and Continuous Deployment (CI/CD) have become popular in the last few years. CI/CD allows developers to automatically test and deploy code when it’s committed to version control systems. Since I’ve been keeping this website in a Git repository, it’s a pretty good candidate for a simple automated build and deployment. ...
Building a better calendar
The Problem With the fall semester starting again, everyone’s favorite part of school is back: homework. More specifically, keeping track of when things are due so I can do all my assignments at the last minute. In the past, we would simply have to write everything down when it’s assigned. Unlike the days of yore, however, we have technology now. The South Dakota Board of Regents requires all classes to use the online learning management platform Brightspace. Because of this, we have an easy way to see all the assignments via the website. But using the website is a bit clunky, and it doesn’t stop showing the assignments after they’ve been submitted. ...
PAM Backdoors and Cyber Conquest
Background Earlier this year, I helped put together a competition called Cyber Conquest. It’s a purple teaming competition, so it involves both offensive and defensive security. Each team is given an identical environment, and are expected to hack into other teams while at the same time preventing other teams from hacking them. Tristan, another team member, wrote a great retrospective over on his website if you want to know more. Additionally, a much more animated version of me did a presentation covering what happened, so feel free to check that out if reading an article isn’t really your speed. With all that out of the way, we can get into the the story. ...
Privilege escalation in the most convoluted way possible
Background Recently, I ran into an issue where I needed to update one of my servers. Specifically, this one is running OpenSUSE Tumbleweed, and it has been for about 4 years. Because of that age, however, it isn’t in the most stable of states. I’ve had multiple times where I would have had to reinstall the OS if I hadn’t had snapshots. Of course, this is mostly because it was one of the first Linux installations I ever had, and my lack of experience shows in quite a few places. It also used to be my main desktop, so it has quite a bit of software that you wouldn’t normally see on a server, such as Steam. ...
Putting a 2" Ball on a Horse: Using CGI in 2025
Not Computer Graphics! CGI, or the Common Gateway Interface, was one of the earliest ways to make an interactive website. First developed in 1993, it allowed HTTP servers to call user-defined executables in response to a resource query, as opposed to returning the resource verbatim. Despite its simple nature, CGI is an incredibly powerful tool for creating web applications, and because of its simple nature, it’s also incredibly easy to use. Any executable, in any programming language, can be used as long as it has the ability to read stdin, write stdout, and get environment variables. In fact, the original implementation of PHP was written in C for use via CGI. ...
Wikipedia Multistream Database Dumps
Introduction About a month ago, I decided I wanted to download a database dump of Wikipedia. Why, you ask? Science isn’t about why, it’s about why not! Of course, I would like this to be somewhat useful, so in this article we’ll be figuring out how this dump is structured and how we can read it with a short script. Wikipedia archive downloads In order to process these archives, first we’ll need to download them. Somewhat unsurprisingly, we can get them from Wikipedia itself. This page has links to various mirrors that host the database dumps. They are fairly large, even compressed (May 2025 is 25 GB). That size makes it pretty difficult to parse the dump whole. However, the folks over at Wikipedia thought of that, and as such provide a version of the dump that doesn’t need to be decompressed fully in order to view its contents. With the help of a supplementary index file, we can decompress chunks of the database and parse those individually. For this article, we’ll be using the dump from May 2025. ...
Initial Commit
Hello everyone, and welcome to my website! My name is Ethan Clark. I am currently an undergraduate student at Dakota State University, majoring in Computer Science and Cyber Operations. On this site I hope to post about projects and experiences I have, most of which will be computer-related. More specifically, some of my areas of interest are system administration, programming, reverse engineering, and self-hosting. There might be some other things that sneak in from time to time, though. ...