Posts by: patrickg

Thoughts about leaving

  |   By  |  0 Comments

Effective June 19, I am resigning my position w/ as their WordPress Architect for their Rayos publishing platform.

I liked the job. The work was substantive. Most of the people were nice enough.

When I started in October 2019, I came into a software-in-transition. TN had acquired the Rayos platform from GTXcel, and my job was to embed w/ the GTX team, learn the software/workflow, and leverage that w/ my pre-existing knowledge of WP and make the transition to the new infrastructure.

Suffice to say early on I was useless. GTX was using a combination of Pantheon and AWS hosting w/ Bamboo deployments and a local dev environment based on Mac specific shell scripts for docker. Thing was super duper fucked. Every customer had their own installation/files for WP/Rayos. Some clients were on AWS, some were on Pantheon, and there was no unified management, you just had to use one other other depending on the customer.

that baggage didn’t transition w/ the software

Most people at GTX were kind, funny even. There was one person in-particular who I clashed with some, but that baggage didn’t transition w/ the software. So a team of people who worked on this prior, is what I was to replace. Their systems person, their lead dev, their contract dev, frontline dev. I was replacing them.

Documentation consisted of a bunch of half ass tossed together and unorganized confluence pages. Which by the way, fuck you Atlassian, confluence is about the most bogged down shitty interface. Actually the entire Atlassian suite is total trash. Bitbucket is OK. I hope you don’t fuck it up also.

Anyways, so as I am learning the Rayos software, I am also learning their dev workflow. After I get productive, I start handling some features/bug tickets and participate more. Right about then, we start ramping up talk about moving to TN infrastructure. So I have to learn TN’s protocols and procedures.

Writing it out like that in one sentence makes it sound like not a big deal, but when you go into an entirely new environment, new logins, VPN, processes, username variations, new email inbox, new addresses, it gets overwhelming. That is all ancillary to the actual work itself.

WordPress dev at TN is about the most convoluted thing you could concoct. I don’t want to go into details because it doesn’t matter, but it is made extremely difficult to work in WP typical dev workflows. Need to work in the DB? Hope you like terminal. Need to clone a live site to replicate an issue? Good fuckin luck. That was a process in itself.

fuck yes get me outta here for a bit

I was able to grow accustomed to these processes and even got into a good flow when COVID-19 hit and everything shut down. On the call with the CEO talking about mandatory 2 week furloughs and thinking to myself “fuck yes get me outta here for a bit”. Right after the call, I messaged my manager and asked if I could go immediately. Ultimately I was given a choice between taking the furlough or taking a 15% pay cut until the end of June. I talked w/ wife about it, and opted for the pay cut. It seemed, at the time, less disruptive.

So projects continued to pile up, new bugs, new fires. I interviewed and selected a new dev hire to join us. Got him up to speed and honestly he was about the best hire in terms of being “useful fast”, that I could have hoped. After he started,some batch import processing that we had a contractor handling fell on my lap when TN decided not to renew thier contract. During this mess we also interviewed and hired another dev to join the team. Got them up and going pretty quick. Then the first new hire got furloughed. Two weeks where it was me, a part time contractor, and a green as Barney’s nutsack new hire.

Stress was building up. I wasn’t sleeping very well. Was working weekends to catch up when I needed to. Working off hours to keep up emails and other work.

We have/had a part time PM who would show up a few times a week, bark off orders, redirect priorities, and then disappear into the void. We also have product people, systems, and my manager all barking their orders as required. I could handle the full time order-barkers, but the intermittent jolting by the part time PM caused more stress than I cared to deal with.

picture of text
The exact moment I decided to quit.

Can you believe the nerve of this person. I am balancing a huge project, my own specific dev tasks, QA, releases, incoming issues, training new people, and reporting to management, and this part time fuckin nobody has the fuckin gall to tell me it is unacceptable to miss ONE FUCKING CALL?

The bases were loaded, and this was a slow pitch right down the middle.

bout done w/ this shit

Unknown to her, I had brought my concerns about her being part time to my superiors in the past. Not in a “get her in trouble” way, but a “can you give her more hours” kind of way. I identified that this was an issue previously. When she said what she said above, I had a moment of clarity, where I realized that it was her behavior/work-style that was causing me stress.

Fast forward and I am already working at a new position. Same money, and FAR, FAR, FAR less stress. When I had a video call w/ the CEO of TownNews to attempt to retain me, I specifically mentioned the stress that her intermittent presence caused me, and the jarring redirecting of priorities. I mentioned how in a previous meeting, about priorities, that she didn’t fucking attend, that it was a problem and affecting me.

Well, fuck it. Fuck it and fuck them. I am lucky enough that I can be picky about where I work, and I while I was really trying to do this different, to hang on and go against my inclination to walk away from things I didn’t like, it was obvious that she wasn’t going to leave or change, so I decided I needed to.

It’s funny, almost immediately after announcing this and making it final, I noticed a marked decline in my avg blood pressure. I feel happier, I feel unbound. I don’t hate work, I don’t dread the start of the work week.

There is no conclusion to this, just, I gave notice, quit, and got a new job that I like.

The end.

