Database Portfolio Project

I’ve just completed another successful quarter in Oregon State’s Post-Bacc in Computer Science. That makes 28 credits down, 32 to go. For CS340 – Intro to Databases, we spent much of the class building an inventory management system for an imaginary company. The company my teammate, Liam Robbins, and I invented sells renewable energy parts and full systems comprised of multiple parts.

This is a MySQL database that is accessed and edited from a web app. It uses Node.js, Express, Handlebars.js, and SQL.

One important project requirement was that we successfully managed an M:N relationship between two tables. Each Energy System can contain multiple parts and each part can be associated with multiple different systems.

Just about everything here is generated dynamically, e.g., after you add a new category, it will become an option when adding a new part and when filtering parts by category. When editing an existing system, you’ll see that the already-included parts are checked — this was one of the most challenging features to implement, and it includes all four elements of CRUD (Create, Read, Update, Delete). This was part of my own vision beyond the project requirements, so it is also the part I am most proud of.

Feel free to play around – add things, delete them, edit, etc. If things are weird, hit that Reset Database button and give it a moment.

A couple notes: this is deployed for free on, and “spins down” after 15 minutes of inactivity. When you load the project, it will take a moment to spin up. Also, my focus was on the more technical aspects of building the backend and middleware, and I did not include support for mobile screen sizes. And finally, data sanitation was not a focus here, so weird characters may create weird results — send me a note if anything actually breaks.

A Quick DNS Tool

Whois QuickCheck: Chrome Store | GitHub

Useful for me

I just published my first Chrome Extension. It is a very simple, single-purpose tool that shows some public DNS information for the site you’re on. One of my primary job duties is to ensure smooth website launches, and to work with project managers to quickly troubleshoot launches that run into hurdles. Very often, clients have mistyped a CNAME record or pointed their domain to an incorrect IP address.

With two clicks, I can check these settings (at least, the most common problems). It doesn’t replace DIG, but means I don’t have to open the terminal, or load a DNS search page, quite as often.

The files are available on my GitHub, and it is published for direct install from the Chrome Store.

How it works

The interface is a single HTML button inside of a div, styled with a few lines of CSS. Clicking the button calls a javascript function stored in the popup.js file, which parses your URL into its domain.

A regular expression removes the URL scheme and www subdomain (if applicable), then another regex removes anything after the domain, by finding the first forward slash and anything after it. Pretty simple stuff.

Future features

School is starting again this week, so this will likely sit on the back burner for a bit, but I’d like to add a couple small features.

  • Second button with an alternate search, probably a nameserver check.
  • Customizable settings, like automatically include www, or exclude any subdomain

If you find this useful, let me know in the comments. What other features would like to see?

Prima facie

This is a personal blog, nothing all that special or specific. Here you’ll find things that I have been working on in school, watching in some free time, thinking about while I fall asleep.

No big reason, other than that I’d like to share things with friends and family, and strangers too. I want a creative outlet that offers a bit more flexibility than modern social media, and that doesn’t make me feel so beholden to algorithms and trending audio. My 10 Favorite Episodes of Batman: The Animated Series (and the Three Worst); I Used the Spotify API to Make an Applet; Here’s What I Learned About Databases in School Today. Not all that friendly to Reels or the Metaverse.

A Bit About Me:

I spent most of my twenties as a serial hobbyist, jumping around between photography, screen printing t-shirts, woodworking… and I’m still somewhere in that, but I decided to find something central and long-term, and settled on computer science. I love the potential for creativity, the analytical requirements, the constant state of learning and synthesizing new concepts. I did some self-paced study and landed an entry level (temp-to-hire!) job at a local tech company. I liked it, and I wanted more. So I’ve started working on a degree from Oregon State University’s College of Electrical Engineering and Computer Science.

A portrait of the author, who wears glasses and a beard.
with my winter beard on

This is, in some ways, a return to a childhood vision of my future, albeit without the naivety of a 12 year old building levels in Duke Nukem 3D. As a boy in the ’90s, I learned enough HTML to make a GeoCities website, then learned enough TI-Basic to make silly text-based calculator games. I spent a long time exploring other things (like a bachelor’s degree in music production), but I’m back.

I still have a multimeter and soldering iron, a collection of film cameras, a pizza stone, and a love of audio, and I’ll write about those sorts of things too. Like I said, this isn’t supposed to fit into a box; it’s a place where I can share some things I want to share.