RSSAmplifier

Blog

šŸ‘Øā€šŸ’»

Recent content on šŸ‘Øā€šŸ’»

charlesthomas.dev ↗RSS feed ↗30 posts

Latest posts

15x Performance Improvement by Reverse Engineering a Vital Part of the Deployment Pipeline

There was about a month of overlap between when I started my new job, and when the person who knew the most about the company’s CI/CD system left. In that time we had a series of meetings where he offloaded as much info as he could about how everything worked. At our last knowledge share, I had the presence of mind to ask two questions that turned out to be very important:

Using Tags in Sonarr and Radarr to Selectively Sync Media

When I got laid off I got really lucky and had an offer pretty quickly. After I got my homelab up and running, I decided to put some of my severance toward a new NAS, and upgade my storage. I moved the original off site, and installed Syncthing on both of them to keep a redundant copy of my most crucial data. The old NAS has about 1/4 the storage of the new one, so I decided to be selective with…

Migrating My Custom Domain from Gmail to Fastmail

I’ve been thinking about migrating off of Google Workspace for my custom domain for months. I wasn’t particularly concerned with what I think of as the “normal data” (emails/calendars/contacts), but I was very concerned with my YouTube subscription list. I ended up exporting the data and converting it into OPML format to import into my RSS client. It took some effort, but…

Serving Valid HTTPS Certs From My K3s Homelab to External Devices Using ExternalName Services

It isn’t particularly sexy, but one of my favorite things about my k3s homelab is that I took the time early in its creation to get proper HTTPS certificates, and automate their renewal. I think it’s great that all the top-shelf browsers require sites to use HTTPS, but it’s a nightmare for self-hosting when you have to click through several pages of warnings to hit any of your own services.

Converting My YouTube Subscriptions to RSS

Recently I started thinking about trying to de-Google my life (again ), and aside from my email archive the only data I really care about is my list of YouTube subscriptions. I’ve been vaguely aware for a while that every YouTube channel has an RSS feed, but I thought it would be a huge hassle to extract that information and do something useful with it. It turned out to be pretty easy.

The Evolution of My Smart Home as Told by My Oldest and Favorite Integration

When I bought my first house ten years ago, I had just moved 750 miles via UPS. I boxed up and shipped what few belongings I cared to keep and then I got on a plane with all of my clothes; giving away, selling off, trashing, or otherwise abandoning on the curb what little furniture & large electronics I had. The furniture in the new house was either handed down to me, or it came from the clearance…

Automating Even When It's Easy - Or: Why Can't I Remember the Syntax for Password-less Sudo?

One of the most impactful books I’ve ever read is Time Management for System Administrators by Tom Limoncelli. I have read it multiple times, and every time I take away something new. It’s a little dated (post-PDA/pre-smart-phone), but I’d still recommend it more often if it weren’t for the problematic life-goals section. A section I think of often is when to automate…

Meet 'Em Where They Live: Choosing Home-Assistant Over Grafana for Observability

When I got laidoff last year and started building out my homelab , I upgraded my NAS from 8 to 32TB. As part of the new NAS setup I created two shares with quotas, which together are limited to 8TB; the size of the old NAS. I took the old NAS and a raspberry-pi with Tailscale installed to my folks’, and added a cronjob to my k3s cluster to sync those shares.

Managing git Hooks with make Magic

git hooks can be extremely useful, but only if you remember to install them. Since git automatically excludes .git/ from the commit history, but hooks need to be installed in .git/hooks, there’s not an elegant way to keep them up to date across multiple checkouts. If your repo has a Makefile already, this can be solved with a couple simple targets . Explaining the file one line at a time:

Automating Docs by Abusing GitHub Repo Topics

After I got laid off last year , I built a home lab k3s cluster to keep my skills sharp while I was job hunting. Initially I kept all the manifests in a mono repo, but I decided to break it up into micro services repos. This solved several problems, but it created another: I want to be able to link to it easily. When I broke the mono repo apart, I did have the presence of mind to give each micro…

Split Monolithic YAML File by Kubernetes Kind

Update It turns out the awk solution had a big problem I didn’t notice until after I posted this. The gist is that awk is only looking for --- or kind:, and it’s processing the file one line at a time. Once I inspected the contents of a file I had generated with the original script, I realized its apiVersion was in a different file, and then some other resource’s apiVersion was…

Everything I Know About Incident Management I Learned From Shoveling Snow

For the last week or so winter has hit the midwest pretty hard . I had somewhere to be this afternoon, so I had to go dig my car out. It took about an hour and a half, based on my pre and post toots. While I was out there, I had plenty of time to think. Somewhere along the way this post started forming in my mind. So here we go.

Automating Myself Out of a Job

In October of 2023, for the first time since before I graduated college, I found myself without a job. We have lots of ways to describe what happened: laid off, let go, downsized; staff reduction, or its weirdly militaristic sibling force reduction; I told everyone except potential employers I got “shit-canned.” But one phrase in particular, that America doesn’t use but the UK…

Lightning Fast Code Search in the Terminal

For the better part of a decade, I’ve had a function in my .bashrc called finf (Find IN File), which chains find and grep together to search the contents of files. The other day I started playing around with a couple of tools I had never tried before and found a much better solution than finf, and I thought I’d share. Ripgrep Link rg by itself is already better than my old finf function because it…

Generating My Resume as a PDF with Github Actions