Things in my mental rotation: A list.

  |   By  |  0 Comments

Pile of GI Joes


GI Joes

GI Joes have occupied a good part of my time lately. Bidding and buying them directly on ebay has yielded  small army on my desk. I collected them as a kid, well, collected, rather I had a collection of them. I started buying the ones I remember having myself, and then a few here and there that I wanted when I was young but couldn’t get my hands on.

Web Development

Publii and non-WordPress development have used up some braincells. My work is in WordPress, and lately, things have been stressful to say the least. To prevent burn out, I have taken to other web development outlets. I am creating a Shopify store for my wife, I have customized this theme for the Publii CMS, and I have a status page running on Netlify CMS. I have a couple small project fun sites,, and that could use some work.


Factorio is probably the best $30 I’ve ever spent on a video game. Right alongside Rocket League so far. It’s got everything: base building, resource management, TRAINS! What more could you ask for?


Wow what a cool year it has been for allergies. I feel like my head is water logged after the headrush from standing up, I get the overwhelming feeling that my face is being inflated. I can decide either stay inside, stay in one place, and achieve about 75% livability, or take two benedryl, and sleep through it.

Thats about it for now.


My experience with Publii

  |   By  |  0 Comments

I am using Publii to manage my site now. It is a locally installed/managed static site generator/CMS that builds and uploads your site content to a variety of hosting providers. I have it using Github Pages as my provider.

I like Publii because of it’s simplicity. I can choose a dropbox/drive folder to store site files/data in, I don’t have to worry about supporting a backend, or keeping a server running at all. I know that sounds nitpicky, but it’s one less thing to worry about. 

Options and theming within Publii are surprisingly straight foward. JSON configs for options/templates, handlebars for templating. Coming from WP the learning curve is there, but it’s not unmanagable.

While I did buy this theme I am using currently, I’ve also modified it to a good extent to suit my own needs.

I also like that I don’t have to login to write. My last WP install was behind a HTTP pass + the WordPress login. Not a big deal, no, but it’s nice to not have to worry about that.

Anyways, if you are using WP as an SSG, I suggest giving Publii a shot.

WordPress, GraphQL, and Gatsby.

  |   By  |  0 Comments

I know what you are thinking. Well, if you are me, re-reading this again later on, I know what you are thinking. If I am mentioning Gatsby, its probably because I am bored and want to work on something different. Have a cookie, you are correct.

For a while now, my site here, a combination of isolated WordPress, static site generation, and github pages, sufficed to scratch my side project itch, but I wanted to mess with something else. In fact, the only reason I am writing this blog post is so I can see the change when graphql pulls the posts to generate the content.


5 steps to ace a programming interview.

  |   By  |  0 Comments

Ok first off let’s manage expectations. This advice does NOT apply to kinds of programming jobs at the top ~5% of the talent pool. It also doesn’t apply the bottom 10% of the talent pool. Im talking about the not junior, but not quite senior and senior development positions. Nothing client facing also.

1. Don’t dress up.

When you show up to interview, don’t dress for church. I’m not saying roll out of bed and into the meeting room, but give the company an idea of what to expect from you. If you set the bar high on day one, you cant deviate or people will think you are having home troubles. For the love of god don’t wear a suit, you fuckin try hards.

2. Curse, but keep your head about you.

Development is stressful, and dealing with that stress by conjuring new and unique strings of swears is perfectly healthy. It also demonstrates you are confident and comfortable. So when asked the inevitable “what was the hardest thing you worked on” spice things up with a coulpe D’s or so. You are allowed ONE F-bomb. You don’t work there yet, don’t get too familiar.

3. Exercise one bodily function.

Burp, cough, sneeze, something. Let the interviewer know you are a human being. Ask for the rest room before beginning and stay in there juuuust long enough to question if it was a long piss or a quick shit. Farting is the equivalent to a hail-mary move in interviews. The right kind of person, you will be a lock for the position, the wrong sort, and you are done for. Use wisely.

4. It’s OK to say “I don’t know”

Interviewers want to trip you up, see your limits, and see how you handle uncomfortable situations and pressure. We will ask you questions that we KNOW you don’t know. Are you going to bullshit through it? Do you know enough to even bullshit through it? Or will you make a complete ass out of yourself. The choice is yours, but it says a lot about someone who is willing to admit they don’t know something.

5. Last one. Ask difficult questions.

If you want to stand out, there is no better way than putting your interviewer on the spot. Ask them what they are looking for in a developer, then ask them what they AREN’T looking for. This is sort of a double edged sword because you are asking them to basically tell you about a bad experience they had previous to you (why the job is open), while at the same time not wanting to be rude so they have to work in your own qualifications as desirable. Capitalize on this with a dismissive or unimpressed tone and you will take the upper hand leaving them wondering if THEY did a good job selling their job to YOU.


That’s the list, fuck off.

Fuck off forge.

  |   By  |  0 Comments

The Problem

I don’t know why, but this is the 3rd time that Laravel Forge as just up and decided to not be able to connect to my server anymore. The last time I wound up wiping the server and starting over, but this time, end of the service month is coming up, so I just decided to jump ship.

