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:
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ā¦
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ā¦
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.
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.
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ā¦
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ā¦
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.
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:
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ā¦
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ā¦
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.
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ā¦
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ā¦
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ā¦
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ā¦
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.
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ā¦
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.
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.
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.
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ā¦
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ā¦
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,ā¦
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ā¦
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.
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ā¦
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ā¦
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ā¦