DALL·E 2022-11-28 12.51.35 - photograph of a happy couple watching a dumpster on fire on television

Trash TV: American as Apple Pie

Or how I learned to shut up and love the disaster. When I was growing up, my parents didn’t let me watch a lot of TV. We didn’t have a cable subscription and the only things that were reliably on the “boob tube” were Blazers games and Bill Nye the Science Guy. Even though I was coming of age at the same time as the modern reality TV industry, I missed out on the mainstream success of juggernauts like The Real World, Survivor, Big Brother, and Laguna Beach. As a younger adult who was “above the trash” (if only I’d had the courage to embrace my authentic self…) of this television, I missed out on the emergence of the Kardashian empire, the Real Housewives, and the wide variety of the “niche lifestyle” subgenre, e.g. My Strange Addiction, True Life. In college and as a young adult, I wasn’t watching too much TV besides Game of Thrones and other HBO-style “classics”. I was actively missing out on the prime of the MTV and Bravo trash behemoths like Are You the One?, The Challenge, and Bad Girls’ Club. Finally, as an adult with a Netflix and Hulu subscription as well as a work-from-home career, I was able to partake in the endless binging of this American dumpster fire and let me tell you: I missed out. ...

November 28, 2022 · 7 min · logan
lost_a_pet_hero-scaled

Cat of the Day Outage Report - 04/05/22

One of the services I run in my homelab is the Cat of the Day (CotD). Over the past few days I’ve noticed that it hasn’t been sending out the pictures and inspirational quotes that my loyal user base (~10 people 🙄 ) have come to rely upon for their morning boost of positivity in the drudgery of corporate America. This must be corrected! With almost 4 days of downtime, I am clearly in violation of my 99.99% uptime SLA* that I’ve promised to my users. I am never going to hear the end of this… ...

April 5, 2022 · 5 min · logan
Go, Postgres, Redis, Me

Uniting Go, Redis Cluster Mode, Postgres, and Docker into Something Meh

Recently I was tasked with implementing Redis with Cluster Mode enabled for my company’s production application. One of the nice things about working in the modern software age is that cloud providers abstract a lot of complexity away from you. In our case, we are implementing AWS’ ElastiCache, which supports Redis Cluster Mode natively. However, it’s not so easy to replicate locally. When I set about doing this, what I thought would be a fairly standard Google search. I figured there’d be an immediately available docker-compose file supporting both Postgres and Redis Cluster Mode, but I wasn’t able to find it. As a result, my goals with this post is to create a working proof of concept that utilizes the tools I work with daily and can hopefully be of use to other developers. ...

March 11, 2022 · 8 min · logan
golang gopher up long time

24 hours in Go

(Image credit to quasilyte on DeviantArt) Disclaimer: The code you are about to read is not safe for work. Because it is terrible. It is here if you dare. I've saved off the results in the 24_hours branch. To save some sort of professional dignity, I've made some touchups to the main branch. At my current job, I do a lot less programming that I’d like to. It is no fault of my employer. As an SRE, I am tasked with what is required to get the product moving. At the moment, that is less programming and more of infrastructural work. A lot of my job recently has been configuration, writing YAML, troubleshooting CI/CD pipelines, and interfacing with external teams. As a result, I can feel a few of my programming muscles atrophying. ...

September 7, 2021 · 9 min · logan
face_melt

How to Make your PRs Unreviewable

For software developers, a Pull Request (PR) is a foundational unit of work. Although there are quite a few software engineers that I’ve encountered that are more on the isolationist side, most are naturally collaborative. Asking for feedback is something that we do often. A PR is fundamentally a request for feedback upon a slice of code that the author would like to add to the shared code base. In order to enforce the quality of the project, other engineers will review the code that author wrote, provide suggestions for changes, and iteratively work to incorporate the code into the codebase. Once the code is of sufficient quality, the request is merged into the main codebase and the process begins anew. ...

August 6, 2021 · 9 min · logan
Monkey Data

Stocks vs Sports: Stock Data (1.a)

