Fishin’ Spots

Mission: Complete

I submitted my last assignment at Oregon State this week. I have some feelings about it — pride, relief, uncertainty about the tech jobs market, optimistic anticipation — but they’re all pretty muted so far. I’m sure it will settle in as I catch up on neglected household chores and start living life like a normal person again.

Speaking of a normal life, I hardly remember what that’s like. When I started, I knew I would have to make sacrifices to succeed as a student with a full-time job. A lot of things I took for granted have been in maintenance mode, from my physical health to dearly held friendships. I am very ready to see more concerts, do some multi-day bike rides, and reconnect with my pals.

What’s next (professionally)

Now I start on more personal portfolio projects and moonlighting as a web developer. Here’s what I have on the docket to flesh out some skillsets:

  • Drake Equation Calculator: interactive Dash app that will update calculation based on user input. Goals are to practice Dash callbacks, implement Tailwind CSS framework, and manage a user interface that requires several user inputs. [Drake Equation]
  • Central Oregon Action Network: Aggregator of local non-profits and public services. This region has so much help available to people who need it, but it can be really tough to find. It is a Flask website that uses Jinja2 templating and a MySQL backend, allows for filtering by locale and category. It’s mostly built, but I have some loose ends before I launch v1.
  • Wagtail and Django exploration: Wagtail is an open-source CMS built on Django that provides a tremendous amount of flexibility for its developer/users. Given my academic focus on Python, this would be a natural path to creating a platform that offers truly bespoke products and services. Wagtail itself is fairly niche, but working with it will require hands-on Django practice.
  • WordPress: WP opportunities are already knocking at my door. Goal is to become a competent WordPress site builder and PHP developer.

Academic Review

I enjoyed the challenges in my classes, and did well in them. I’m still waiting on my last two grades, but I’m hopeful that I’ll finish with a 3.9 GPA.

Some of my favorite courses:

  • Data Structures
  • Analysis of Algorithms
  • Introduction to Databases
  • Cloud Application Development
  • Software Engineering

Data Structures and Algorithms were both deeply satisfying, requiring some mental and logical exercises that lead to consecutive ah-ha moments. Databases and Cloud App Development satisfied that craving to create something more tangible — taking stock of a product’s needs, designing a backend, then developing an API to serve that data … it felt like I was creating something tactile and useful.

In Software Engineering, I created an application that I call AtmosPür, which tracked household air quality data from an Arduino, and regional outdoor AQI. This allowed the user to analyze needed changes to their household (e.g. new air filters or sealed doors) and how effective those changes are at insulating from wildfire smoke outside.

I am so proud to have done this, but the work will continue so that I can make sure I can get a return on the time, effort, and money I invested into this. Thanks for reading.

DNS QuickCheck Update

Get the extension

Earlier this summer I completely reworked my DNS QuickCheck Chrome Extension. Now, the DNS is fetched and displayed within the extension popover, rather than opening a new tab to who.is.

It includes several common DNS record types to query, or the automatic “QuickCheck” option, which displays any available A, CNAME, or NS records for the (sub)domain of your current tab.

The extension is available at the Chrome Webstore.

Database Portfolio Project

https://ress-w9tb.onrender.com/

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 Render.com, 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.