For over ten years, I’ve been maintaining my resume as a GitHub repo . It’s a simple Markdown file, but until yesterday every time I actually needed to submit it somewhere, I’d have to use MacDown or something to render it as a PDF. (As an aside, the fact that I even need to use something other than VS Code to do this is crazy. However, even though VS Code has extensions that…

Dynamic img src with Hugo Shortcodes

Problems This site is hosted via GitHub Pages , which means it’s just a git repo with some fanciness added. Because of that, I knew from the start that I needed to find a way to host some static content (at least images) externally. It wasn’t that much of a hassle to get an S3 bucket setup to load the static content from. I got that working so long ago that I lost all the links I…

when alias isn't enough: $@

Intro I am a huge fan of bash aliases. I want to move as quickly as I think, and when my whole day is spent hammering on a keyboard I want to do it with as little input as possible. It’s pretty common practice to do stuff like this in your .bashrc (or .zshrc or whatever): alias d=docker alias g=git alias kc=kubectl While those aliases served me in good stead, my needs evolved.

 macOS Helper Apps

This page may be one of several, as these apps fall in and out of favor. All iterations are here . I have been using macOS for the better part of a decade, and over that time I’ve found several little helper apps that I don’t think I could function without. I also recommend them to people frequently, so I compiled a list for faster linking. Meetings Meeter Actionable alerts that open the meeting…

Hello World!

I’ve been thinking about creating a developer-focused blog for a while, and I’m finally pulling the trigger… This is the first post to be hosted via GitHub Pages. Anything that exists on this site prior to this post was migrated from other sources, and the dates were preserved.

šŸ” pgp

fingerprint F52F 5344 5882 E7E5 CB03 169E 8B6D C856 B38B 6A21 public key -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG/MacGPG2 v2.0.19 (Darwin) Comment: GPGTools - http://gpgtools.org mQINBE/RTM8BEACd66QPL8SKHJkI2emKzIBHrhYN+pazERT/5SXH0wCGOsvt/f7M giu2W/rPK3Z0OuXA8BqDnlkes2pZ5C1NDjTl8erwOluW2x9WwADIslsVNKvogXqA vAswsPcc3D+EFX5nemVNL7itwqgICafwEdtmO+VwRaZUEL5RAH1UmkB2oSB2A4kH…

I'm Charles Thomas

I’m currently a Platform Engineer at InfluxData but I’ve worn many hats in my career. 🤠 I currently maintain a bitwarden-cli image for use with external-secrets and a github action for running svu . I’m also running an open-source k3s homelab . I use templatron šŸ¤– to auto-update my homelab micro-services repos when the homelab repo template changes.

2014: Year of Code

I set a goal for myself at the beginning of 2014 to contribute to an open source project I didn’t start, and get my contribution accepted by the developers. As the year went on, I cataloged it in a special section of my blog. Now that the year is over, I’m moving it to a regular post. I’m pretty sure that this is not up to date, since I’ve barely touched my blog in about a year.

Shows What I Know – More Finishing Touches

I guess I wasn’t done with Postfix after all. After I wrapped up lasts night’s post, I got an email from someone, and tried to reply. Only to get a message that the email failed to send. It turns out that relayhost was the wrong setting for me. Since my ISP blocks outbound smtp traffic on port 25, I have to use my relay server as my outbound server. By setting the relayhost field, ALL traffic was…

Raspberry Pi Mail Server: Final Touches

Updates: It turns out the relayhost setting below didn’t work for me. Here’s what I did instead. If you’ve read any of my prvious posts about this (previous posts listed here ), you’ll know they pretty much all included a ā€œNext Stepsā€ section. I have finally finished everything on the lists, so unless I discover I’ve done something wrong, or I think of something else this needs, I should be done…

Some Problems with My Raspberry Pi Mail Server, and How I Fixed Them

Since I moved my mail to my own mail server running on a Raspberry Pi in my apartment, I’ve been seeing weird delays in getting email. Most notably from Gmail accounts. I finally got to the bottom of what was happening. …Sort of. To tell you the truth, I found a couple of problems, and fixed them both, and only then tested sending from gmail. I’m pretty sure the last thing I fixed isn’t relevant,…

More Raspberry Pi: Calendar Syncing, Spam & Filtering

Calendar Syncing: Radicale After I got a mail server running on my Raspberry Pi , I tried to find a way to sync my calendar and contacts to my phone, and computer. I was using Own Cloud, which handles contacts and calendar well. Unfortunately, Own Cloud was built for file syncing (like a self-hosted Dropbox), except it’s REALLY bad at it. It didn’t make sense to use it for the two add-on things I…

Building a Raspberry Pi Mail Server: How

Now that I’ve ranted about why I decided to build my own mail server , it’s time to explain how. In order to build my own mail server, I decided to use Postfix and Dovecot on a Raspberry Pi. I chose these three very specifically. Postfix and Dovecot are the go-to for building a mail server, and Raspberry Pis have been the home server of choice ever since they were announced.

Building a Raspberry Pi Mail Server: Why

Updates: @seanbonner has a great post on privacy vs security, which really gets at the heart of what I was trying to say at the end of this post, but in a much more easy to understand way. You should really check it out. I also blogged about the technical details of how I built the mail server. That post is here. For a long time, I’ve used Google for mail, calendar, and contact storing and…

IT: Good to Great with 3 Rules

There is what I consider to be a big problem in the IT field today. Most people think that anyone who is ā€˜good with computers’ can be plucked from their parent’s basement, and dropped into a corporate job, managing that company’s computers. That is just not true. Perhaps I am a snob, because I went to college to earn a degree in System Administration, or maybe because I worked at a place where the…

Batch script to open most recent file

I receive an issues list 2 to 5 times per week from one of my clients. For a while I was deleting the previous version, saving the new one, and renaming it. This way, the list was always up to date. That was a pain. Then I started dumping the files into one folder, and worrying about which was the correct one whenever I actually had to open it. That was better when saving the file, but worse when…