This post is a continuation of Stocks vs Sports. Please see the previous post, Inception, for more context. See all the code on Github. When trying to compare bets made on Wall Street against those made in Vegas, I’ll need data. Lots of data. Look at all of this data! Big data, much data. Very actionable. In order to do anything useful, I need to be able to obtain and store both stock and sports gambling data reliably. In the old days, this would be reading through the sports and finance section of the paper. Nowadays, I’m not even 100% sure that there is a “paper” to read through, so I’m going to be relying on different APIs that can feed data in real time. Recall from my previous post, Inception, that I’ll be using the Alpha Vantage API for stocks, and the Odds API for sports gambling. Testing these APIs is trivial as you can demo them directly on their website. Here’s an Alpha Vantage query with a demo API Key. Here’s the demo documentation for the Odds API. From an initial smoke check, it appears that they’ll fulfill all the needs that I have. In this post, I’ll outline the data generation component of the stocks vs sports system. To keep it simple, I’ll narrow the scope of the data generation to just the “stocks” side. I’ll create a follow-up post with the outline of how the sports gambling data is created. ...

June 21, 2021 · 12 min · logan
Gambling on Stocks

Stocks vs Sports: Inception (0)

I love gambling on sports. I never win money, but adding a bit of risk to an otherwise mundane matchup can make watching games more exciting. I don’t love gambling on the stock market. It just isn’t as much fun. In both cases, I take my money and use it to buy a chance at more money in the future. Where the outcome in sports is influenced by the competing teams ( and in some cases, the referees), the outcome for stocks is controlled by any number of “animal spirits”. The uncertainty of the stock market clearly has many influential factors, from normal market fluctuations to public manipulation. Yet gambling on sports is viewed as a riskier and less lucrative proposition. Does it have to be? A savvy investor will likely outperform a savvy gambler, but what about an idiot like me? Is there actual historical data that would support that if you bet with no strategy and invested with no strategy, Wall Street would win out over Vegas? Is there a way to beat the odds by using my rudimentary data analysis skills? Of course not! But I still want a way to answer these questions with a silly and over-engineered solution. ...

June 11, 2021 · 7 min · logan
Chain Fork by Katerina Kamprani

Thoughts on Usability for Internal Platforms

There are a lot of important books that are recommended for software developers. A data-driven answer about which programming books get recommended online revealed a lot of the usual suspects. The top five are commonplace books that every developer should have on their shelves: The Pragmatic Programmer by David Thomas and Andrew Hunt Clean Code by Robert C. Martin Code Complete by Steve McConnell Refactoring by Martin Fowler Head First Design Patterns by Eric Freeman, Bert Bates, Kathy Sierra, and Elisabeth Robson One of the books that didn’t make that list is The Design of Everyday Things by Don Norman. Although somewhat dated in publication (originally appearing in 1988, updated in 2002 and 2013), the design insights are not. It is a refreshingly simple and elegant look into the psychology behind why design principles are critical in creation of anything that will be used by humans. After reading it recently, it got me thinking about where usability fits into the work that SREs, Platform Engineers, and other “internal tooling” type jobs are tasked with. ...

June 10, 2021 · 17 min · logan
Creation of the cluster

Setting up a Kubernetes Cluster on Raspberry Pis

In a previous post, I outlined the end result of a few months of tinkering with some low-grade hardware to create a Kubernetes (K8s) cluster. This is a follow-up post for the dorks that actually want to know how it was accomplished. Preamble This is not going to be a very unique post. There are numerous, numerous, numerous, numerous guides for how to build a cluster with Raspberry Pis. Searching for " Raspberry Pi Kubernetes" returns about 1.6m results ...

June 2, 2021 · 15 min · logan
raspik8s

My Experience Operating Kubernetes on Raspberry Pis

I’ve spent the past few months assembling and creating a Kubernetes (K8s) cluster running on several Raspberry Pi 4 s. It is backed by a Synology NAS for networked storage. Along the way, I’ve learned a bunch of stuff about managing infrastructure. Most importantly, I’ve learned the value of a managed K8s instance from a cloud provider, as there is a bunch of operational overhead to installing all this stuff that automation helps with, but doesn’t ultimately resolve. ...

May 27, 2021 · 6 min · logan