Dead Air

It’s been several years since I last posted anything though it’s not because I haven’t been busy. My goal is to start writing up posts regularly but before I do, I feel I need to recap the last three and a half years.

I would recommend that everyone occasionally take time to document their accomplishments (professionally and otherwise).

The single most important change in my life is that I am now a father and my son is an absolutely incredible little kid. I hope I can continue to help him grow into a kind, caring, smart, driven person who can accomplish more than I could ever dream of in whatever realm brings him fulfillment.

Now, as for work…

In July of 2024, I left Broadcom (post acquisition of VMware) to join a startup in the Atlanta area. Between the 2021 and 2024 at VMware and the last several months at Airia, I’ve accomplished quite a lot.

  • Built a Prometheus exporter to run performance tests and detects issues within the VMware build environment. During one troubleshooting event, it was able to confirm that a NFS performance issue was solved nearly instantly whereas the previous test involved running an large build that took several hours.
  • Built a tool to migrate repositories between Artifactory instances including recreating virtual repositories and their relationships with the underlying local and remote repos. It was used successfully to migrate several terabytes of data to a new instance of Artifactory hosted in AWS.
  • Built a SCCM provisioner for GitHub as a gap-stop to onboard hundreds of users into GitHub while we built selected and tested an IdP solution.
  • Built countless tools/processes using GitHub’s REST and GraphQL APIs to assist with configuring GitHub as teams migrated from Perforce and Bitbucket.
  • Selected, tested, deployed, documented, and tuned Loki as the logging system of choice for troubleshooting issues and getting statistics out of log data.
  • Building out several of our systems for dealing with incidents including a customer-facing status page, deploying PagerDuty for alerts, and implementing an RCCA process using 5 Why’s.
  • Combed through every component of our system and ensured that we had telemetry and log data and either added a dashboard from the community or built a custom dashboard. I want to ensure we have observability into everything.

This list will continue to grow rapidly and there are several things I’d like to add however they are things I’ve only just begun to look into. In short, I am busy as hell.

 

Curb Cuts

I was listening to the 99PI from last week and it reminded me of a childhood friend who had MS. Unfortunately, he passed away a few years ago.

He was a year younger than I was but we both had a mutual love of video games. I remember carrying him up my front porch and setting him into a computer chair so I could roll him to the TV. We played games for hours. When he needed to go home, I’d carry him back to his chair and he’d head out. I have fond memories of playing Halo and Baldor’s Gate.

Unfortunately, we grew apart once I got involved with cars and girls and we stopped spending time together.

Jonathon, I miss you and I hope we meet again some day.

Take care.

 

Gun Violence

The politics as I see them in a nutshell:

Democrats say that gun violence is a symptom of easy access to powerful firearms, inequality, and mental health issues. Their prescription is increasing the background checks and/or barring access to particularly powerful and/or large numbers of weapons and increasing investment in healthcare by way of ACA.

Republicans say that gun violence is a symptom of mental health issues. Their prescription? I haven’t heard one. Perhaps prayer.

You can stand on either side of the fence, but you have to admit that there is a stark incongruency in the response offered by the two parties. Republicans recognize that there’s a problem but offer no solution. You can disagree with the prescribed fix, but you cannot agree with inaction assuming you believe this is a real problem. Not doing something is admitting that you’d rather, to use a rather apt euphemism, stick to your guns than try to resolve a problem you recognize as legitimate. I will never recognize the bloodletting of innocent bystanders as being a just, necessary price to pay to uphold 2A.

Full disclosure: I vote Democrat. I own guns. I appreciate the point of 2A (as ineffective and insane as a civil uprising would be in todays day and age). I support things like stronger background checks, purchasing limits, mandatory safety training for firearm ownership, removing the “gun show loophole.”

 

PIVOT!

I don’t use this much.

But I pay for hosting and run for daily backups. It seems like a waste. In typical tech fashion, it’s time for a PIVOT so I can MAXIMIZE MARKET SHARE AND INCREASE PROFITABILITY.

I was able to test how good my backups were today by standing this site back up from exports. I’ve moved hosts to save money and support a smaller hosting provider (AWS to DigitalOcean). I’m happy to say that my previously untested backup scripts worked wonderfully. I was able to reinstall LAMP, drop in the DB and WP files and the site came up on the first attempt.

Going forward, I’ll probably just post more content here that include topics outside of release engineering. I’ve got some cool RE/DevOps type things to post that I’ve been sitting on for awhile. I’ll try to get around to documenting that work and slip it in between ramblings about ethics (my current obsession), new projects, cycling, and just generally revamping this site.

 

Database Backup Script

I just wrote a little script to backup the database of this blog. This script is absolutely not good for a production server and I do not warranty this to work correctly, but if you want something for backing up a DB this might not be a terrible way to start.

I have this script setup in /etc/cron.daily/ so it will run everyday at midnight. Keep in mind that the script must be executable for it to run.

Script

#!/bin/bash
# Backups WordPress database to the path defined below.
# Variables.
TIMESTAMP=$(date "+%Y-%m-%d-%H%M")
FILENAME=$TIMESTAMP.sql
FULLPATH=/path/to/db/exports/
DBUSER=username
DBPASS=password
DBSCHEMA=databasename
# Setting working directory to FULLPATH provided above.
cd $FULLPATH
# Execute DB backup command.
mysqldump -u $DBUSER -p$DBPASS $DBSCHEMA > $FILENAME

If the script is deployed like mine is, it’s executed by root, so you shouldn’t have to worry about permissions issues. Again, just remember the script is executable by doing this:

chmod +x /path/to/script.sh

Again, I don’t warranty this and it’s by no means a production quality script.

 

Purpose and Intentions

I’m not entirely sure what my purpose of this blog is, but this seems like an interesting exercise. So, how about some background? I’m a release engineer at a software company in the Atlanta area. Currently, my duties include the following:

  • Managing our JIRA instance
  • Determining our migration path from TFS to GIT for source code management.
  • Determining our migration path from TFS to Bamboo for builds. In time, this will grow into full blown CI.

Looking at the list, it doesn’t seem like much, but I’m swamped a lot of the time and completely in over my head. I’ve never really dealt with SCM before outside of using git for personal projects. Also, JIRA is new to me too. With that being said, I love this. Previously I was a PM handling black sleep projects that no one else wanted to deal with. I didn’t enjoy that and requested a move. Luckily, I work for a great company and they were super accommodating and allowed me to jump into something completely new.

I guess the point of this is chronicling my experiences as a release engineer and any goodies/tidbits I come across along the way.