Search for solution

Since I’m going to have to rebuild anyways. I gave a try, but the time it took to create a new site, or change the PHP version was PAINFULLY slow. I’m talking on the order of 5-10 minutes to create a new WordPress site. 5-10 minutes to change PHP version, or update a user. I liked the interface, but it was just so slow. Then on top of that the sites made with it were also extremely slow. This site is lean and I’m not even talking about the generated version. The build version is VERY light weight and typically loads in ~300-400ms. I was seeing page loads near 2.9-3.2 seconds using a ran server. Same data center on digital ocean too. So I don’t know what the deal was.


I don’t manage a ton of sites manually, so I figured I would take a look and see what is out there. I have used Easy Engine in the past, but their update and move to docker containers killed it for me when I started having services crash and was unable to recover them. However, there was a fork of Easy Engine made prior to the docker update called WordOps. I checked it out, setup a demo site, and it was the speed and responsiveness that I can expect. They have kept it up to date so php 7.4 and a really nice looking dashboard and netdata monitoring dealy. I mean, you still have to get into the cli to make sites, but thats fine in exchange for free.

Project: Hotdog Supernova

  |   By  |  0 Comments

Did you know that pig asses make excellent hotdogs because they come pre-marinated in whatever the pig ate? Delicious. Also if you keep adding feet to a footlong hotdog it will eventually go supernova. This concept was the basis for a fun exercise called Hotdog Supernova.

Site was built in the half hour before a meeting using bootstrap and jquery, a royalty free image and a single emoji. Not a whole lot going on as far as complexity, just a fun little dinky thing to do.

Adding Basic Auth to site on Laravel Forge

  |   By  |  0 Comments

Here I am going to outline how I added basic auth to my build environment for this site. I switched servers to run on Laravel Forge, and the only instructions I could find for how to do this were several years (and versions of Forge) old. I know the server is running nginx, and I know how to do this manually, but I don’t want to go around any infrastructure Forge has setup and ham-fist it.

Generate htpasswd

First thing you need to do is generate your htpasswd file. Search for an htpasswd generator and enter in a username and password. The result will be a single line string separated by a colon. Copy that entire string and keep it handy.

Create htpasswd file

Next, SSH into your server, and create the file .htpasswd
I created mine in /etc/nginx/

cd /etc/nginx
sudo nano .htpasswd

(if doing multiple sites, you can name this whatever you want, just remember to reference it when adding it to the config below)

paste in your generated authorization line here

ctrl+x and then y to save the file.

Edit nginx config

Next go to your Forge dashboard, and go to your specific site. At the bottom of the screen there is a grey button/pill/badge labled files.
Click that, and then edit nginx configuration.

After that, you need to add two lines to your configuration file. Be careful not to disturb anything you are unsure of. Find the top of your server{} block and you need to add two lines. The first, the directive to restrict content and display the message of the alert box. The second line, is the path to your .htpasswd file.

auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

If you want to do this with multiple sites, you should name your files something more recognizable, such as sitename.htpasswd and then reference those specifically in your settings.

3D Printing a replacement ball joint for phone holder vent mount

  |   By  |  0 Comments

This thing has been driving me insane for the past several months. Don’t know where/when I got this phone holder, but the thickness/spring weight of the holder just feels right when I place the phone in it, and it holds the phone firm.

super shitty thin stamped grippy tongs that hold the vent


The problem, is the super shitty thin stamped grippy tongs that hold the vent. Over time, they have become loose and lost a lot of their grip. Recently, I purchased a “new to me” Volvo which has been an absolute thrill to tinker on/with. Turns out Volvos don’t come with an armada of cup-holders, leaving me in a situation of having to decide where to put my phone when it’s time for coffee.

The difference invent-slat thicknesses of new car vs old, has just brought this problem to a head. So I set out to 3D print my way into a better situation. I started by taking apart the old mount, and isolating the problem component. The ball end of a ball joint, and the stamped tongs. I measured the ball and neck using calipers and re-created it in Tinkercad.

I made the print with supports and it came out wonderfully. Big thanks to my Ender 3 Pro, which I have been nothing but impressed with thus far. So I printed this thing out, the ball fit, the collar fit and screwed, and everything was going swimmingly until….snap.

Turns out that printing this vertically setup critical weak points in the neck of the ball joint.

Critical weak point

Giving it some thought, I decided to not only get rid of the neck, which wasn’t really needed anyway, and also change the orientation of the print to horizontal, since the stresses would be working against the grain of the print.

The result has been amazing so far. I got lucky with the vent slats doing a tight fit on the first try, but more over, the ball joint and neck are very strong, and tight.



View on Thingiverse

CircleCI is cool and all, but let’s just roll w/ GH pages

  |   By  |  0 Comments

I cant spend a TON of time playing with new stuff, not as much as I would like. I got to try out circle CI to the point of getting to work and getting to understand HOW it works, which is the most important take away really.

The upsides are that I am not familiar with another weapon in the development arsenal. I believe, however, that it is overkill for my meager purposes of simple deployment. I have decided to just stick with pushing directly to GH pages and serving the content from there.



© 2020 build

b4st theme for WordPress